![如何在同一 mysql 数据库服务器上的两个数据库之间同步表的子集](https://linux22.com/image/517371/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%90%8C%E4%B8%80%20mysql%20%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B9%8B%E9%97%B4%E5%90%8C%E6%AD%A5%E8%A1%A8%E7%9A%84%E5%AD%90%E9%9B%86.png)
希望能够在同一服务器上运行的两个 mysql 数据库之间同步表的子集。其中一个数据库充当主数据库,可以在其中进行插入、更新和删除。第二个数据库使用相同的表进行只读操作。我不想使用联合表来实现这一点。长期目标是将两个数据库分离到多个服务器,将表子集作为只读的第二个数据库也复制几次以在地理上分布,以实现负载和性能目的,每个数据库都有独特的数据....一旦实现,我计划使用 binlog 在辅助数据库上复制这些特定表。与此同时,我想保持这些表同步。除了使用 cronjob 和 mysqldump 之外,还有更优雅的方法吗?
答案1
如果你的最终目标是分离服务器,那么我建议在不同的端口上运行单独的实例,并在两者之间使用标准复制
快速谷歌结果这
或者,你可以使用触发器来复制,类似于
CREATE TRIGGER replicatetable AFTER INSERT ON db1.table
FOR EACH ROW BEGIN
INSERT INTO db2.table(field1,field2, ...) values (db1.table.field1,db1.table.field2, ...);
END;
UPDATE 和 DELETE 类似
答案2
根据您的版本 MySQL 5.1+,我建议使用复制。尤其是考虑到您计划将来拥有一个集群。