MySQL主从同步数据库配置

2019-04-18 wjy329 MySQL 3

准备工作:两台安装MySQL的服务器(这里是虚拟机啦)


如上图所示,我这里是两台虚拟机:
主ip:172.16.106.130
从ip:172.16.106.131

开始配置:

1.主服务器配置:
/etc/my.cnf中开启二进制日志:
vim /etc/my.cnf
添加 
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index


然后在主数据库中执行show master status;查看master的状态:


然后在主数据库中执行create user wjy329;创建wjy329角色
然后执行 GRANT REPLICATION SLAVE ON *.* TO 'wjy329'@'172.16.106.131' IDENTIFIED BY 'mysql';
执行 flush privileges; 刷新权限

2.从服务器配置:

在/etc/my.cnf中开启二进制日志:
vim /etc/my.cnf
添加 
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin


在从数据库中执行 change master to matser_host="172.16.106.130",master_port=3306,master_user='wjy329',master_password='mysql',master_log_file='master-bin.000002',master_log_pos=0;
然后执行 start slave;
开启slave,再执行show slave status\G;可以查看slave的状态,如图所示,表示配置成功,正等待主服务器发送事件。


这时我们在主数据库中,执行一些创建的命令,验证是否配置成功,这里我们新建一个数据库来判断。
在主服务器中,执行 create database wjy329;
然后查看创建的数据库,发现创建成功。从服务器中也创建了成功,主从同步配置完成。



可能出现的错误:

在从数据库中,执行 show slave status;


可在Last_SQL_Error这一项看到错误提示;
1.Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
这个是server-id重复了;
解决办法:vim /etc/my.cnf中修改server-id,主从不一样即可;
2.Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
these UUIDs must be different for replication to work.
这个是UUIDs重复,重复的原因可能是虚拟机是复制的,导致已安装的MySQL是相同的
解决办法:在mysql中执行show variables like 'datadir';查看auto.cnf 文件的位置,然后删掉后,重启mysql服务即可自动生成新的auto.cnf,UUIDs也就不一样了。
本文作者:wjy329
版权声明:本博客除特殊说明外均属本人原创。如需转载请署名作者及文章出处。
评论