主服务器
创建用户
create user “for_rep”@“从服务器IP地址” IDENTIFIED by “123456”
授权
grant replication slave on . to “for_rep”@“从服务器IP地址” IDENTIFIED by “123456”
查看用户权限
SHOW GRANTS FOR “for_rep”@“从服务器IP地址”;
修改Mysql配置
vim /etc/my.cnf
log-bin=mysql-bin
binlog_format=mixed
server-id=1
read-only=0
binlog-do-db=db
auto-increment-increment=2
auto-increment-offset=1
重启数据库
查看主服务器信息
show master status\G
导出数据库SQL
mysqldump --master-data -uroot -p gongzuotai > /root/db.sql
从服务器
在从服务器创建数据库,并导入SQL
打开从服务器B的中继日志relay_log
vim /etc/my.cnf
log-bin=mysql-bin
binlog_format=mixed
server-id=2
replicate-do-db=db
relay_log=mysqld-relay-bin
log-slave-updates=ON
CHANGE MASTER TO master_host=‘主服务器IP地址’, master_user=‘for_rep’, master_password=‘123456’, master_log_file=‘mysql-bin.000001’, master_log_pos=154;
查看从服务器信息
show slave status\G
重启数据库
重启后发现第10步骤提示mysql Slave_IO_Running:NO
问题解决
查看从数据库的日志
tail /var/log/mysqld.log
发现如下报错:
The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
找到对应的 uuid 发现该文件为/var/lib/mysql/auto.cnf
vim /var/lib/mysql/auto.cnf
将里面uuid的值随便改一个即可
[auto]
server-uuid=ba32605a-fcf9-11ec-a2a5-000c2935b536
重启从数据库服务:
完事