在 Mysql 中设置主/从复制时,是否需要忽略其中的任何表,/etc/mysql/my.cnf
或者replicate_wild_ignore_table
在正常情况下应该省略?
这就是我正在做的...
我的.cnf
replicate_wild_ignore_table = mysql.%,information_schema.%,phpmyadmin.%
在 Mysql 中设置主/从复制时,是否需要忽略其中的任何表,/etc/mysql/my.cnf
或者replicate_wild_ignore_table
在正常情况下应该省略?
这就是我正在做的...
replicate_wild_ignore_table = mysql.%,information_schema.%,phpmyadmin.%
请将指令更改为以下之一:
或者
mysql数据库
不需要做mysql。为什么?执行
GRANT
和REVOKE
命令将绕过replicate_wild_ignore_table=mysql.%
,因为 SQL 没有明确提及 mysql 模式表。这将得到
replicate_wild_ignore_table=mysql.%
:这将被
replicate_wild_ignore_table=mysql.%
:如果你想保留
replicate_wild_ignore_table=mysql.%
,我建议如下:这将防止 SQL 记录在 master 的二进制日志中。因此,在 DB Session 之后执行的所有 SQL
SET sql_log_bin = 0;
都不会复制。信息模式数据库
至于 information_schema 数据库,mysqld 使用它来监控数据库元数据。每个对于 MySQL 实例都是唯一的。它们从不本质上复制,因为您可以选择在 Master 和 Slave 上保留不同的表。如果
information_schema
已复制,则创建复制方案,例如奴隶是不可能处理的。
概括
正在做
或者
应该是你所需要的。尽管如此,如果默认数据库不是
phpmyadmin
.我认为这完全取决于你为什么要复制。如果您想要一个严格的 1:1 数据库服务器副本,那么您不需要任何 ignore_table 条目。如果您只想使数据库/表的某些子集可用,那么您将需要添加条目以将它们过滤入/出。
但是正如您在包含的链接中指出的那样 - 这会产生无意中破坏复制的风险。由于每个 binlog 语句都会被复制并在复制从属服务器上运行,如果它遇到尚未专门处理的引用并且引用的表不可用,它将出错。解决这个问题通常很简单,但确实需要注意。