如何在 MySQL 中创建链接表或镜像表
Posted
技术标签:
【中文标题】如何在 MySQL 中创建链接表或镜像表【英文标题】:How to create linked or mirrored tables in MySQL 【发布时间】:2011-02-02 01:15:49 【问题描述】:我有两个应用程序在同一个集群中使用两个几乎相同的 mysql 数据库。一些表必须包含单独的数据,但其他表应该包含相同的内容(即 db1.tbl 中的所有写入和行都应该可以在 db2.tbl 中访问,反之亦然)。
解决这个问题的正确方法是什么?请注意,应用程序使用硬编码的表(而不是数据库)名称,因此不能简单地告诉应用程序 2 访问 db1.tbl。
【问题讨论】:
我目前唯一的想法是使用视图或触发器,但在这种情况下它们可能都是错误的。 【参考方案1】:您需要做的是为您需要的表设置复制。有关在 MySQL 中设置复制的文档,请参阅 http://dev.mysql.com/doc/refman/5.0/en/replication.html。
【讨论】:
我应该提到这些是同一集群(同一服务器)上的数据库。您是否建议在同一台服务器内进行主主复制?我不知道这是否可能,或者二进制日志的行为方式(该服务器已经充当主服务器)。【参考方案2】:针对不同mysqld进程的数据库
您应该查看官方手册以复制单个表: http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-do-table
您可以在两个 mysql 进程之间设置 Master-Master 关系,但请记住要小心并在主键上具有唯一性。
对于驻留在同一服务器和 mysqld 服务上的数据库
恕我直言设计明智,您应该考虑将所有共享表移动到不同数据库下的想法。 这样一来,您就可以避免为更新它们而过度使用触发器。
【讨论】:
以上是关于如何在 MySQL 中创建链接表或镜像表的主要内容,如果未能解决你的问题,请参考以下文章