美文网首页
搭建mysql高可用集群之Galera mycat进行读写

搭建mysql高可用集群之Galera mycat进行读写

作者: 沙砾丶ye | 来源:发表于2020-03-12 23:13 被阅读0次

    环境
    centos7 5台
    四台 mysql 5.7
    一台 jdk mycat

    一、首先先搭建galera集群

    准备环境
    五台主机都做解析

    [root@admin ~]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.245.133 galera1
    192.168.245.134 galera2
    192.168.245.135 galera3
    192.168.245.136 galera4
    

    关闭防火墙和selinux
    时间同步:
    修改时区:

    #  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    #  timedatectl set-timezone Asia/Shanghai
    

    下载和安装Galera(每台mysql都需要安装)

    [root@wing yum.repos.d]# cat galera.repo
    [galera]
    name=galera
    baseurl=http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
    enabled=1
    gpgcheck=0
    
    yum install mysql-wsrep-5.7.x86_64 galera rsync -y
    

    修改配置文件 /etc/my.cnf

    server-id=1
    binlog_format=row
    innodb_file_per_table=1
    innodb_autoinc_lock_mode=2
    
    wsrep_on=ON
    wsrep_provider=/usr/lib64/galera/libgalera_smm.so
    wsrep_cluster_name='galera'
    wsrep_cluster_address='gcomm://'
    wsrep_node_name='galera1'
    wsrep_node_address='192.168.245.133'
    wsrep_sst_auth=syncuser:'Tianxia@123'
    wsrep_sst_method=rsync
    

    重启mysqld

    systemctl restart mysqld
    

    测试

    mysql> show status like 'wsrep%';
    

    创建一个数据库

    mysql > create database wudi;
    mysql > create database jimo;
    

    创建mycat的授权用户

    mysql > grant all on wudi.* to 'mycat'@'%' identified by 'Tianxia@123'
    mysql > grant all on jiwo.* to 'mycat'@'%'
    

    二、配置mycat

    部署环境:需要java,所以需要下载jdk(这里就不部署java了,直接跳过)

    从官网下载mycat

    tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
    

    认识配置文件
    MyCAT 目前主要通过配置文件的方式来定义逻辑库和相关配置:
    /usr/local/mycat/conf/server.xml #定义用户以及系统相关变量,如端口等。其中用户信息是前端应用程序连接 mycat 的用户信息。
    /usr/local/mycat/conf/schema.xml #定义逻辑库,表、分片节点等内容。

    修改server.xml文件

    [root@mycat ~]# cd /usr/local/mycat/conf/
    [root@mycat conf]# vim server.xml
    上面的内容省略
    <user name="wudi" defaultAccount="true">
                    <property name="password">123456</property>
                    <property name="schemas">wudi</property>
    </user>
    <user name="jimo" defaultAccount="true">
                    <property name="password">123456</property>
                    <property name="schemas">jimo</property>
    </user>
     如果你想指定多个文件 可以多写。
    </mycat:server>
    

    修改schema.xml文件

    [root@mycat conf]# vim schema.xml     
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
        <schema name="wudi" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
        <schema name="jimo" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2"></schema>
        <dataNode name="dn1" dataHost="localhost1" database="wudi" />
        <dataNode name="dn2" dataHost="localhost2" database="jimo" />
    
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
         writeType="0" dbType="mysql" dbDriver="native" switchType="3"  
         slaveThreshold="100">
               <heartbeat>show status like 'wsrep%'</heartbeat>
                   <writeHost host="galera1" url="galera1:3306" user="mycat" password="Tianxia@123"></writeHost>
                   <writeHost host="galera2" url="galera2:3306" user="mycat" password="Tianxia@123"></writeHost>
                   <writeHost host="galera3" url="galera3:3306" user="mycat" password="Tianxia@123"></writeHost>
                   <writeHost host="galera4" url="galera4:3306" user="mycat" password="Tianxia@123"></writeHost>
            </dataHost>
        <dataHost name="localhost2" maxCon="1000" minCon="10" balance="1"
         writeType="0" dbType="mysql" dbDriver="native" switchType="3"  
         slaveThreshold="100">
               <heartbeat>show status like 'wsrep%'</heartbeat>
                   <writeHost host="galera1" url="galera1:3306" user="mycat" password="Tianxia@123"></writeHost>
                   <writeHost host="galera2" url="galera2:3306" user="mycat" password="Tianxia@123"></writeHost>
                   <writeHost host="galera3" url="galera3:3306" user="mycat" password="Tianxia@123"></writeHost>
                   <writeHost host="galera4" url="galera4:3306" user="mycat" password="Tianxia@123"></writeHost>
            </dataHost>
    </mycat:schema>
    

    balance=1 开启读写分离机制。所有的读操作都发送到当前可用的wireHost上
    wirtchTyoe=0 所有的写操作发送到第一个wirtHost,第一个挂了,才切换到第二个上面
    swirtchType=3 基于mysql galera的切换机制, 心跳语句show status like 'wsrep%'

    结论

    1.所有的节点都正常,writeHost负责写操作(随机的一台机器写),备writHost负责读操作。
    2.当第一个writeHost失效后,其中一个备writeHost负责写操作,其他的备继续负责读操作
    3.当只有一个writehost时,同时负责读写。

    4.可以很好的防止多机同写

    相关文章

      网友评论

          本文标题:搭建mysql高可用集群之Galera mycat进行读写

          本文链接:https://www.haomeiwen.com/subject/aibgjhtx.html