环境
主机:172.17.0.2
从机:172.17.0.3
环境:CentOS7
MySQL:5.6.38
目标:实现主机172.17.0.2到从机172.17.0.3基于Binlog的主从复制
目前MySQL提供两种方式主从复制:
基于Binlog(我们此篇就是基于Binlog的主从复制)
基于GTID
第1步.下载MySQL并分别安装到主机和从机,网上有很多例子。这里就不复赘言。
第2步.在主机和从机上分别拷贝MySQL配置文件到/etc下。如果是安装的MySQL,在/usr/share/mysql下面可以找到my-default.cnf。命令如下:
# cp /usr/share/mysql/my-default.cnf /etc/my.cnf
第3步.修改主机配置文件
# vim /etc/my.cnf
最关键的地方在my.cnf中,需要在[mysqld]配置块中设置服务器唯一编号,并开启Binlog。服务器唯一编号可以根据自己的情况随意,但是尽量遵循容易记有意义的原则(可以使用ip最后一组来做唯一编号)
[mysqld]
server-id = 1 #此id为集群中全局唯一编号,不要和集群中其他机器冲突
log-bin = mysql-bin #这里就是开启主机Binlog日志的关键配置项
保存修改后,需要重新启动mysql
# systemctl restart mysql
第4步.在主机上进入mysql终端进行用户设置
# mysql -uroot -p
在mysql终端中输入
// 创建一个用于复制权限的用户
mysql > create user 'repl'@'172.17.0.%' identified by 'abcd_123';
// 分配复制权限
mysql > grant repliaction slave on *.* to 'repl'@'172.17.0.%' identified by 'abcd_123';
mysql > flush privileges;
// 查看目前主机mysql的日binlog日志状态
mysql > show master status;
第5步.设置从机配置文件。同样是修改mysqld配置块,只不过只增加服务器唯一编号,不用增加Binlog配置
# vim /etc/my.cnf
[mysqld]
server-id = 2 #此id为集群中全局唯一编号,不要和集群中其他机器冲突
// 进入从机mysql命令终端
# mysql -uroot -p
// 停止同步线程
mysql > stop slave;
// 进行主从同步
// 这里的master_log_file就是主机使用show master status中显示的File列里的值
// 这里的master_log_pos就是主机使用show master status中显示的Position列里的值
mysql > change master to master_host='172.17.0.2',
-> master_user='repl',
-> master_password='abcd_123',
-> master_log_file='mysql-bin.000048',
-> master_log_pos='432';
// 开启同步线程
mysql > start slave;
至此,mysql主从复制就已经完成,本人亲测无数次绝对可行。可以创建库或者表查看同步情况。