如何将MySQL先前的从属服务器更改为主服务器并删除从属状态信息?


10

我有一个主服务器->从服务器配置,其中主服务器出现故障。我已经能够将旧的从属设备重置为主机,而将旧的从属设备重置为从属设备。精细。

我似乎无法做的是删除旧的从属设备(现在是新的主设备)上的主设备信息。我知道了:

mysql> show slave status \G
*************************** 1. row ***************************
           Slave_IO_State: 
              Master_Host: 10.1.2.101
              Master_User: replicationSlave
              Master_Port: 3306
              ...
              Slave_IO_Running: No
              Slave_SQL_Running: No

我已经阅读了很多MySQL文档,但仍然没有找到从新主服务器清除从机信息的方法。我试过了:

  1. RESET SLAVE这似乎无法清除这些设置。[[实际上,它确实删除了master.info文件,但没有删除内存设置。见下文。]]
  2. CHANGE MASTER TO MASTER_HOST='' 由于最近已弃用,因此只会产生错误。
  3. 检查my.cnf哪些没有主信息,因为它们是通过编程添加的。
  4. RESET MASTER因为一些mysql文档推荐了它。那只会重置bin日志。
  5. 在内部MySQL表中四处查看,是否可以找到要清除的字段。

在MySQL〜5.5.9上执行此操作的正确方法是什么?谢谢你的帮助。


编辑:

因此,事实证明,RESET SLAVEmaster.info文件将隐式删除@RolandoMySQLDBA。但是,在删除从属信息之前,您仍然需要重新启动服务器。

有什么方法可以删除此从属信息不必重新启动mysqld吗?


Answers:



6

从MySQL实例清除从属信息的最快,最肮脏的方法

  • 添加skip-slave-start到/etc/my.cnf下[mysqld]
  • service mysql stop
  • rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
  • service mysql start
  • skip-slave-start从/etc/my.cnf中删除

那应该为你做!

这是必要的,因为根据MySQL文档上的内容RESET SLAVE

在MySQL 5.5中(与MySQL 5.1及更早版本不同),RESET SLAVE不会更改保留在内存中的任何复制连接参数,例如主控主机,主控端口,主控用户或主控密码。这意味着可以在不需要执行RESET SLAVE之后的CHANGE MASTER TO语句的情况下发出START SLAVE。

因此,复制信息仍在内存中。重启mysql是唯一的方法。


谢谢@Rolando。+1我看到了,但是没有尝试。我试图不必重新启动mysqld来解决此问题。
灰色–所以别再邪恶了

另外,我没有看到任何master.info文件。那总是在“主人”或“奴隶”身上吗?
灰色–所以别再邪恶了

master.info始终在从服务器上。
Abdul Manaf

5

RESET SLAVE就phpmyadmin而言,紧随其后的重启并不会清除从属信息。您还需要设置CHANGE MASTER TO MASTER_HOST=''


3

我建议在“ mysqld”下的配置文件(“ /etc/my.cnf”中)中保留skip-slave-start命令,以避免覆盖任何主从数据。举一个例子-在云环境中工作时,假设一个旧的主服务器崩溃,然后在您的提供商解决任何问题时成功重启-旧的从服务器(现在是新的主服务器)将从旧的主服务器复制数据,然后覆盖DBA有机会实现这一目标。

顺便说一句,这在非云环境中也很重要。假设另一个管理员在不协调的情况下调高了旧的管理员。另外,还有一个问题,为什么即使是从站也要保持“ skip-slave-start”命令是个好主意-没有自动复制,这意味着您可以更好地控制防止意外的结果。:)


感谢您的回答@Lena。好主意。我会调查一下。
灰色–所以别再作恶
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.