主从复制集群搭建
节点 | 角色 | IP |
master | 主节点 | 192.16.172.100 |
slave1 | 从节点 | 192.16.172.101 |
slave2 | 从节点 | 192.16.172.102 |
1.Master节点配置
# 节点ID,集群内唯一
server-id=100
# binglog
log-bin=mysql-bin
# gtid支持
gtid_mode=ON
enforce-gtid-consistency=ON
# semi半同步支持
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 # 1 second
2.Slave节点配置
# 节点ID,集群内唯一
server-id=101
# gtid开启
gtid_mode=ON
enforce-gtid-consistency=ON
# semi半同步模式
rpl_semi_sync_slave_enabled=1
3.Slave异步复制
3.1 非Gtid模式
CHANGE MASTER TO
MASTER_HOST='172.16.182.100',
MASTER_USER='repl',
MASTER_PASSWORD='GhB/6Qz7gga8',
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=154;
3.2 Gtid模式
CHANGE MASTER TO
MASTER_HOST = '172.16.182.100',
MASTER_PORT = 3306,
MASTER_USER = 'repl',
MASTER_PASSWORD = 'GhB/6Qz7gga8',
MASTER_AUTO_POSITION = 1;
3.3 启动复制
START SLAVE;
4. Slave Semi半同步复制
Mysql半同步复制以插件形式提供,主从节点需要安装相应插件
4.1 Master插件安装
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
4.2 Slave插件安装
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
4.3 重启Slave复制线程
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
5. 常用命令
SHOW MASTER STATUS;
show processlist\G
SHOW SLAVE HOSTS;
SHOW SLAVE STATUS\G
show variables like 'server_id';
STOP SLAVE;
STOP SLAVE IO_THREAD;
STOP SLAVE SQL_THREAD;
START SLAVE;
6. 主从复制效果图
Master节点:
从图中可以看出,Master节点会为每个Slave分别创建一个Dump线程,用于发送Binlog日志给Slave节点。
Slave节点:
从图中可以看出,Slave节点会创建两个线程:
IO线程:用于向Master请求和接收Master的Binlog日志,并将其写入自己RelayLog文件。
SQL线程:复制从RelayLog读取日志并应用到Slave库,完成复制。