標籤:mysql 伺服器 主從 資料庫 master
問題說明:做了Mysql的主從,還沒做主從分離,導致同事在mysql從伺服器執行了寫入操作,引起不同步(show slave status\G;Slave_SQL_Running: No)
解決方案:
1,
Mysql > slave stop;Mysql > set global sql_slave_skip_counter =1 ;Mysql > slave start;Mysql > show slave status\G
因為插入的資料不止是1條,操作太慢且麻煩
2,
在主查詢show master status\G,再從這個點執行
change master to master_host=‘master_ip‘, master_user=‘user‘, master_password=‘pwd‘, master_port=3306, master_log_file=‘mysql-bin.00000*‘, master_log_pos=000000***;
資料會丟的更多。
因此,還是選擇第一種方法,不過set global sql_slave_skip_counter=500 把這個數值調大,一次跳過去500條,一直迴圈那4條語句,直到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
造成結果:這樣操作的結果是丟失一些資料,不過少點,另外其中某一個表不同步了(因為有跳過從本來應該執行的語句),接下來解決這個問題,選擇資料庫插入頻率很小的時候做,最好這時候不要有資料寫入,以免影響生產環境(下面只是舉例子說明解決步驟)
3,
用Navicat for MySQL登入主庫,下面操作都是在主庫進行
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/78/wKioL1PbMU_BkPRvAAMo-F26xnA808.jpg" title="QQ20140801141335.jpg" alt="wKioL1PbMU_BkPRvAAMo-F26xnA808.jpg" />
1,在主庫查詢“SELECT COUNT(*) FROM date.table;”知道現在這個表有多少行,作為最後驗證,選擇“複製表”,複製後的表名稱為 table_name_copy,複製的表資料也不會同步的
2,把複製的表匯出,選擇“轉儲SQL檔案----結構和資料”,儲存到硬碟上面
3,刪除這個複製的表table_name_copy。在資料庫右鍵選“運行SQL檔案”,把剛才匯出的資料再匯入進去
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/43/78/wKiom1PbMOzB1BAAAADB04jtqr4962.jpg" title="QQ20140801141335.jpg" alt="wKiom1PbMOzB1BAAAADB04jtqr4962.jpg" />
現在的結果是剛匯入的表table_name_copy主從肯定是同步的
4,關鍵的一步,繼續查主庫“SELECT COUNT(*) FROM date.table;” 看資料表有沒有寫入內容,如果沒有寫入,趕緊F2把table的名字改一下,3秒鐘時間
table_name(資料對,沒同步)改為table_name1
table_name_copy(趁著資料沒寫入table_name,已同步)改為table_name
再次“SELECT COUNT(*) FROM date.table;”查詢,看有沒有插入資料
5,總結,主從不同步會造成查詢的資料不一致,做這個動作之前要和用這個表的人商量,保證不出現意外。主從做好了,要麼做讀寫分離,要麼控制許可權,從只能查,沒其他許可權,這樣才不會出問題
本文出自 “一顆石頭 BBOTTE的部落格” 部落格,請務必保留此出處http://bbotte.blog.51cto.com/6205307/1533740