mysql雙方數據庫不同步的解決方法.

來源:本站原創 Linux 超過563 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文件
[[email protected] 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命令
[[email protected] mysql]# scp mysql.bak.sql [email protected]:/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.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3581轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
?
?
萌宠夺宝游戏