2010-07-07 122 views
5

我正在通过binlog设置MySQL复制。这是一个主/从设置。MySQL复制最佳实践

我对如何以最佳方式做到这一点有几个问题。

  1. 应该复制information_schema,如果是/否,为什么?
  2. 应该复制mysql db,如果是/否,为什么?
  3. 如果全部都应该被复制,那么不需要设置binlog-do-db?

干杯。

回答

13
  1. 不,信息架构不应该被复制。这是关于您的表,dbs,例程,触发器等的元数据。让服务器填充它自己的information_schema。
  2. mysql db可以很好的复制,特别是在你要设置许多用户的情况下。如果您的主服务器出现故障,您需要在从服务器上提供相同的用户信息才能故障切换。如果发生这种情况,您需要拥有相同的权限。
  3. 仅列出要用binlog-do-db复制的数据库。如果您没有列出任何内容,则默认情况下会复制所有内容。
+0

那么意思'binlog-do-db'必须定义?我有大量的数据库需要复制,我不希望将它们列出 – conandor 2011-12-27 02:55:31

+6

对INFORMATION_SCHEMA的更改不会写入二进制日志。它不是一个“真正的”数据库,它只是一个关于内部元数据的方便的表格封装,所以没有发生实际的INSERT/UPDATE/DELETE操作。绝对没有理由为INFORMATION_SCHEMA包含binlog-ignore-db或relay-ignore-db,并且许多原因*不包含复制过滤器,尤其是不必要的复制过滤器。 – 2012-01-22 23:42:33

+0

如果实际使用binlog-do-db,请记住跨数据库查询不起作用。 如果我不需要在只共享一个生产数据库的服务器上,我更喜欢不使用binlog-do-db。 请参阅文档以获取解释:http://dev.mysql.com/doc/refman/5.5/en/replication-options-binary-log.html#option_mysqld_binlog-do-db – warden 2012-08-22 21:39:39