1.当前有三台节点
1 2 3 4 5 |
192.168.6.121 192.168.6.122 192.168.6.123 三台分别按照 keepalived + HAproxy + mycat + mysql(MGR) 且都已正常启动 |
mycat主配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 数据库配置,与server.xml中的数据库对应 --> <schema name="wechat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" /> <!-- 分片配置 --> <dataNode name="dn1" dataHost="test1" database="wechat" /> <!-- 物理数据库配置 --> <dataHost name="test1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user();</heartbeat> <writeHost host="hostM1" url="192.168.6.121:3306" user="shooter" password="123456"> <readHost host="hostS1" url="192.168.6.122:3306" user="sread" password="123456" /> <readHost host="hostN1" url="192.168.6.123:3306" user="sread" password="123456" /> </writeHost> <writeHost host="hostM1" url="192.168.6.122:3306" user="shooter" password="123456"> <readHost host="hostS1" url="192.168.6.121:3306" user="sread" password="123456" /> <readHost host="hostN1" url="192.168.6.123:3306" user="sread" password="123456" /> </writeHost> <writeHost host="hostM1" url="192.168.6.123:3306" user="shooter" password="123456"> <readHost host="hostS1" url="192.168.6.121:3306" user="sread" password="123456" /> <readHost host="hostN1" url="192.168.6.122:3306" user="sread" password="123456" /> </writeHost> </dataHost> </mycat:schema> |
测试内容如下
1.如果第一台121 mysql宕机,是否会自动切换到第二台122
2.如果第一台恢复起来,是否还会继续保持第二台为主master节点
验证1
查看当前MGR主节点为121
对应mycat配置文件第一个配置
kill掉121 的mysql服务
1 2 |
pkill mysql ps -ef| grep mysql |
在日志里可以看到 mycat连接的121这个机器的用户已经停止
现在看看哪台机器是主节点
122现在是主节点了。
继续向下
看看mycat节点当前状态
1 |
show @@heartbeat; |
查看mycat当前谁是主(这个目前不好查,可以通过conf下的) 切换记录在配置文件中:dnindex.properties
查看这个文件,这个文件默认是0 就是第一个writeHost, 如果自动切换了 他就是到了第二台机器122 那就是1
准备测试数据写入去向
开启mycat配置文件日志 debug 监控日志 info 改为 debug
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#把原有注释去掉,修改info为debug <Loggers> <AsyncLogger name="io.mycat" level="debug" includeLocation="true" additivity="false"> <!--<AppenderRef ref="Console"/>--> <AppenderRef ref="RollingFile"/> </AsyncLogger> <asyncRoot level="info" includeLocation="true"> <AppenderRef ref="Console" /> <AppenderRef ref="RollingFile"/> </asyncRoot> </Loggers> |
然后登陆mycat管理平台,reload重新加载下配置文件
1 2 3 4 |
#因为要重新加载下122的配置文件所以你得用 122ip登陆9066管理平台 mysql -h 192.168.6.122 -P 9066 -ushooter -p123456 reload @@config; #这样不用重启 |
然后监控mycat日志
1 |
tail -f /opt/mycat/logs/wrapper.log |
当前的日志错误是 因为连接不上啊121 就是宕掉那台机器 这个不用管
插入数据
1 2 3 4 5 6 7 |
#连接mycat 124是我的keepalived vvip mysql -h 192.168.6.124 -P 8066 -u root -p123456 CREATE DATABASE shooter; USE shooter; CREATE TABLE book (c1 INT PRIMARY KEY, c2 TEXT NOT NULL); INSERT INTO book VALUES (5, 'Luis5'); |
查看日志
说明上面插入的那条语句 去了 122机器,说明没问题,主节点明显已经切换为122
验证第二项问题: 如果第一台恢复起来,是否还会继续保持第二台为主master节点
启动121宕机节点的mysql,因为他现在已经不是主primary了所以他现在是从机器
1 2 3 4 |
#启动登入mysql后执行如下启动 SET SESSION binlog_format = 'ROW'; SET GLOBAL binlog_format = 'ROW'; START GROUP_REPLICATION; |
查看MGR节点
可以看到已经成功启动
再次插入数据验证mycat当前主节点用的哪台机器,会不会121启动后就回归了原主机器
插入数据
1 2 3 4 |
#使用VVIP连接mycat 插入语句 mysql -h 192.168.6.124 -P 8066 -u shooter -p123456 use wechat; insert into book (c1,c2) value (1,'nihaonihao'); |
日志监测
继续向下
kill掉现在的主机器122 看看 mycat会不会切回121,还是继续按顺序writeHost向下到123机器
kill掉121的mysql
查看mycat日志
他貌似继续向下切换到了2这个writeHost配置
我们再回头看看他的 切换记录文件
可以确定,他继续向下了。(如果他只有2个配置,那么这时候会从1切换到第0个writeHost)
- 本文固定链接: https://www.yoyoask.com/?p=1343
- 转载请注明: shooter 于 SHOOTER 发表