为了让master能够启用基于binary log file position的复制,需要在master开启binary logging并创建一个唯一的server ID。
必须在master开启binary logging是因为binary log是master向slave复制更改的基础。如果master没有使用log-bin
选项开启binary logging,复制将无法实现。
每个在复制群组里的服务器必须配置一个唯一的server ID。这个ID用于标示在群组内的服务器,而且ID的取值必须是正整数(1 至 (232)−1),具体取哪个值由自己决定。
为了配置binary log和server ID,需要先停止MySQL服务,然后编辑my.cnf
或my.ini
文件。在该文件中加入log-bin
和server-id
选项。如果文件中已包含上述两项但被注释掉了,请放开注释并根据需要配置他们的参数。
- 例如
启动binary logging并使用mysql-bin
作为日志文件名的前缀,同时将server ID设置为1。
[mysqld]
log-bin=mysql-bin
server-id=1
保存设置并重启MySQL服务。
注意
- 如果不设置server-id或者将它设置为默认值0,master会拒绝slave的连接。
- 为了更好地保证复制的持久性和一致性,使用InnoDB事务。应该在
my.cnf
中设置innodb_flush_log_at_trx_commit=1
和sync_binlog=1
。 - 确保master没有开启
skip-networking
选项,否则slave不能与master对话,复制也将失败。
附录
-
server-id属性
server-id属性
- InnoDB资料
-
skip-networking介绍
skip-networking
后记
- 以上关于master的配置必须写在
/etc/my.cnf
文件中的[mysqld]
节点下
mysqld节点
- 若不自定义binnary log的名称,直接放开
my.cnf
的log_bin
注解即可,此时的binnary log的名称为hostname-bin.xxx
。若指定名称,则使用log-bin=xxx
。注意log与bin之间,前者是下划线,后者是横杠。 - MySQL建议使用
log-bin
为binary log指定名称,否则当master主机名更改时会导致复制失败。同时建议配置log-bin-index
,其值为binary log的文件名。
Warning
log-bin-index
![](https://img.haomeiwen.com/i7391491/5d532a750dabfbbb.png)
网友评论