MySQL主从切换
主从切换就是MySQL写节点出现宕机后,会自动切到备用节点。Mycat使用show slave status命令,检查主库和备库之前的心跳,Mycat心跳机制通过检测show slave status中的“Seconds_Behind_Master”、“Slave_IO_Running”、“Slave_SQL_Running”三个字段来确定当前主从同步的状态及Seconds_Behind_Master主从复制时延,当Seconds_Behind_Master>slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久以前的旧数据,当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主仅同步,可安全切换,否则不会切换。
- 配置Mycat schema.xml文件。
- 打开文件。
1
vim /usr/local/mycat/conf/schema.xml
- 按“i”进入编辑模式,添加如下内容。
1
<writeHost host="hosts" url="localhost:3313" user="root" password="123456" />
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 启动Mycat并查询状态。
1 2 3
mycat stop mycat start mycat status
Mycat主从切换通过switchType进行配置,本文采用默认值。
- -1表示不自动切换。
- 1表示默认值,自动切换。
- 2基于MySQL主从同步的状态决定是否切换。
- 打开文件。
- 执行连接测试。
- 打开文件。
1
vim /home/write.sh
- 按“i”进入编辑模式,替换为如下内容。
1 2 3 4 5
#!/bin/bash for i in {20001..22000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into test1(id,report_hostname) values($i,@@report_host)" done
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行脚本。
1
sh /home/write.sh
- 打开文件。
- 确认测试数据。
1
/usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "select * from test1"
- 连接MySQL数据库并关闭主库。
1 2
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysqlm.sock shutdown;
- 执行连接测试。
- 打开文件。
1
vim /home/write.sh
- 按“i”进入编辑模式,修改插入的记录数从22001到24000。
1 2 3 4 5
#!/bin/bash for i in {22001..24000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into test1(id,report_hostname) values($i,@@report_host)" done
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行脚本。
1
sh /home/write.sh
- 打开文件。
- 再次确认数据。
1
/usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "select * from test1"
原来的备库切换为主库,所有写操作都路由到新的主库上执行。
父主题: Mycat方案部署