【问题标题】:MySQL - row filter replicationMySQL - 行过滤器复制
【发布时间】:2016-10-31 18:45:00
【问题描述】:

我一直很难弄清楚如何在 MySQL 中配置分布式数据库系统。我有 3 台服务器,每台都有相同的数据库模型。我已经将它们配置为使用复制 - 所以有 1 个主控和 2 个从属。一切正常,但我接下来要做的是“过滤”复制数据。

假设我有两张表:customers 和 products。我想将产品表的所有内容复制到两个奴隶(我得到了这部分),但我想将客户从欧洲复制到 Slave1,从亚洲复制到 Slave2。所以 master 将包含有关客户的所有信息,但 slave 只包含其中的一部分。我怎样才能做到这一点?

据我所知,复制本身不支持这种过滤。我不确定,但似乎分区也不是一个答案。

MySQL 中是否有任何内置机制可以提供帮助?如果没有,您将如何解决这种情况?

【问题讨论】:

  • 如何解决它(或者是否有其他选项)取决于您的设置,尤其是您的要求,因此您这样做的原因/您想通过这样做来实现什么。例如:您是否可以仅将数据隐藏在不同的奴隶上,还是出于隐私/节省带宽/优化的原因而这样做?您是否使用基于语句或行的复制?你的奴隶是只读的吗(所以改变不会回到主人那里)?

标签: mysql replication


【解决方案1】:

为此,您必须使用自定义方式读取数据并根据您的业务逻辑将数据添加到从站 1 或从站 2。

例如,您可以从 binlog 中读取数据库条目的变化,并根据输入的数据将其存储在不同的从数据库中。不过,这可能会有一点延迟。

有一个非常好的系统可以做到这一点,即 maxwell(https://github.com/zendesk/maxwell),它使用 kafka 来推送具有查询类型和新旧数据的数据库更改事件。现在在此基础上,您可以编写 kafka 消费者来读取数据并将其推送到您的从数据库中。 maxwell 使用与 Master/Slave 相同的 binlog 复制器,可靠。

【讨论】:

    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2014-03-30
    • 2020-08-11
    • 2016-05-17
    • 2023-03-12
    相关资源
    最近更新 更多