如何在 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 中创建链接表或镜像表的主要内容,如果未能解决你的问题,请参考以下文章

如何在MySQL中创建视图

如何在代码中创建一个“硬编码”的小 SQL 连接表?

如何链接在php mysql中创建的RSS feed

在 Impala 中创建表或视图时不同的行数

在oracle中创建表,如何写sql语句才能保证表不重复创建,也就是说,如何让他不提示表或视图已存在

[Data Structure]线性表Linear List2