server_id - xiaoboluo768/qianjinliangfang GitHub Wiki

  • 设置复制架构中全局唯一标识实例的数字编号,如果不设置此选项,在5.7.3之前的版本中会被默认设置为0(与显式设置为0效果相同),设置为0时,虽然主库可以在binlog中写入server id 0,但是,此时主库会拒绝所有从库的主备连接请求,并且也拒绝连接到其他主库作为从库。在5.7.3版本开始,如果你打开了log_bin选项,则必须显式指定server-id参数,否则拒绝启动(但显式设置为0时,和5.6.x版本中显式设置为0值时的表现行为没有区别)
    • 全局变量,动态变量,整型值,有效值范围:0~4294967295(2的32次方-1),默认值为0
    • PS:
      • 在5.6.5版本开始新增一个变量:server_uuid来全局唯一标识实例,虽然有这个变量来全局唯一标识实例,但是仍然要求设置全局唯一的server_id变量值(server_uuid用于GTID复制中全局唯一标识一个实例,且GTID组成中包含了server_uuid的值,使用GTID同时用于全局唯一标识一个事务,但如果不使用GTID复制而使用传统的复制,仍然需要使用server_id来全局唯一标识一个实例,so,虽然有server_uuid这个系统变量可以全局唯一标识一个实例,但是仍然还是要求设置全局唯一的server-id值,注意:如果你开启了binlog但不设置server_id变量将无法启动mysqld)
      • 注意:在5.6.x版本中,虽然宣称默认值是0,但是实际上你在配置文件中显式指定0值或者不指定该选项时会被重置为1,这个是已知问题,在5.7版本中被修复回默认值为0,但是,如果你使用set语句动态设置为0值时,show查看到的就是你设置的0值,不会被修改为1
      • 当主库没有显式设置server-id系统变量时,复制结构中的从库无法与主库建立连接,因为从库向主库注册时,主库是否允许从库连接需要看一个内存变量server_id_supplied是否为1,当显式使用set语句设置server_id或者从配置文件中读取到了server_id值时,该内存变量被设置为1,否则为非1,如果该内存变量为非1时,就返回给从库一个错误拒绝连接

上一篇:binlog_error_action | 下一篇:relay_log