centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

my.cnf  路径在  /etc/my.cnf

--主机  my.cnf  设置
server_id=128  ###服务器id
log-bin=mysql-bin   ###日志文件

 

--创建用户 
create user '用户'@'%' identified  by  '密码' 

--修改密码的加密方式
alter user '用户'@'%' identified with mysql_native_password by '密码';

--赋权
GRANT REPLICATION SLAVE ON *.* to '用户'@'%' with grant option;

--查看主机ID, 与状态
show variables like 'server_id'
show master status;

 

--备机设置 my.cnf  设置
server_id=129 ###服务器id
log-bin=mysql-bin  ###日志文件
binlog_do_db=test #同步哪些数据库

 

--备机sql执行
stop slave  --停止同步
--设置
change master to master_host='主机IP',

                          master_user='用户',

                          master_password='密码',
         master_log_file='主机日志版本',master_log_pos=position;  //这里的日志, position 是show master status;显示的参数
--启动同步
start slave

 

--查看是否成功
SHOW SLAVE STATUS

 

-slave_IO_state    Waiting for master to send event
--slave_io_running   yes     必须为yes
--slave_sql_running  yes     必须为yes

 

centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

 

测试主从复制:

在主库建立test数据库, 如果从库同步了就代表成功了。 

 

mycat官网地址: https://github.com/MyCATApache/Mycat-Server/wiki/2.0-Mycat%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8

mycat官网地址配置说明: https://github.com/MyCATApache/Mycat-Server

mycat  下载地址: http://dl.mycat.io/1.6.6.1/   建议下载1.6及以上的版本, 下载后上传至  liunx, tar -zvxf xxx解压

 

第一步: server.xml  添加读写用户, 将系统默认的修改后增加 或者直接修改都可以。

centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

<!-- 添加 主 user -->
    <user name="mycat_master">
       <property name="password">mycat_master</property>
       <property name="schemas">mycat</property>
    </user>
    
    <!-- 添加 读 user -->
    <user name="mycat_read">
       <property name="password">mycat_read</property>
       <property name="schemas">mycat</property>
       <property name="readOnly">true</property>
    </user> 

 

第二步: schame.xml  添加 逻辑库配置,  分片定义配置

centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

<!-- 与server.xml中user的schemas名一致 -->
<schema name="mycat" checkSQLschema="true" sqlMaxLimit="100">   name 逻辑库名称
    <table name="user" primaryKey="id" dataNode="dn1" rule="rule1"/>  表名,  rule  分片规则
</schema>
<dataNode name="dn1" dataHost="jdbchost" database="test" />  // database 物理库名称

<dataHost name="jdbchost" maxCon="1000" minCon="10" balance="1"
            writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
     <heartbeat>select user()</heartbeat>  
    <writeHost host="hostMaster" url="172.27.185.1:3306" user="root" password="root">  //主库地址
    </writeHost>
    <writeHost host="hostSlave" url="172.27.185.2:3306" user="root" password="root"/>  //读库地址
</dataHost>

 

第三步:  mysql 是5.8 的话, 需要将 mycat/lib下  的  mysql 连接数据库包 改为8.0的, 这个jar包的问题困扰了我两天才想起来, 不然死活会连不上。

centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

配置完毕:

cd  /mycat/bin   startup_nowrap.sh  启动 

cd /mycat/logs/   console.log   出现下图, 则启动成功。centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

 

mycat/logs   mycat.log 出现下图 则 连接成功。

centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

 

配置完毕: 测试一下

navicat 连接:   mycat默认端口8066, 防火墙需要关闭或者放开端口。

ip:8066 mycat_master/mycat_master  插入数据, 看看主库和从库是否数据同步了。

ip:8066 mycat_read/mycat_read插入数据, 会报  readonly, 至此配置完成。

centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

 当  schema.xml 中有多个 schema 逻辑数据库时,  server.xml 用户配置的逻辑数据库也要加上。

centos7 mysql5.8主从复制与 使用 mycat 进行读写分离

 centos7 mysql5.8主从复制与 使用 mycat 进行读写分离