1. 前言
以前给 Mysql 数据库做主从,都是在主服务器停服的情况下做的。但是最近有一个项目,已经上线几天了,数据库也单服务器跑了几天,才确定要给 Mysql 服务器做一个主从架构,简单的一主一从架构。
项目最好能在不停服的情况下完成 Mysql 主从搭建。后来翻了一些资料,真的找到了可以在线新建或者重做主从的方法。
其实我们以前停服做主从的主要目的是想锁表,是想找到 master_log_file 和 master_log_pos 两个参数。如果有方法在不停服的情况下,能确定这两个参数,那么在线建立主从架构的功能,就可以实现了。
2. 服务器环境以及版本
系统: CentOS7.5
Mysql: 5.6.x
主端: 172.188.26.221
从端: 172.188.26.229
3. 配置准备
注意:主端不停服的前提是,它已经开启了bin-log 日志!!
如果之前在主库没有开启 bin-log 日志,那就没有办法在新新建了,因为配置 bin-log 日志之后,主库一定要重启才能生效。不过,如果现在的情况是重做主库,那就证明之前是做过主从的,只是可能主从失效了需要重做。这种情况,主库也不需要重启,只要重新备份一下数据库,就可以重建从库了。
下面继续说说具体的主从新建过程。
在主库修改配置文件 my.cnf ,添加开启 bin-log 日志,格式用 row,注意 server-id ,它在主端和备端的数值要不一样,一般使用 ip 的最后一段。
server-id=221
log-bin=/data/mysqldata/mysql-bin
binlog-format=ROW
如果之前已经开启了bin-log 功能,就不用修改了。
接着在主库上进行备份用户的授权操作:
mysql>grant replication slave on *.* to 'repel'@'172.188.26.229' identified by 'password';
授权给从库的 ip 地址,备份的用户名是 repel,建议不要使用 'repel'@'%' 这种方式进行授权操作,主要是为了安全问题,限制授权的 ip 白名单。
接下来就是要在主库将需要备份