一、准备数据
二、pg0.zhipenghe.com上的二进制日志开启
[root@pg0 ~]# vim /etc/my.cnf
[mysqld]
log_bin //开启二进制日志
server_id=1 //数据库id设置为1,每一台数据库id不能相同
三、创建复制数据用户
mysql> grant replication slave,replication client on *.* to 'rep'@'192.168.100.%' identified by 'Xyz@123456';
四、主服务器备份
有关备份请参阅:数据库备份
[root@pg0 ~]# mysqldump -p'Xyz@123456' --all-databases \
> --single-transacation \
> --master-data=2 \
> --flush-logs \
> >`date +%F`-mysql-all.sql
[root@pg0 ~]# ls
2021-05-16-mysql-all.sql
五、将备份文件拷贝到从服务器上
[root@pg0 ~]# scp -r 2021-05-16-mysql-all.sql pg1.zhipenghe.com:/tmp
观察二进制日志分割点
[root@pg0 ~]# vim 2020-05-16-mysql-all.sql
六、更新主服务器数据
mysql> insert into class.y2101 values (9,"JH",26,'1');
mysql> insert into class.y2101 values (10,"GW",19,'0');
一、检查rep用户是否可用
[root@pg1 ~]# mysql -h pg0.zhipenghe.com -urep -p'Xyz@123456'
二、启动服务器序号
[root@pg1 ~]# vim /etc/my.cnf
[mysql]
server_id=2
[root@pg1 ~]# systemctl restart mysqld //重启服务是否正常
三、手动同步数据
mysql> set sql_log_bin=0
mysql> source /tmp/2021-05-16-mysql-all.sql
四、设置主服务器
mysql> change master to master_host='pg0.zhipenghe.com', //主服务器主机名
-> master_user='rep', //拷贝使用的用户
-> master_password='Xyz@123456', //密码
-> master_log_file='pg0-bin.000002', //从哪儿开始考
-> master_log_pos=154; //日志裁断的节点
mysql> start slave; //启动从设备
mysql> show slave status\G; //查看主服务器状态
如果查看到以下两行显示YES表示设置成功了
五、测试
在主服务器上更新数据,到从服务器查看
前面步骤与手动基本一毛一样
只需要在主和从的/etc/my.cnf配置文件中加入以下行数据:
[mysqld]
...
gtid_mode=ON //强制开启Gtid
enforce_gtid_consistency=1 //自动协商id
在设置主服务器的时候将代码改为
mysql> change master to master_host='pg0.zhipenghe.com',
-> master_user='rep',
-> master_password='Xyz@123456',
-> master_auto_position=1; //自动进行日志位置的记录
设置完成之后就可以进行测试了
一、在pg1上进行授权
mysql> grant replication slave,replication client on *.* to 'rep'@'192.168.100.%' identified by 'Xyz@123456';
mysql> flush privileges;
二、设置pg0的主服务器
mysql> change master to master_host='pg1.zhipenghe.com',
-> master_user='rep',
-> master_password='Xyz@123456',
-> master_auto_position=1;
mysql> start slave;
mysql> show slave status\G;
三、测试
在pg0上插入数据在pg1上查看
在pg1上插入数据在pg0上查看
注意:这时还需要开启pg1上的二进制日志记录才能成功
一、同步现有数据库
[root@pg0 ~]# mysqldump -p'Xyz@123456' \
> --all-databases \
> --master-data=2 \
> --flush-logs \
> > `date +%F`-mysql-all.sql
[root@pg0 ~]# scp -r 2021-05-17-mysql-all.sql pg2.zhipenghe.com:/tmp
[root@pg0 ~]# scp -r 2021-05-17-mysql-all.sql pg3.zhipenghe.com:/tmp
[root@pg2 ~]# mysql -p'Xyz@123456' < /tmp/2021-05-17-mysql-all.sql
[root@pg3 ~]# mysql -p'Xyz@123456' < /tmp/2021-05-17-mysql-all.sql
二、启动从服务器id、gtid
[root@pg2 ~]vim /etc/my.cnf
[mysqld]
server-id=3
gtid_mode=ON
enforce_gtid_consistency=1
master-info-repository=TABLE //把主的信息存在表里,安全
relay-log-info-repository=TABLE //把中继日志也存在表里,安全
[root@pg2 ~]# systemctl restart mysqld
[root@pg3 ~]# vim /etc/my.cnf
[mysqld]
server-id=4
gtid_mode=ON
enforce_gtid_consistency=1
master-info-repository=TABLE //把主的信息存在表里,安全
relay-log-info-repository=TABLE //把中继日志也存在表里,安全
[root@pg3 ~]# systemctl restart mysqld
三、设置主服务器
mysql> change master to master_host='pg0',
-> master_user='rep',
-> master_password='Xyz@123456',
-> master_auto_position=1
-> for channel 'pg0.zhipenghe.com'; //第一条通道
mysql> change master to master_host='pg1',
-> master_user='rep',
-> master_password='Xyz@123456',
-> master_auto_position=1
-> for channel 'pg1.zhipenghe.com'; //第二条通道
mysql> start slave;
mysql> show slave status\G;
mysql> change master to master_host='pg0',
-> master_user='rep',
-> master_password='Xyz@123456',
-> master_auto_position=1
-> for channel 'pg0.zhipenghe.com'; //第一条通道
mysql> change master to master_host='pg1',
-> master_user='rep',
-> master_password='Xyz@123456',
-> master_auto_position=1
-> for channel 'pg1.zhipenghe.com'; //第二条通道
mysql> start slave;
mysql> show slave status\G;
四、测试