mysql双方数据库不同步的解决方法.

来源:本站原创 Linux 超过15 views围观 0条评论

今天发现Mysql的主从数据库没有同步
 
先上Master库:
 
mysql>show processlist;   查看下进程是否Sleep太多。发现很正常。
show master status; 也正常。
 
mysql> show master status;
+——————-+———-+————–+——————————-+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB              |
+——————-+———-+————–+——————————-+
| mysqld-bin.000001 |     3260 |              | mysql,test,information_schema |
+——————-+———-+————–+——————————-+
1 row in set (0.00 sec)
 
再到Slave上查看
 
mysql> show slave status\G                                               
 
Slave_IO_Running: Yes
Slave_SQL_Running: No
 
可见是Slave不同步
 
下面介绍两种解决方法:
 
 
方法一:忽略错误后,继续同步
该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
 
解决:
stop slave;
 
#表示跳过一步错误,后面的数字可变
set global sql_slave_skip_counter =1;
start slave;
 
之后再用mysql> show slave status\G  查看:
 
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
 
ok,现在主从同步状态正常了。。。
 
 
方式二:重新做主从,完全同步
该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
 
解决步骤如下:
 
1.先进入主库,进行锁表,防止数据写入——————
 
使用命令:
 
mysql> flush tables with read lock;
 
 
MariaDB [mysql]> show processlist;  
+——-+————-+———————+——–+————-+——+———————————————————————–+——————————————————————————————————+———-+
| Id    | User        | Host                | db     | Command     | Time | State                                                                 | Info                                                                                                 | Progress |
+——-+————-+———————+——–+————-+——+———————————————————————–+——————————————————————————————————+———-+
| 74658 | root        | localhost:40986     | mysql  | Query       |    0 | NULL                                                                  | show processlist                                                                                     |    0.000 |
| 75092 | testmysql   | 172.16.11.104:55134 | test   | Query       |  545 | Waiting for global read lock ———-锁定—                                         | INSERT into vote_record_memory  (user_id,vote_id,group_id,create_time ) VALUEs (rand_string(20),FLOO |    0.000 |
+——-+————-+———————+——–+————-+——+———————————————————————–+——————————————————————————————————+———-+
9 rows in set (0.00 sec)

 
注意:该处是锁定为只读状态,语句不区分大小写
 
2.进行数据备份
 
#把数据备份到mysql.bak.sql文件
[root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql
这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失
3.查看master 状态
 
mysql> show master status;
+——————-+———-+————–+——————————-+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB              |
+——————-+———-+————–+——————————-+
| mysqld-bin.000001 |     3260 |              | mysql,test,information_schema |
+——————-+———-+————–+——————————-+
1 row in set (0.00 sec)
 
4.把mysql备份文件传到从库机器,进行数据恢复
 
#使用scp命令
[root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/
 
5.停止从库的状态
mysql> stop slave;
 
 
6.然后到从库执行mysql命令,导入数据备份
 
mysql> source /tmp/mysql.bak.sql
 
7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项
 
change master to master_host = ‘192.168.128.100’, master_user = ‘rsync’, master_port=3306, master_password=”, master_log_file = ‘mysqld-bin.000001’, master_log_pos=3260;
 
8.重新开启从同步
mysql> start slave;
 
9.查看同步状态
mysql> show slave status\G  查看:
 
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

回到主库 执行 UNLOCK TABLES;  解锁

MariaDB [mysql]> show processlist;  
+——-+————-+———————+——–+————-+——+———————————————————————–+——————————————————————————————————+———-+
| Id    | User        | Host                | db     | Command     | Time | State                                                                 | Info                                                                                                 | Progress |
+——-+————-+———————+——–+————-+——+———————————————————————–+——————————————————————————————————+———-+
| 74658 | root        | localhost:40986     | mysql  | Query       |    0 | NULL                                                                  | show processlist                                                                                     |    0.000 |
| 75058 | testmysql   | 172.16.11.104:55109 | NULL   | Sleep       | 2104 |                                                                       | NULL                                                                                                 |    0.000 |
| 75059 | testmysql   | 172.16.11.104:55110 | test   | Sleep       | 1092 |                                                                       | NULL                                                                                                 |    0.000 |
| 75092 | testmysql   | 172.16.11.104:55134 | test   | Sleep       |    1 |                                                                       | NULL                                                                                                 |    0.000 |
| 75111 | testmysql   | 172.16.11.104:55152 | test   | Sleep       |  538 |                                                                       | NULL                                                                                                 |    0.000 |
| 75147 | testmysql   | 172.16.11.104:55190 | test12 | Sleep       | 2057 |                                                                       | NULL                                                                                                 |    0.000 |
| 75647 | system user |                     | NULL   | Connect     |  598 | Waiting for master to send event                                      | NULL                                                                                                 |    0.000 |
| 75648 | system user |                     | test   | Connect     |  310 | update                                                                | INSERT INTO `vote_record` VALUES (238905,’IkhiupqKi6rKeO99971A’,524,35,’2017-09-28 09:12:55′),(23890 |    0.000 |
| 75804 | replication | 172.30.100.25:36592 | NULL   | Binlog Dump |  136 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL                                                                                                 |    0.000 |
+——-+————-+———————+——–+————-+——+———————————————————————–+——————————————————————————————————+———-+

 
好了,同步完成啦。

文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文链接:http://www.jdccie.com/?p=3581转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
  • 相关文章
  • 为您推荐
  • 各种观点