我已经为设置了复制,例如。dbname
我想添加一个新的复制表。我在主服务器和从服务器上都创建了表。我replicate-do-table=dbname.tablename
在my.cnf
从服务器上输入了。
要重新加载,my.cnf
需要重新启动服务器,而且由于有大量查询到来,我不想丢失任何一个。
有没有办法可以添加新表以便动态复制?
答案1
答案2
我不同意 aslisabanci 的观点 - 你可以使用 CHANGE REPLICATION FILTER 语句动态更改复制过滤器如官方文档所述,只需确保在更改规则之前停止从属服务器,然后重新启动它。即使您不这样做,MySQL 也会警告您先停止从属服务器。
我实际上只是运行了以下命令并且它运行良好:
STOP SLAVE;
CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('mana_user.privilege,mana_user.calendar');
START SLAVE;
请注意,如果要将一个表添加到表列表中,则必须在语句中指定要复制的所有表,而不仅仅是要附加到列表中的一个表。
我不确定这句话“其他的,比如 --replicate-选项,只能在从属服务器启动时设置。"* 指的是,也许他们的意思是在复制运行时不能运行命令?这是真的,在执行命令时,复制引擎需要停止几秒钟,但一旦重新启动它,它就会从停止的地方继续。实际的 MySQL 服务器不需要停止。
提示:让自己轻松一点,在主服务器上实际创建表之前将表添加到复制过滤器中,这样创建表的命令就会被复制,从而省去了在从服务器上手动创建表的麻烦。