Heim  >  Artikel  >  Datenbank  >  MySQL数据库主从不同步的解决方法

MySQL数据库主从不同步的解决方法

WBOY
WBOYOriginal
2016-06-07 14:59:17982Durchsuche

故障描述: 进入从数据库 mysqlgt; show slave status\G; 结果如下: ... Slave_IO_Running: Yes Slave_SQL_Running: No Last_E

故障描述:

进入从数据库

mysql> show slave status\G;

结果如下:

...

Slave_IO_Running: Yes

Slave_SQL_Running: No

Last_Errno: 1062

...

原因:

1.程序可能在slave上进行了写操作

2.可能是slave机器重启后,事物回滚造成的

多数是第二种造成的

解决方法一:忽略错误后继续同步

该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;

解决方法二:强制性从某一个点开始同步

此方法会有部分没有同步的数据丢失,后续主服务器上删除记录同步也会有一些错误信息,不会影响使用

到主服务器上查看主机状态:
记录File和Position对应的值。
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000021 | 135617782 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)

3.到slave服务器上执行手动同步:
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3307,
> master_log_file='mysql-bin.000021',
> master_log_pos=135617782;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)
再次查看slave状态发现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0

解决方法三:重新做主从,完全同步

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

1.进入主库,进行数据备份


mysqldump -u root -p --opt --master-data --single-transaction -B  > mysql.bak.sql

2.把mysql备份文件传到从库上,导入从库

mysql > stop slave;

mysql -u root -p

3. 从备份文件中找到file和position

grep -i "CHANGE MASTER TO" mysql.bak.sql会得到以下类似内容:

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000021', MASTER_LOG_POS=135617782;

4.设置从库同步

mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3307,
> master_log_file='mysql-bin.000021',
> master_log_pos=135617782;

mysql> slave start;
1 row in set (0.00 sec)
再次查看slave状态发现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0

本文永久更新链接地址

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn