2014-12-03 93 views
0

我正在解决MySQL主从复制问题。这里是这样的情况:MySQL/MariaDB复制解决方案

我有一个服务器A和一个服务器B.服务器A运行的应用程序产生的数据表TA1,TA2和TA3。我想将TA1,TA2和TA3的特定子集(由inner join select定义)复制到专用于报告引擎的服务器B上的一个表TB1中。在服务器A上创建数据后,必须尽快将数据复制到服务器B上。现在,我可以通过将表TAx从服务器A复制到位于服务器B上的TBx,然后通过在服务器B上创建一个视图来过滤不必要的行。

哦,我讨厌这个解决方案。我想在服务器A上执行行筛选并仅复制子集。任何想法如何很好地设置它?

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

回答

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/

或者你可以有税收和TBX表上的主已,有关税收触发器做过滤,只复制需要进行修改的TBX影子表,然后让复制过滤器,只复制TBx表到奴隶(s)。