2013-03-27 99 views
3

我最近需要执行一些数据库重新同步操作,并且有一个问题关于(似乎是)在将数据库转储到master上之前发布'RESET MASTER'的常见做法。为什么在重新启动mysql slave时发出'reset master'

几乎所有我发现围绕这个过程的文档都有一个'RESET MASTER',它在从主服务器上转储数据库之前。

例如:https://stackoverflow.com/a/3229580/1570785

在生产环境中,然而,这似乎是适得其反,主要是因为在“重置主”命令将清除现有的二进制日志。因此,如果复制中断时主服务器出现问题,最终会出现不一致/损坏的主服务器不同步从服务器。

鉴于此过程需要首先执行(即,mysql复制出现问题),因此仅仅因为删除了binlog(可能用于从完整灾难中恢复)似乎是不明智的。奴隶需要重新启动。

我真的在问:我错过了什么 - 是否有正当的理由在从主服务器转储之前执行'RESET MASTER'?

回答

0

这不是必需的。 如果您使用mysqldump创建转储,请添加以下选项: --single-transaction - 不锁定innodb表并创建一致的快照。 --master-data - 要添加主站的二进制日志位置,该从站应该开始复制。