docker pull mysql:5.7
目录层级遵循
${prefix}/cluster/host/xx
如:
启动
docker run -d -p 13306:3306 \
-v /docker/mysql/cluster_01/master_01/log:/var/log/mysql \
-v /docker/mysql/cluster_01/master_01/data:/var/lib/mysql \
-v /docker/mysql/cluster_01/master_01/conf:/etc/mysql/conf.d \
--name=m1 \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
添加 root 外部访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
增加主从复制用户 slave 并授权
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;
连接验证

启动
docker run -d -p 13307:3306 \
-v /docker/mysql/cluster_01/slave_01/log:/var/log/mysql \
-v /docker/mysql/cluster_01/slave_01/data:/var/lib/mysql \
-v /docker/mysql/cluster_01/slave_01/conf:/etc/mysql/conf.d \
--name=s1 \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
添加 root 外部访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
连接验证

主节点查看主从同步状态
SHOW MASTER STATUS;

关联 主节点
CHANGE MASTER TO master_host = '192.168.3.11',
master_user = 'slave',
master_password = '123456',
master_port = 13306,
master_log_file = 'mall-mysql-bin.000003',
master_log_pos = 1182,
master_connect_retry = 30
参数说明
从节点下开启主从复制
start slave;
从节点查看主从同步状态
命令行下可以添加 \G 以垂直显示
SHOW SLAVE STATUS \G
若未开启从节点的主从复制,红框处为 No

主从复制验证
在主库创建一个数据库验证效果


主从复制失效
主从复制失效时可以查看下图红框处,可能为 No
此时查看 Last_Errno,可以看到最后错误的编号,Last_Error 会有最后错误的描述

方式1:
停止主从同步
stop slave;
忽略为执行的同步
set global sql_slave_skip_counter=1;
重启同步
start slave;
方式2:
示意图如下,每个红框为一组主从,每一组主从不一定只有一个从
mysql 的主从复制是从 从节点 开启的,因此,可以搭建多个主从结构,然后主节点之间互为主从即可
