參考https://blog.csdn.net/qq_35771266/article/details/128101019
部署主庫(kù):
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.登錄主庫(kù)
登錄后報(bào):Warning: World-writable config file ‘/etc/my.cnf’ is ignored
解決辦法:chmod 644 /etc/mysql/conf.d/my.cnf
5.創(chuàng)建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狀態(tài)
SHOW MASTER STATUS;
File=binlog.000005
Position=157
部署從庫(kù)
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.登錄從庫(kù)
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為主庫(kù)ip,可登錄驗(yàn)證
5.啟動(dòng)同步并查看狀態(tài)
START SLAVE;
SHOW SLAVE STATUS;
slave_io_running:No
slave_sql_running:Yes
slave_io_running:No 問(wèn)題排查
1.SHOW GLOBAL VARIABLES LIKE 'server_uuid';發(fā)現(xiàn)uuid一致
解決辦法:修改/var/lib/mysql/auto.cnf?
?只修改最后一位,否則報(bào)The server_uuid stored in auto.cnf file is not a valid UUID.
2.控制臺(tái)報(bào)Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;
show variables like 'server_id';發(fā)現(xiàn)server_id=1,server-id=2配置未生效
set global server_id=2;重啟后變回1
發(fā)現(xiàn)/etc/my.cnf配置,添加server-id=2后生效
slave_io_running變?yōu)閅es,可以正常同步
6常用指令
-- 在從機(jī)上執(zhí)行。功能說(shuō)明:停止I/O 線程和SQL線程的操作。
stop slave;
-- 在從機(jī)上執(zhí)行。功能說(shuō)明:用于刪除SLAVE數(shù)據(jù)庫(kù)的relaylog日志文件,并重新啟用新的relaylog文件。
reset slave;
-- 在主機(jī)上執(zhí)行。功能說(shuō)明:刪除所有的binglog日志文件,并將日志索引文件清空,重新開(kāi)始所有新的日志文件。
-- 用于第一次進(jìn)行搭建主從庫(kù)時(shí),進(jìn)行主庫(kù)binlog初始化工作;
reset master;