mysql主從不一致解決方法

 

方法一:忽略錯誤,同步

 

該方法適用於主從庫數據相差不大,或者要求數據可以不完全統一的情況,數據要求不嚴格的情況

 

解決: 

 

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;

 

 

注意:該處是鎖定爲只讀狀態,語句不區分大小寫

 

2.進行數據備份 

 

[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.000003 |     4563 |              | mysql,test,information_schema

|

+-------------------+----------+--------------+-------------------------------+

1

row in set (0.00 sec)

 

 

4.把mysql備份文件傳到從庫機器,進行數據恢復

 

[root@server01 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.1.1', master_user = 'repl',

master_port=3306, master_password='repldaba', master_log_file = 'mysqld-bin.000003',

master_log_pos=4563;

 

 

8.重新開啓從同步

 

mysql> start slave;

 

 

9.查看同步狀態

 

mysql> show slave status\G  查看:

 

Slave_IO_Running: Yes

 

Slave_SQL_Running: Yes

 

好了,同步完成啦。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章