从库:
先停止当前从服务器(slave)上的复制线程(I/O 线程和 SQL 线程)。
目的:在执行后续的复制配置更改前,确保从服务器不再接收或应用中继日志,避免状态混乱。
MySQL命令:
-- 1. 停止当前正在运行的复制进程
STOP SLAVE;
-- 2. 完全清除当前从库的所有复制信息,
-- 这会让从库忘掉它和任何主库的连接关系。
RESET SLAVE ALL;
-- 3. 彻底重置从库的二进制日志(binlog)和
-- GTID信息,为接收新的数据流做好准备。
RESET MASTER;
主库
新主库新建MySQL主从新任务,状况获取到从库的一些信息,主要获取到账号MASTER_USER 比如192.168.1.100_slave
从库:
MySQL命令:
RESET SLAVE; CHANGE MASTER TO MASTER_HOST = '192.168.1.1', #主库ip MASTER_USER = '192.168.1.100_slave', #该从库的账号 MASTER_PASSWORD = 'hu', #密码 MASTER_AUTO_POSITION = 1; START SLAVE;
主库:
主库检测用户:
MySQL命令:
SELECT user, host FROM mysql.user WHERE user = '192.168.1.100_slave'; #从库的账号
获取到的格式大概如下1:
+----------------------+----------------+
| user | host |
+----------------------+----------------+
| 192.168.1.100_slave | 192.168.1.100 |
+----------------------+----------------+
如下2:
+----------------------+----------------+
| user | host |
+----------------------+----------------+
| 192.168.1.100_slave | %
+----------------------+----------------+
| 192.168.1.100_slave | 192.168.1.100 |
+----------------------+----------------+
用户已存在但密码不对或 host 不对:
MySQL命令:
ALTER USER '192.168.1.100_slave'@'%' IDENTIFIED BY '密码'; #如下2
ALTER USER '192.168.1.100_slave'@'从库ip' IDENTIFIED BY '密码'; #如下1 如下2
FLUSH PRIVILEGES;
如果要删除旧用户(非必须):
MySQL命令:
DROP USER '192.168.1.100_slave'@'192.168.1.100';
用户不存在,直接创建:
MySQL命令:
CREATE USER '192.168.1.100_slave'@'192.168.1.100' IDENTIFIED BY '密码'; GRANT REPLICATION SLAVE ON *.* TO '192.168.1.100_slave'@'192.168.1.100'; FLUSH PRIVILEGES;
从库:
看能不能登录:
mysql -h 主库ip -u 从库账号 -p #从库账号:192.168.1.100_slave
输入主库设置的密码,完成登录
查看状况
MySQL命令:
SHOW SLAVE STATUS\G
错误跳过该 GTID:
STOP SLAVE; SET GTID_NEXT = '19bec187-3fc7-11f1-b9f5-e0db55fe519c:4118'; BEGIN; COMMIT; SET GTID_NEXT = 'AUTOMATIC'; START SLAVE; SHOW SLAVE STATUS\G