我有两个MySQL(也可以是MariaSQL)数据库。它们具有相同的结构。假设他们有两张 table 。客户和订单。
我需要不断地将这两个数据库合并/同步/复制到一个包含两个数据库的数据的数据库中。第三个数据库也将具有相同的结构,但某些表将具有不同的主索引。由于两个源数据库中的订单 ID 可能会发生冲突,因此我需要为第三个数据库中的订单 ID 和客户 ID 创建复合索引。
我只会从第三个数据库读取数据,因此无需将更改同步回源数据库。不同的应用程序正在将数据写入这两个源数据库。该应用程序不受我的控制,我无法更改数据或数据库结构。
我这样做的原因是我有两个数据源和一个将从这些源访问数据的应用程序。而且我无法知道给定客户存储在哪个数据库中,因此如果我想避免同时搜索这两个数据库,我需要将它们全部同步到一个数据库中。
所以问题是:将这两个数据库同步到一个数据库的最简单方法是什么?
谢谢!
最佳答案
您正在寻找多源复制。在 MySQL 5.7 中有一个非常简单的实现:
http://dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html
但是,它不会应用任何逻辑。
5.6中有一个binlog api,更多信息:http://cdn.oreillystatic.com/en/assets/1/event/61/Binary%20log%20API_%20A%20Library%20for%20Change%20Data%20Capture%20using%20MySQL%20Presentation.pdf
传统上,您将使用 mysqlbinlog 从主服务器中提取数据并将其合并到客户端中。这并不是那么简单,因为你必须处理重启、崩溃、失败等事情。它仍然是可行的,我已经在 perl 中实现了这个。
关于mysql - 如何持续同步/合并两个 MySQL 数据库到第三个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211309/