我最近需要执行一些数据库重新同步,并且有一个关于(似乎是)在将数据库转储到主服务器上之前发出“RESET MASTER”的常见做法的问题。
我找到的关于此过程的几乎所有文档在从主服务器转储数据库之前都有一个“RESET MASTER”。
示例:https://stackoverflow.com/a/3229580/1570785
然而,在生产环境中,这似乎适得其反,主要是因为“RESET MASTER”命令会清除现有的二进制日志。因此,如果在复制中断时您的主服务器出现问题,您最终会得到一个不一致/损坏的主服务器和一个不同步的从服务器。
鉴于首先需要执行此过程(即 mysql 复制出现问题),清除二进制日志(可用于从完全灾难中恢复)似乎是不明智的,因为从属需要重新同步。
我真正想问的是:我错过了什么 - 在从 master 获取转储之前执行“RESET MASTER”是否有正当理由?
最佳答案
这不是必需的。
如果您使用 mysqldump 创建转储,请添加这些选项:
--single-transaction
- 不锁定 innodb 表并创建一致的快照。--master-data
- 添加 master 的二进制日志位置,slave 应该从那里开始复制。
关于mysql - 为什么在重新同步 mysql slave 时出现 'reset master',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15652510/