参考https://blog.csdn.net/qq_35771266/article/details/128101019
部署主库:
1.docker run -d -p 3306:3306 -v E:/mysql/3306/conf:/etc/mysql/conf.d -v E:/mysql/3306/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master mysql:8.0.29
2. 编辑conf/my.cnf
[mysqld]
server-id=1
#binlog_format=STATEMENT
binlog_format=row
3.重启
4.登录主库
登录后报:Warning: World-writable config file ‘/etc/my.cnf’ is ignored
解决办法:chmod 644 /etc/mysql/conf.d/my.cnf
5.创建slave用户
CREATE USER 'mysql_slave'@'%';
ALTER USER 'mysql_slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'mysql_slave'@'%';
FLUSH PRIVILEGES;
6.获取master状态
SHOW MASTER STATUS;
File=binlog.000005
Position=157
部署从库
1.docker run -d -p 3307:3306 -v E:/mysql/3307/conf:/etc/mysql/conf.d -v E:/mysql/3307/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave1 mysql:8.0.29
2.编辑conf/my.cnf
[mysqld]
server-id=2
3.重启
4.登录从库
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
CHANGE MASTER TO MASTER_HOST='192.168.2.84',
MASTER_USER='mysql_slave',MASTER_PASSWORD='123456', MASTER_PORT=3306,
MASTER_LOG_FILE='binlog.000005',MASTER_LOG_POS=157;
以上192.168.2.84为主库ip,可登录验证
5.启动同步并查看状态
START SLAVE;
SHOW SLAVE STATUS;
slave_io_running:No
slave_sql_running:Yes
slave_io_running:No 问题排查
1.SHOW GLOBAL VARIABLES LIKE 'server_uuid';发现uuid一致
解决办法:修改/var/lib/mysql/auto.cnf
只修改最后一位,否则报The server_uuid stored in auto.cnf file is not a valid UUID.
2.控制台报Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;
show variables like 'server_id';发现server_id=1,server-id=2配置未生效
set global server_id=2;重启后变回1
发现/etc/my.cnf配置,添加server-id=2后生效
slave_io_running变为Yes,可以正常同步
6常用指令
-- 在从机上执行。功能说明:停止I/O 线程和SQL线程的操作。
stop slave;
-- 在从机上执行。功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件。
reset slave;
-- 在主机上执行。功能说明:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。
-- 用于第一次进行搭建主从库时,进行主库binlog初始化工作;
reset master;
