mysql - 为什么在重新同步 mysql slave 时出现 'reset master'

标签 mysql replication binlog

我最近需要执行一些数据库重新同步,并且有一个关于(似乎是)在将数据库转储到主服务器上之前发出“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/

相关文章:

python - 如何初始化Redis客户端写入master和从slave读取

MySQL Replication : SQL Thread, 有哪些权限?

configuration - 用于 system_auth 的复制因子

MySQL Slave复制失败: How to identify SQL which is causing it to fail

基于 MySQL 语句的复制 : Does binlog contain exact queries executed on master?

mysql - 分钟后使 bin 登录过期

javascript - X-可编辑简单数据库更新不更新

mysql - SQL查询性能对于MySQL来说太差了

mysql:立即插入与收集许多插入语句然后插入

PHP/MySQL - 表单输入值 "&"保存为 "&"