MySQL复制最佳实践

5

我正在通过binlog设置MySQL复制,这是一个主/从设置。

我有一些关于如何以最佳方式执行此操作的问题。

  1. 是否应该复制information_schema数据库,如果是/否,为什么?
  2. 是否应该复制mysql数据库,如果是/否,为什么?
  3. 如果所有内容都应该被复制,那么不需要设置binlog-do-db吗?

谢谢。

2个回答

13
  1. 不要复制信息模式(Information Schema)。这是关于您的表、数据库、例程、触发器等的元数据。让服务器自己填充其信息模式。
  2. MySQL数据库可以进行复制,特别是在您将设置大量用户的情况下。如果主服务器出现故障,您需要在从服务器上有相同的用户信息才能进行故障转移。如果出现这种情况,您需要有相同的权限。
  3. 使用binlog-do-db仅列出要复制的数据库。如果您没有列出任何内容,则默认情况下将复制所有内容。

那么 binlog-do-db 必须被定义吗?我有很多数据库需要复制,我不想逐个列出它们。 - conandor
6
对 INFORMATION_SCHEMA 的更改不会被写入到二进制日志中。它不是一个“真正的”数据库,只是内部元数据的方便的表格包装器,因此没有实际的 INSERT/UPDATE/DELETE 操作发生在上面。没有必要为 INFORMATION_SCHEMA 包括 binlog-ignore-db 或 relay-ignore-db,而且尤其是不需要不必要的复制过滤器,有许多理由这样做。 - Aaron Brown
如果您实际使用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 - rantoniuk

0
  1. 不需要复制信息模式,请参阅https://dev.mysql.com/doc/refman/5.0/en/information-schema.html以获取详细信息。
  2. 可以,因为MySQL数据库包含所有用户凭据,所以为了备份用户,您可以复制它。
  3. 是的,使用binlog-do-db来复制选定的数据库,否则如果没有提及,则会复制所有内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接