【问题标题】:MySQL Binary Log Replication: Can it be set to ignore errors?MySQL 二进制日志复制:可以设置为忽略错误吗?
【发布时间】:2010-09-07 00:52:54
【问题描述】:

我正在运行一个主从 MySQL 二进制日志复制系统(唷!),对于某些数据,它是不同步的(意思是,主服务器比从服务器拥有更多的数据)。但是从服务器在最轻微的 MySQL 错误时会非常频繁地停止,这可以禁用吗? (也许是用于复制从属忽略复制错误或某些排序的 my.cnf 设置;))

这就是不时发生的事情,当从站试图复制一个不存在的项目时,从站就会死掉。在 SHOW SLAVE STATUS \G; 快速检查给出

       Slave-IO-Running: Yes
      Slave-SQL-Running: No
        Replicate-Do-DB: 
             Last-Errno: 1062
             Last-Error: Error 'Duplicate entry '15218' for key 1' on query. Default database: 'db'. Query: 'INSERT INTO db.table ( FIELDS ) VALUES ( VALUES )'

我通过执行以下操作立即修复(一旦我意识到从站已停止):

STOP SLAVE;
RESET SLAVE;
START SLAVE;

...最近这有点令人厌烦,在我吐出某种为我做这件事的 PHP 之前,我想知道是否有一些 my.cnf 条目不会在第一个错误时杀死奴隶.

干杯,

/mp

【问题讨论】:

  • "RESET SLAVE" 将再次从开头开始复制。同一行的相同错误应该迟早会出现在正确的路上……那么,它是如何解决您的问题的。

标签: mysql replication mysql-error-1062 binlog


【解决方案1】:

停止奴隶;设置全局 sql_slave_skip_counter=1;启动从机;

您可以只忽略当前错误并继续复制过程。

【讨论】:

  • 完美运行,谢谢。我不明白为什么这个答案不是最好的。
  • 原帖要求自动处理,虽然这可行,但它仍然是手动的
  • 它可能仍然有效,但是很多错误 1062 是不同步数据库从属的明确迹象。您最好隔离哪个是“最新”或“正确”的数据库,将其提升为主,向新集群添加更多从属,然后停用原来的主/从属
【解决方案2】:

我认为您在不同步数据库的情况下进行复制首先同步数据库并尝试复制,服务器正在生成相同的唯一 ID 并尝试设置自动增量偏移

【讨论】:

    【解决方案3】:

    如果从服务器不用于复制以外的任何写入,高性能 MySQL 的作者建议在从服务器上添加 read_only 以防止用户错误地更改从服务器上的数据,因为这也会创建您遇到的相同错误。

    【讨论】:

      【解决方案4】:

      是的,在 my.cnf 中使用 --slave-skip-errors=xxx,其中 xxx 是“全部”或错误代码的逗号分隔列表。

      【讨论】:

      • 公平警告,这样做真的会破坏你的从数据库。它们是错误的原因。 :)
      • 在 my.cnf 中,我相信你把它放在没有前导“--”的地方。
      【解决方案5】:

      现代mysqldump 命令有几个选项可以帮助设置一致的复制。查看--master-data,它将二进制日志文件和位置放在转储中,并在加载到从站时自动设置。此外,--single-transaction 将在事务中进行转储,这样就不需要写锁来进行一致的转储。

      【讨论】:

      • 值得注意的是 --single-transaction 仅对事务表有用,例如 InnoDB。
      【解决方案6】:

      首先,您真的要忽略错误吗?如果出现错误,则数据可能不再同步。也许您想要的是在遇到错误时删除从数据库并重新启动同步过程。

      第二,我认为你得到的错误不是当你复制一个不存在的项目时(这意味着什么?) - 看起来你正在复制一个已经存在于从数据库中的项目。

      我怀疑问题主要来自没有从干净的数据副本开始。好像master已经复制到slave上了;然后复制已关闭(或失败);然后它又重新启动了,但没有给奴隶机会赶上它错过的东西。

      如果您曾经有一段时间可以关闭主服务器以进行写访问,以克隆数据库并将其导入从服务器,这可能会解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 2015-04-30
        • 2013-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多