我在两台机器上有两个mysql数据库。假设首先是生产数据库,第二个是相同的克隆。我的php应用程序使用生产数据库默认。但我需要同时让两个dbs相同。这意味着我需要解决生产数据库不可用的情况(例如连接错误),所以我只需手动设置第二个,我的应用程序照常运行。我想让它“失败”。
我该怎么做?我想每分钟都进行转储,但是当数据库与许多数据复杂时,这不是一个好的解决方案...
答案 0 :(得分:1)
这些答案假设标准复制不是您的选择,无论出于何种原因:
以下选项是现有的手动数据同步方法,这些方法是众所周知的,当组合成bash
等脚本语言时,对于cronjob,如果需要使用某些逻辑来指定特定的根据需要,可以保证在生产箱上根据负载等运行它们是安全的。
选项1:pt-table-sync
Percona MySQL工具包中的pt-table-sync
工具允许在现有复制方案中按需进行主 - 主,主 - 从同步。或者您可以使用它来同步两个没有任何关系的服务器。
按照示例,单向同步。
pt-table-sync --execute h = sourcehost1,u = msandbox,p = msandbox h = desthost d = yourdb t = yourtables
此外还存在以下功能:
据我所知,主从关系不一定存在 - 但如果确实存在同步效率更高,因为可以使用更有效的校验和算法来比较数据。
选项2:使用XtraDb进行热/流备份
或者,您可以在其主机streaming
模式下使用免费的Percona XtraBackup,以使备份文件保持同步,并根据需要恢复到开发框。
XtraBackup为所有版本的Percona Server进行MySQL热备份, MySQL,MariaDB和Drizzle。它执行流式传输,压缩和 增量MySQL备份。
选项C:LVM快照 如果由于短暂的锁定/ IO问题需要以任何频率获取LVM快照,LVM快照可能不是生产盒的最佳选择,但是你可以在这里:MySQL Backups Using LVM Snapshots
所有这些工具都以单向或双向方式移动数据 - 因为彻底了解如何使用它们对于避免数据丢失至关重要。