【问题标题】:MySQL Replication with Different Table Name & only specific column具有不同表名和仅特定列的 MySQL 复制
【发布时间】:2014-05-09 10:48:47
【问题描述】:

我有以下关于 MySQL 复制的疑问。

1) 假设我想用不同的表名做主从复制,那有可能吗?

例如。 Master >> Db1.student 我想用 Slave >> Db2.employee 表复制。

2) 如果我只想复制同一张表中的特定列,那么可以吗?

硕士 >> Db1.student

  • 身份证
  • 名字
  • 姓氏
  • 父母姓名
  • 状态

从站 >> Db2.student

  • 身份证
  • 名字
  • 姓氏

除此之外,还有其他方法可以实现/解决上述查询(即 MySQL 视图)或任何其他替代方法吗?

提前致谢。

【问题讨论】:

  • 尝试查看views,以显示数据子集。我建议您可以在 master 上创建视图并复制视图而不是完整的表。
  • 我可以只复制那个视图吗?因为我不想将我所有的表数据转移到从数据库,因为有一些敏感数据,所以我只想将特定列数据复制到从数据库。

标签: mysql sql replication database-replication master-slave


【解决方案1】:

最简单的方法是使用这样的视图:

CREATE VIEW Db2.student AS 
     SELECT id, firstname, lastname 
       FROM Db1.student;

如果您想过滤 Db2 视图中的某些内容,您可以在视图创建中添加一些过滤器。例如:

CREATE VIEW Db2.student AS 
     SELECT id, firstname, lastname 
       FROM Db1.student
      WHERE Db1.student.status = 1; 

我希望它对你有用。

【讨论】:

  • 是的,它可以工作,但如果 MySQL 服务器不同怎么办?同样在同一台服务器中,有 2 个不同的用户用于 DB1 和 DB2,那么它也可以工作吗?
  • 那么您应该必须使用联合表。我从来没有用过它。你可以在这里阅读一些关于此的内容dev.mysql.com/doc/refman/5.0/en/federated-use.html
  • View 仅适用于同一服务器。对于不同的服务器,我需要进行主从复制。同样在视图中,我们需要为另一个数据库用户授予特定表/列的权限。
猜你喜欢
  • 2015-10-17
  • 1970-01-01
  • 2019-08-11
  • 2016-02-05
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 2013-03-23
  • 2013-05-18
相关资源
最近更新 更多