- 配置MySQL主从一定要先备份还原,因为我是自己的测试环境,没有多少数据,所以直接用mysqldump -uroot -p --all-databases -B > filename.sql备份就好了。然后在从服务器上还原,mysqldump -uroot -p < filename.sql。
如果是在正式环境上做备份,推荐使用innobackupex。
- 备份完之后在主服务器上添加从服务器连接所需要的账号
grant replication client ,replication slave on *.* to slave@'%' identified by '****';
flush privileges;
- 在主从上都执行:
set global ENFORCE_GTID_CONSISTENCY = WARN;
set global ENFORCE_GTID_CONSISTENCY = ON;
set global GTID_MODE = OFF_PERMISSIVE;
set global GTID_MODE = ON_PERMISSIVE;
set global GTID_MODE = ON;
- 在从服务器上执行:
CHANGE MASTER TO
MASTER_HOST='192.168.72.72', # 主服务器IP
MASTER_USER='slave', # 上面创建的账号
MASTER_PASSWORD='slave',
MASTER_PORT=6006, # 主服务器端口
MASTER_AUTO_POSITION = 1;
至此,主从应该就搭建好了,执行show slave status; 看到下面两个Yes就行了
再说几个我遇到的问题吧
- 我的第二台机子是在VMware上直接复制的,所以导致两个MySQL的uuid是一样的。uuid存在MySQL的data目录下的auto.cnf文件下,可以直接mv auto.cnf auto.cnf.bak,然后重启MySQL就会重新生成一个。
- server_id相同,server_id可以在MySQL的配置文件中配置,也可以set global server_id=***; 但是这是临时的,重启MySQL就会失效。
我的配置文件里面明明之前就配置了,但是没起效果,只好set了一下,去网上看都说写在配置文件里的[mysqld]下就好了,我的原本也在mysqld下,但是没起效果。大家如果知道原因的希望告知,谢谢啦。
这种配置的主从重启之后也会失效,在自己测试环境下要注意。在正式环境下一般也不会重启那么勤。