要配置源使用基于二进制日志文件位置的复制,您必须确保已启用二进制日志记录,并建立唯一的服务器 ID。
复制拓扑中的每个服务器都必须配置一个唯一的服务器 ID,您可以使用 server_id
系统变量指定。此服务器 ID 用于在复制拓扑中识别各个服务器,必须是介于 1 和 (232)−1 之间的正整数。默认的 server_id
值为 1;您可以通过发出类似以下语句的语句在运行时更改它
SET GLOBAL server_id = 2;
服务器 ID 的组织和选择是任意的,只要每个服务器 ID 与复制拓扑中任何其他服务器使用的任何其他服务器 ID 不同即可。请注意,如果以前为服务器 ID 设置了 0 值,则您必须重新启动服务器才能使用新的非零服务器 ID 初始化源。否则,更改服务器 ID 时不需要重新启动服务器,除非您进行需要重新启动服务器的其他配置更改。
源需要二进制日志记录,因为二进制日志是将更改从源复制到其副本的基础。默认情况下启用二进制日志记录(log_bin
系统变量设置为 ON)。--log-bin
选项告诉服务器为二进制日志文件使用哪个基本名称。建议您指定此选项以给二进制日志文件一个非默认基本名称,这样即使主机名发生变化,您也可以轻松地继续使用相同的二进制日志文件名(请参见 第 B.3.7 节,“MySQL 中的已知问题”)。如果以前使用 --skip-log-bin
选项在源上禁用了二进制日志记录,则您必须在没有此选项的情况下重新启动服务器以启用它。
以下选项也会对源产生影响
为了在使用
InnoDB
进行事务的复制设置中获得最大的耐用性和一致性,您应该在源的my.cnf
文件中使用innodb_flush_log_at_trx_commit=1
和sync_binlog=1
。确保在源上没有启用
skip_networking
系统变量。如果禁用了网络,副本将无法与源通信,复制将失败。