在MySQL中跳过slave上的一些列复制

时间:2010-11-22 15:21:33

标签: mysql replication

我在主人和奴隶上都有相同的表格。两者都有许多列,其中price。是否有可能在slave中设置price列的单个值,以便复制不会覆盖它们?

我们的系统适用于许多具有单独价格的国家,但我们也希望从中央数据库分享一些常用数据。

我虽然提出了一些解决方案:

  • 将所有特定于国家/地区的列提取到其他不会复制的表。
  • 这需要我们的源代码进行大量更改。
  • 创建一些代理数据库,其中只包含将从master复制的公共共享列,然后将其设置为master到基于国家/地区的数据库,并具有完整的列定义。
  • 它看起来很难看。

还有更好的东西吗?我将不胜感激任何帮助。

3 个答案:

答案 0 :(得分:0)

我真的不认为复制是为了像你要问的那样进行“几乎复制”。我不认为你只能复制一部分表格。

你的第一个解决方案对我来说听起来最合理。

总的来说,我想出了一个软件解决方案,它不需要复制,也可以复制所有表。然后在生产中添加复制以添加冗余或性能。其他任何事情听起来都很难开发和测试。

(我:我不是MySQL的专家,虽然我已经设置了几次MySQL复制。)

答案 1 :(得分:0)

Percona Server 5.1中有一个slave-skip-columns补丁。你可能想看看。

答案 2 :(得分:0)

这是一个老问题,但在Google首先出现,所以我认为这是相关且有用的:https://dev.mysql.com/doc/refman/5.5/en/replication-features-differing-tables.html

简而言之,如果表中的公共列(主服务器和从服务器上的公共列)具有相同的类型且顺序相同,则即使主服务器或从服务器末端有额外的列,复制也会起作用。对于不匹配的数据类型,有一些规则。