大家好,我是anyux。本文介绍MySQL使用Mycat完成高可用和读写分离
Mycat高可用和读写分离
节点关系说明
读写主机参数server_id备注writeHosturl="192.168.255.117:3307"7写操作(主写节点)readHosturl="192.168.255.117:3309"9读操作writeHosturl="192.168.255.118:3307"1187默认读操作(stand by writeHost)readHosturl="192.168.255.118:3309"1189读操作
当主写节点宕机后,stand by writeHost节点随机准备替换为主写节点
<?xml version="1.0"?> select user()
重启mycat
mycat restart
检查mycat
mysql -uroot -p123456 -h 127.0.0.1 -P8066 -e "select @@server_idGselect @@server_idGselect @@server_idG;begin;select @@server_idG;commit;begin;select @@server_idG;commit;"
关闭主写节点
systemctl stop mysqld3307
检查数据库状态
mysql -uroot -p123456 -h 127.0.0.1 -P8066 -e "select @@server_idGselect @@server_idGselect @@server_idG;begin;select @@server_idG;commit;begin;select @@server_idG;commit;"
可以看到,写操作切换到server_id:1187,读操作只有server_id:1189。说明旧主写节点宕机后,其对应的主从复制关系已停止,切换到另一个主从复制关系
启动旧写数据库节点,会自动加入到Mycat集群中
systemctl start mysqld3307
检查数据库状态
mysql -uroot -p123456 -h 127.0.0.1 -P8066 -e "select @@server_idGselect @@server_idGselect @@server_idG;begin;select @@server_idG;commit;begin;select @@server_idG;commit;"
恢复后,旧的写节点变成stand by writeHost