如何同步两个具有相同结构和不同服务器的MySQL表

时间:2010-10-15 12:54:52

标签: mysql

我有两个ubuntu服务器,并安装了Mysql 4.0,ServerA和ServerB

我想将ServerA的mysql表同步到ServerB(将ServerATable复制到ServerBTable,保持ServerATable和ServerBTable等于)

怎么做?

(shell脚本,或java,或linux mysql工具)

谢谢:)

1 个答案:

答案 0 :(得分:2)

有几个选择。一种是在MySQL中设置replication,它将自动在服务器之间来回复制数据并使它们自动保持同步,数据飞行时的粒度为几秒钟。缺点是您必须至少将主服务器暴露给网络以允许TCP连接。

在外部,您可以在服务器A上定期执行mysqldump,复制到服务器B,加载到mysql,然后关闭。这将具有您运行转储/复制/加载序列的任何时间间隔的粒度。下行是mysqldump锁定表,因为它正在工作。如果您有一个大型数据库,那么在转储进行时您将被锁定在serverA的表之外,并且在加载数据时锁定了serverB。并且加载转储比首先进行转储要慢得多,因为mysql在加载过程中会执行各种内部管理(密钥更新,表元数据更新等)。

对于第三个选项,您可以编写一个同步器来比较两个数据库之间的行,并根据需要进行更新。然而,然后你将一台服务器的内容啜饮到另一台服务器并进行逐行操作。此外,还必须处理任何依赖的外键/子关系更新,这将很快变得复杂。那时你可能最好使用mysqldump选项。

当然,您应该将MySQL升级为更现代的东西。 v4.x已经过时了。您应该至少运行5.0,最好是5.1版本。