主从复制需要注意:
1、数据库版本必须一致
2、数据库名称必须一致 例如db888
3、配置主数据库开启二进制日志
4、主数据库、从数据库必须具有一个唯一的server-id
配置主从数据库复制:
一:操作主库
1、修改主库的配置文件
vi /etc/my.cnf
找到[mysqld] ,在下面新增
binlog-do-db=db888 //多个库同步用逗号隔开
binlog-ignore-db=mysql
log-bin=mysql-bin //启用二进制日志
server-id=94 //服务器唯一ID,一般取IP最后一段
2、重启mysql服务
systemctl restart mysqld
3、登录主服务器 mysql
mysql -uroot -p123
4、创建从服务器获取日志文件的账号
grant replication slave on *.* to 'backup'@'%' identified by '123456';
刷新权限
flush privileges;
5、查看主服务器状态
show master status;
注意:File 、 Position 很重要,记录下来,稍后配置从库的时候要用到
二:操作从库
1、修改从库的配置
vi /etc/my.cnf
[mysqld] 后面增加
server-id=95 //服务器唯一ID,一般取IP最后一段
2、重启mysql服务器
systemctl restart mysqld
3、登录从库 mysql
mysql -uroot -p123
4、配置从数据库挂载主库
mysql> change master to
-> master_host='10.10.13.94',
-> master_port=3306,
-> master_user='backup',
-> master_password='123456',
-> master_log_file='mysql-bin.000001', //主服务器最后记录下来的File 日志文件名称
-> master_log_pos=583; //主服务器最后记录下来的Position 进程号
5、启动从库
start slave;
6、查看主从复制状态
show slave status \G;
如果看到 Slave_IO_Running: Yes
Slave_SQL_Running: Yes
说明配置成功,操作数据库即可。
注:
错误处理:
如果出现此错误:
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.
因为是mysql是克隆的系统所以mysql的uuid是一样的,所以需要修改。
解决方法:
删除/var/lib/mysql/auto.cnf文件,重新启动服务