M-S
主服务器:master1
第一步:打开bin-log日志,设置如下:
vim /etc/my.cnf
log_bin
server-id=1
gtid_mode=ON
enforce_gtid_consistency=1
第二步:进入数据库授权用户
mysql -uroot -p'密码'
grant replication slave,replication client no . to 'rep'@'域名' identified by '密码';
flush privileges;
查看slave状态是否正常:
show slave status\;
第三步:复制
cd
mysqldump -uroot -p'密码' \
-A \
--single-transaction \
--master-data=2 \
--flush-logs \

./date +%F-all.sql
scp ./-all.sql 域名:/root
从服务器:master2
第一步:回复之前的数据
mysql -uroot -p'密码'
set sql_log_bin=0;
source /root/
all.sql;
第二步:设置主服务器
change master to
master_host='master1',
master_user='rep',
master_password='密码',
master_auto_position=1;
注意;如果设置错误后可以这样处理————>> stop slave; reset slave ; OK以后就可以从新在配置一遍,完好start slave ;即可。
第三步:启动slave;
start slave;
查看状态
show slave status\G;

注意这是接着上一个实验的升级:
如果是做成M-M 的话,只需要把上面主服务器上设置一下从服务器的配置即可
mysql -uroot -p'密码'
change master to
master_host='master2',
master_user='rep',
master_password='密码',
master_auto_position=1;
启动slave;
start slave;
查看状态
show slave status\G;

继续上面的实验环境接着往下完成:
首先去其中任意一个主服务器上备份一个元数据,完好通过scp 分别拷贝到另外两台从服务器上,接下来对从服务器做如下操作:
第一步:关闭selinux 关闭firewalld
第二步:设置/etc/my.cnf中添加
server-id=3
gtid_mode=ON
enforce_gtid_consistency=1
master_info_repository=TABLE
relay_log_info_repository=TABLE
第三步:重启mysqld
S-S
登录mysql
进去第一件事就是 把主服务器上发过来的数据恢复:
set sql_log_bin=0;
source 后面更上要恢复的文件路径及名称;
OK以后,接下来配置它的slave:
change master to
master_host='master1'(这里写主服务器的域名)
master_user='rep'(这里写主服务器上授权的用户名)
master_password='123'(这里写主服务器上授权的密码)
master_auto_position=1 for channel 'master1'(这里的名字可以自定义);
OK以后,如果你有多个主服务器可以在做一次:
change master to
master_host='master2'(这里写主服务器的域名)
master_user='rep'(这里写主服务器上授权的用户名)
master_password='123'(这里写主服务器上授权的密码)
master_auto_position=1 for channel 'master1'(这里的名字可以自定义);

这个技术的常见问题点有如下三点:
/etc/selinux/config 中没有关掉selinux
/etc/my.cnf 中没有打开二进制文件
firewalld没有关掉。
如果另外一台机器是克隆来的话,就是uuid相同的问题,只需要到
/var/lib/mysql/auto.cnf 中把它的uuid 改成与其它机器不同即可.