添加新表进行复制而无需重新启动 MySQL?

添加新表进行复制而无需重新启动 MySQL?

我已经为设置了复制,例如。dbname我想添加一个新的复制表。我在主服务器和从服务器上都创建了表。我replicate-do-table=dbname.tablenamemy.cnf从服务器上输入了。

要重新加载,my.cnf需要重新启动服务器,而且由于有大量查询到来,我不想丢失任何一个。

有没有办法可以添加新表以便动态复制?

答案1

不,您无法动态地将表添加到复制中。

你可以读在文档中

其他选项,例如 --replicate-* 选项,只能在从属服务器启动时设置。

答案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 服务器不需要停止。

提示:让自己轻松一点,在主服务器上实际创建表之前将表添加到复制过滤器中,这样创建表的命令就会被复制,从而省去了在从服务器上手动创建表的麻烦。

相关内容