MySQL 复制在闰日不起作用

MySQL 复制在闰日不起作用

虽然超出了我的“核心”知识范围,但我维护了一个双向复制的 MySQL 数据库(主数据库和备份数据库)。它大部分时间运行良好。所有更改几乎都会立即在两个服务器之间复制。

但现在我注意到一件奇怪的事情:我有几个案例在 2 月 29 日没有复制。诚然,我还没有确认所有复制都丢失了。但到目前为止我发现的所有案例都存在这个问题。

不久前,我将备份上的时区从 UTC 更改为 CET,主系统上一直都是 CET。

我之所以关注这个问题,是因为它发生在闰日,还是其中有其他原因?

服务器都是 CentOS 5.4 和 MySQL 5.0

答案1

我能感觉到人们的担忧。如果一切都是 UTC,那就不是问题了。

这是一个需要思考的问题:

在实行夏令时的日子里,您是否遇到同样的问题?

CET 确实遵守夏令时。

您描述的复制问题也应该在时钟向前移动时发生。理论上,这应该会持续大约一个小时。

您可以做以下两件事之一来确保相同的数据:

选项 1:mysqldump 所有数据从主数据库到备份数据库

MYSQL_HOST_ROOT=localhost
MYSQL_USER_ROOT=roothome
MYSQL_PASS_ROOT=rootpassword
MYSQL_CONN_ROOT="-h${MYSQL_HOST_ROOT} -u${MYSQL_USER_ROOT} -p${MYSQL_PASS_ROOT}"
MYSQL_HOST_BCKP=localhost
MYSQL_USER_BCKP=rootremote
MYSQL_PASS_BCKP=rootremotepassword
MYSQL_CONN_BCKP="-h${MYSQL_HOST_BCKP} -u${MYSQL_USER_BCKP} -p${MYSQL_PASS_BCKP}"
echo "SET SQL_LOG_BIN=0;" > /root/MySQLData.sql
echo "STOP SLAVE;" >> /root/MySQLData.sql
MYSQLDUMP_OPTIONS="--master-data=1 --all-databases --routines --triggers"
mysqldump ${MYSQL_CONN_ROOT} ${MYSQLDUMP_OPTIONS} >> /root/MySQLData.sql
echo "START SLAVE;" >> /root/MySQLData.sql
mysql ${MYSQL_CONN_BCKP} -A < /root/MySQLData.sql

选项 2:使用pt-表校验和pt-表同步

我写了一个示例脚本使用mk-表校验和mk-表同步但可以应用于pt-表校验和pt-表同步也一样。

答案2

复制通常只是逐步遍历二进制日志。(不关注实际日期)

你确定你的主人和从属者掌握着实际的数据吗?

相关内容