此博文用于记录,不建议各位大佬进行参考,在此提示 此博文用于记录,不建议各位大佬进行参考,在此提示 此博文用于记录,不建议各位大佬进行参考,在此提示
1、主服务器配置
#开启二进制日志
[root@mysql ~]# vim /etc/my.cnf
log_bin=mysql-bin
server-id=1
#赋予权限使之可以主从复制
mysql> grant replication slave on *.* to bak@'192.168.171.%' identified by '123';
mysql> show master status; 查看主服务器的结束位,一会需要在从服务器上指定从哪里开始复制主
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 448 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2、从服务器配置
#开启中继日志
[root@mysql ~]# vim /etc/my.cnf
relay_log=relay-bin
relay_log_index=slave-relay-bin
server-id=2
mysql> change master to master_host='192.168.171.135',master_user='bak',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=448;
#各选项含义:
master_host:主服务器IP
master_user:连接主服务器所使用的用户
master_password:连接主服务器所使用的用户的密码
master_log_file:指定二进制日志文件
master_log_pos:指定从哪开始复制
#启动slave
mysql> start slave;
#检验是否配置成功
mysql> show slave status\G # 输出结果如下图
那么,怎么去解决呢,造成这种正在连接的情况有很多,有可能是防火墙策略设置报错,也有可能是配置报错,检查一番后发现是MySQL服务器的UUID相同报错,这时才想起来我从服务器是克隆主服务器的(流汗、、、)
#主服务器上查看UUID
[root@mysql ~]# cat /usr/local/mysql/data/auto.cnf
[auto]
server-uuid=b106295b-25e7-11ea-b876-000c29d8c6ad
#从服务器上查看UUID
[root@mysql data]# pwd
/usr/local/mysql/data
[root@mysql data]# cat auto.cnf # 查完之后发现,沃德天,好神奇
[auto]
server-uuid=b106295b-25e7-11ea-b876-000c29d8c6ad
#那么怎么切换UUID呢,可以直接vim进入修改,也可以简单粗暴一点直接删除,再次重启MySQL会重新生成一个
[root@mysql data]# rm -rf auto.cnf # 删除
[root@mysql data]# systemctl restart mysqld
[root@mysql data]# cat auto.cnf # 这就对了,两个UUID不相同
[auto]
server-uuid=b56c5475-b0b0-11ea-81e0-000c2987dda6
再次查看主从复制状态,如下图
接下来就可以插入一些数据进行验证了 做完之后,当master插入数据后,slave会直接复制数据,而slave写入数据,master却无任何反应