使用reset slave命令解决:
mysql> reset slave; #重置salve
Query OK, 0 rows affected (0.01 sec)
mysql> start slave; #再次启动同步进程
2.gtid相同的错误
错误状态
mysql> show slave staus;
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.
分析:这是用于虚拟机克隆或数据库简单复制安装导致的gtid相同,从而无法同步。
解决方法:
重命名从库的gtid文件
mv /data/mysql/auto.cnf /data/mysql/auto.cnf.bk ###重命名该文件
重启mysql会重新生成auto.cnf
再重新同步
五、主从同步优化建议
1.从库尽量不要写入数据
对于需要保证master-slave主从同步的salve库,如果要设置为只读状态,需要执行的命令为:
mysql> set global read_only=1; #重启服务后会失效
或者在配置文件总添加read_only=1
2.主库迁移时也不能写入数据
read_only=1只读模式,可以限定普通用户进行数据修改的操作,但
不会限定具有super权限的用户的数据修改操作;在MySQL中设置read_only=1后,普通
的应用用户进行insert、update、delete等会产生数据变化的DML操作时,都会报出数
据库处于只读模式不能发生数据变化的错误,但具有super权限的用户,例如在本地或
远程通过root用户登录到数据库,还是可以进行数据变化的DML操作;
为了确保所有用户,包括具有super权限的用户也不能进行读写操作,就需要执行给所
有的表加读锁的命令 “flush tables with read lock;”,这样使用具有super权限的用
户登录数据库,想要发生数据变化的操作时,也会提示表被锁定不能修改的报错。
这样通过 设置“read_only=1”和“flush tables with read lock;”两条命令,就可以确
保数据库处于只读模式,不会发生任何数据改变,在MySQL进行数据库迁移时,限定master主库不能有任何数据变化,就可以通过这种方式来设定。
设置方法:
mysql> flush tables with read lock;
mysql> set global read_only=1;
mysql> show global variables like "%read_only%";
将MySQL从只读设置为读写状态的命令:
mysql> unlock tables;
mysql> set global read_only=0;
注意:主库只读操作不要修改配置文件,因为只是临时性操作,维护完后仍然要进行读写操作。
(责任编辑:liangzh) |