每个副本必须有一个独一无二的服务器ID,被server_id系统变量指定。如果你正在设置多个副本,每个都必须有一个独一无二的不同于源和其他副本的server_id。如果副本的服务器ID值还没有设置,或者当前的server_id与源或者其他副本服务器的值所冲突,你必须改变这个server_id。
默认的server_id值是1。你可以使用下面的语句动态地来改变server_id的值:
请注意,服务器ID为0会阻止副本连接到源。如果先前设置了服务器ID值(这是早期版本中的默认值),则必须重新启动服务器以使用新的非零服务器ID初始化副本。否则,更改服务器ID时不需要重新启动服务器,除非您进行其他需要它的配置更改。 例如,如果在服务器上禁用了二进制日志记录,并且您希望对副本启用二进制日志记录,则需要重新启动服务器才能启用此功能。
如果你正在停止副本服务器,你可以编辑配置文件的[mysqld]节来指定一个独一无二的服务器ID。例如:
binary log记录在所有服务器上是默认启用了的。副本不需要启用二进制日志记录就可以进行复制。然而,副本上的binary log记录意味着副本的binary log可以用来备份数据和崩溃恢复。启用了二进制日志记录的副本也可以用作更复杂的复制拓扑的一部分。 例如,您可能要使用此链式设置来设置复制服务器:
在这里,A充当副本B的源,而B充当副本C的源。为此,B必须既是源又是副本。 从A接收到的更新必须由B记录到其二进制日志中,以便传递给C。除了二进制日志记录之外,此复制拓扑还需要启用log_slave_updates系统变量。 启用副本更新后,副本会将从源接收并由副本的SQL线程执行的更新写入副本自己的二进制日志。 默认情况下,log_slave_updates系统变量是启用的。
如果需要禁用副本上的二进制日志记录或副本更新日志,则可以通过为副本指定–skip-log-bin和–log-slave-updates = OFF选项来执行此操作。 如果您决定在副本上重新启用这些功能,请删除相关选项并重新启动服务器。