按照复制现有服务器的步骤,似乎大多数方法都依赖于完全停止主服务器或至少阻止其写入的能力,flush tables with read lock;
这会有效地造成停机,因为许多应用程序在无法写入数据库时无法正确响应。
是否有一种安全的方法将主服务器复制到从服务器,以确保零停机时间和数据库信息完全同步?
在我们的场景中,我们有一个主服务器和一个从服务器,它们都运行良好。从 5.5 升级到 5.6 期间的 MySQL 错误导致从服务器略微不同步,现在我们想完全重新创建它的数据库。现在,当我们遇到一些零星错误时,我们会跳过它们,STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;
但这只意味着复制不是 100% 像主服务器一样。
谢谢
答案1
虽然这是一个老问题,但如果你仍在寻找答案 - 尝试percona xtrabackup。如果您有 MyISAM 表,请使用 --rsync 选项。通过它,我们实现了几乎无缝的转储(对于 1Gb 左右的数据库,锁定大约需要 5-10 秒)。
答案2
有。当所有数据库引擎都是 InnoDB 并且您已指定--single-transaction
开关时。这种方式flush tables with read lock;
或--lock-all-tables
不需要。
否则,我想,没有其他选择了。我深表哀悼。
基本上,增加从属跳过计数器是不好的,除非你绝对确定它是安全的(例如,在复制丢失的用户grant
语句或类似的东西时)。