1、前言
首先要保证主从两台数据库的版本,数据库表等一致, 本教程是基于5.7.20,64位的mysql数据库,系统是centos 7,主从均为同一个虚拟机
2、一主三从架构架构图
3、环境配置(先将各个服务器停掉,删除掉中文注释)
3.1 在MySQL 主服务器(3307) 配置文件my.cnf里面加入
log-bin = master-bin #开启二进制日志
server_id = 3307 # 表示server编号,编号要唯一
3.2 在MySQL 从服务器(3308) 配置文件my.cnf里面加入
server_id = 3308 # 表示server编号,编号要唯一
3.3 在MySQL 主服务器(3309) 配置文件my.cnf里面加入
server_id = 3309 # 表示server编号,编号要唯一
3.4 在MySQL 主服务器(3310) 配置文件my.cnf里面加入
server_id = 3310 # 表示server编号,编号要唯一
4、主从服务器设置
4.1 主服务器(3307)设置
需要登录到主服务器3307的客户端
[root@2snqobz5vv1d7s bin]# cd /program/mysql-5.7.20/bin/
./mysql -uroot -p -P3307 -h127.0.0.1
(1)、查看主服务器状态
mysql> show master status\G;
(1)、在主服务器上创建复制数据的账号并授权
mysql> grant replication slave on *.* to 'copy'@'%' identified by '123456';
mysql> flush privileges;
注意:该语句可完成授权、创建用户、修改密码操作
(2)、查看主服务器状态
mysql> show master status\G;
备注:
1、 第一次查看主服务器的状态的偏移量是154
2、新增copy账户后,偏移量变化为589,说明新增账户针对数据库也做了写的操作,由于从服务器不需要该账户
因此把该偏移量退回原来的值
(3)、如果主服务器状态不是初始状态、需要重置状态
执行命令 : mysql> reset master
4.2 从服务器(3308 | 3309 | 3310)设置
需要登录到主服务器3308 | 3309 | 3310 |的客户端
[root@2snqobz5vv1d7s bin]# cd /program/mysql-5.7.20/bin/
./mysql -uroot -p -P3308 -h127.0.0.1
./mysql -uroot -p -P3309 -h127.0.0.1
./mysql -uroot -p -P3310 -h127.0.0.1
(1)、查看主服务器状态
mysql> show slave status;
(2)、如果从服务器不是初始状态,建议重置一下
stop slave; # 停止复制,相当于终止从服务器上的IO和SQL线程
reset slave;
(3)、设置从服务器的master
在从服务器客户端执行
注意:以下参数根据4.1相关信息而定
mysql> change master to master_host='192.168.16.63', master_port=3307,master_user='copy',master_password='123456',master_log_file='master-log.000001',master_log_pos=154;
mysql> flush privileges;
(4)、在从机器上执行开始复制命令
mysql> start slave;
mysql> flush privileges;
(5)、查看主服务器状态
mysql> show slave status;