# 创建网桥
docker network create mysql-bridge
# 创建master
docker run -p 13306:3306 -p 13307:33060 \
-e MYSQL_ROOT_PASSWORD=123456 --name mysql-master \
-v /root/docker/mysql-master/conf:/etc/mysql \
-v /root/docker/mysql-master/logs:/var/log/mysql \
-v /root/docker/mysql-master/data:/var/lib/mysql \
-d mysql:5.7
# 创建slave
docker run -p 23306:3306 -p 23307:33060 \
-e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave1 \
-v /root/docker/mysql-slave1/conf:/etc/mysql \
-v /root/docker/mysql-slave1/logs:/var/log/mysql \
-v /root/docker/mysql-slave1/data:/var/lib/mysql \
-d mysql:5.7
在master主机和slave主机中分别创建备份用户
CREATE USER 'repl'@'172.17.0.*';
ALTER USER 'repl'@'172.17.0.*'
GRANT Replication client,Replication slave ON *.* TO 'repl'@'172.17.0.*' IDENTIFIED BY 'password';
主机添加my.cnf配置
#master my.cnf配置
[mysqld]
log_bin = mysql-bin
server_id = 10
#查看 主节点状态
SHOW MASTER STATUS;
#slave my.cnf配置
[mysqld]
log_bin = mysql-bin
server_id = 2
relay_log = /var/lib/mysql/mysql-relay-bin
log_slave_updates = 1
read_only = 1
#配置复制的级别命令
CHANGE MASTER TO MASTER_HOST='172.17.0.3',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;
#查看备机状态
SHOW SLAVE STATUS;
START SLAVE;
STOP SLAVE;
校验主备库表的数据是否一致
CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]
CHECKSUM TABLE报告 表内容的校验和。您可以使用此语句来验证备份,回滚或旨在将数据恢复到已知状态的其他操作前后的内容是否相同。
该语句需要SELECT该表的 特权。
视图不支持该语句。如果CHECKSUM TABLE针对视图运行 ,则该Checksum值始终为 NULL,并返回警告。
对于不存在的表,CHECKSUM TABLE返回NULL并生成警告。
在校验和运算表被锁定了读锁InnoDB和 MyISAM。