主从复制原理:
主机所进行的写操作将其写入binary log的日志里面,从机不能直接读取主机上的信息而是直接读取binarylog日志里面的内容,但不是直接执行该日志里面的内容,而是将其写入relaylog日志里面,最后从机从relaylog日志里面读取进行同步。主从具有延时性。,
主从复制配置
在schema.xml文件中进行配置(主要进行的配置)
schema标签为虚拟的数据库
而在下面的dataNode标签为实际的数据库,
配置server.xml
这里主要是配置mycat账户的登录
配置好之后启动mycat
主从机连接配置
配置主机的cnf文件
#mycat相关配置
#主服务器唯一id
server-id=1
#启用二进制日志
log-bin=mysql-bin
#设置不要复制的数据库
binlog-ignore-db=mysql
binlog-ignore-db=myblog
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#设置需复制的数据库
binlog-do-db=testdb
#设置logbin格式
binlog_format=STATEMENT
配置从机的cnf文件
关闭主从机防火墙
配置完成之后分别重启主机和从机
之后登录主机的mysql进行从机读取日志的授权操作
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '';
最后那部分是主机的数据库密码
然后查看主机的状态
再配置从机
CHANGE MASTER TO MASTER_HOST='',
MASTER_USER='slave',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=430;
第一个为主机所在服务器ip地址
第二个为授权时给出的主机名称
第三个为主机状态的fileset
最后一个为主机状态的位点pos
最后开启从机服务
再查看连接状态
如果都为yes则说明配置成功。
若为其他状态边看该状态下的错误日志
停止从服务复制功能
stop slave;
重新配置主从
reset master;
配置主从的读写分离
在schema.xml中配置dataHost标签中的balance属性,通过此属性配置读写分离的类型。
balance=“0”,不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
balance=“1”,全部的readhost与stand by writehost参与查询语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2>S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与查询语句的负载均衡。
balance=“2”,所有读操作都随机的在writeHost,readHost上分发
balance=“3”,所有读请求随机分发到readHost执行,writerHost不负担读压力
双主双从配置
Mycat常见错误
1、 问题:
schema TESTDB didn’t config tables,so you must set dataNode property!
解决:在schema.xml少加了一个参数
在schema标签的最后添加dataNode = “dn1”即可