如何在 MySQL 中创建链接表或镜像表
我有两个应用程序在同一集群中使用两个几乎相同的 MySQL 数据库。一些表必须包含单独的数据,但其他表应该包含相同的内容(即 db1.tbl 中的所有写入和行都应该可以在 db2.tbl 中访问,反之亦然)。
解决这个问题的正确方法是什么?请注意,应用程序使用硬编码的表(而不是数据库)名称,因此简单地告诉应用程序 2 访问 db1.tbl 不是一个选项。
I have two applications using two nearly identical MySQL databases within the same cluster. Some tables must contain separate data, but others should hold identical contents (i.e. all writes and rows in db1.tbl should be accessible in db2.tbl and vice versa).
What's the proper way to go about this? Note that the applications use hardcoded table (but not database) names, so simply telling application 2 to access db1.tbl is not an option.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要做的是为您需要的表设置复制。请参阅http://dev.mysql.com/doc/refman/5.0/ en/replication.html 有关在 MySQL 中设置复制的文档。
What you need to do is set up replication for the tables that you need. See http://dev.mysql.com/doc/refman/5.0/en/replication.html for the documentation on setting up replication in MySQL.
对于不同 mysqld 进程上的数据库
您应该查看官方手册以复制各个表:
http://dev.mysql .com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-do-table
您可以在两个 mysql 进程之间设置主主关系,只需记住要小心并具有主键的唯一性。
对于驻留在同一服务器上的数据库mysqld 服务 恕
我直言,在设计方面,您应该考虑将所有共享表移动到不同数据库下的想法。
这样您就可以避免更新它们时过度使用触发器。
For databases on different mysqld processes
You should check the official manual for replicating individual tables:
http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-do-table
You can setup an Master-Master relation between the two mysql processes just keep in mind to be carefull and have uniqueness on your Primary Key.
For databases residing on the same server & mysqld service
IMHO design wise you should consider the idea of moving all your shared tables under a different DB.
This way you will avoid all the overkill of triggers for updating them.