我使用复制将所有数据迁移到新服务器,然后我在 my.cnf 中注释掉 master_host、master_port 等(基本上所有与 master 相关的行),我发出了 stop slave 命令。
但是我重新启动 mysqld 后,复制过程又开始运行了!如何彻底停止它。
答案1
正确的做法是stop slave; reset slave;
“重置从属”是将擦除配置并阻止其重新连接的部分。
答案2
根据 MySQL 服务器版本的不同,该过程也不同。
- 对于版本5.0和5.1,运行
STOP SLAVE
,CHANGE MASTER TO MASTER_HOST=''
然后RESET SLAVE
。
在这些版本中,该RESET SLAVE
命令将删除文件 master.info 和 Relay-log.info 以及大多数设置,但某些设置将重置为默认值,这很危险。如果再次启动复制,它将在不知道主服务器位置的情况下启动,因此将重新应用主服务器上仍然可用的所有日志。要正确删除有关主服务器的所有信息,您还需要运行该CHANGE MASTER
命令。
- 对于版本5.5,5.6和5.7这更简单,只需运行
STOP SLAVE
然后RESET SLAVE ALL
。
此处RESET SLAVE
(不带ALL
关键字)的行为方式相同 - 不删除所有信息。但是,CHANGE MASTER
对于 5.5+ 版本也没有帮助,因此您必须小心并了解您当前正在使用的 MySQL 版本。
答案3
为了完全停止复制,你有两种方法
- 发出带有虚假信息的“CHANGE MASTER”命令,这将彻底破坏复制
master.info
删除mysql 根目录中的文件,这将删除复制信息
在任何一种情况下,您都需要稍后重新进行复制,记下所有复制数据,如最后位置和最后的源 bin 文件,以防您想要再次开始复制。
答案4
我通常会STOP SLAVE; CHANGE MASTER TO MASTER_HOST='';
杀死一名奴隶。