MySQL / MariaDB复制解决方案

时间:2014-12-03 20:38:22

标签: mysql replication mariadb

我正在解决MySQL主从复制问题。情况就是这样:

我有服务器A和服务器B.服务器A运行应用程序,该数据生成表TA1,TA2和TA3。我想将TA1,TA2和TA3的特定子集(由内部联接选择定义)复制到一个表TB1中,并将其复制到专用于报告引擎的服务器B上。数据必须在服务器A上创建后立即复制到服务器B.我现在能够通过将服务器A中的表TAx复制到位于服务器B上的TBx然后通过在服务器B上创建一个视图以过滤掉不必要的行。

哦,我多么厌恶这个解决方案。我想在服务器A端进行行过滤,并仅复制子集。有什么想法如何很好地设置它?

我想避免调度程序每隔一分钟左右运行一次查询,以便在复制之前在服务器A上创建表,我想避免使用触发器来过滤数据,我希望保持数据的在线复制尽可能多可能,..

1 个答案:

答案 0 :(得分:0)

使用基于STATEMENT的复制时,您可以简单地在从属端的表上使用触发器来过滤掉不需要的行(行更改仍会写入binlog复制文件,但只会在从属端过滤掉)

从MariaDB 10.1(不是GA版本)开始,你也可以使用基于ROW的复制,并且还有从属端触发器来进行过滤:

https://mariadb.com/kb/en/mariadb/documentation/replication/standard-replication/running-triggers-on-the-slave-for-row-based-events/

或者您可以在主服务器上同时拥有TAx和TBx表,TAx上的触发器执行过滤并且仅将所需的更改复制到TBx影子表,然后具有仅将TBx表复制到从服务器的复制过滤器(s )。