日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
對(duì)MySQL數(shù)據(jù)庫(kù)復(fù)制中斷的處理

前言

創(chuàng)新互聯(lián)建站,為您提供成都網(wǎng)站建設(shè)、重慶網(wǎng)站制作、網(wǎng)站營(yíng)銷推廣、網(wǎng)站開(kāi)發(fā)設(shè)計(jì),對(duì)服務(wù)砂巖浮雕等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!

在復(fù)制中,有時(shí)會(huì)因?yàn)閺?fù)制報(bào)錯(cuò),而中斷復(fù)制。通常是因?yàn)橐粋€(gè)SQL語(yǔ)句在主庫(kù)執(zhí)行時(shí)是正常的,但同步到從庫(kù)時(shí),因?yàn)楦鞣N原因,找不到對(duì)應(yīng)的數(shù)據(jù),造成執(zhí)行SQL失敗,報(bào)出復(fù)制錯(cuò)誤。下面主要寫(xiě)了幾個(gè)常見(jiàn)的錯(cuò)誤。

復(fù)制中斷的情況和處理

復(fù)制中斷的情況:

  • 1062錯(cuò)誤:在寫(xiě)入數(shù)據(jù)使,從庫(kù)已存在了。多出現(xiàn)自增長(zhǎng)ID已存在。
  • 1032錯(cuò)誤:從庫(kù)出現(xiàn)少數(shù)據(jù),update、delete時(shí),找不到相應(yīng)的記錄。
  • 其他:DDL操作時(shí)報(bào)錯(cuò)

對(duì)這些情況的處理:

  • 遇到該問(wèn)題,要想到要怎樣滿足復(fù)制,而不是跳過(guò)該事務(wù);不建議跳過(guò)錯(cuò)誤,遇到錯(cuò)誤應(yīng)該修正過(guò)來(lái),再連接主庫(kù)復(fù)制,否則從庫(kù)的數(shù)據(jù)會(huì)越來(lái)越不一致!
  • 手工修復(fù)操作有些慢,可以針對(duì)1062和1032錯(cuò)誤,寫(xiě)一個(gè)自動(dòng)化監(jiān)控改正腳本。
  • 注意:若經(jīng)常數(shù)據(jù)不一致,選擇業(yè)務(wù)低峰期,檢驗(yàn)一次數(shù)據(jù)(pt-table-checksum),查看是否數(shù)據(jù)一致,若檢查出太多的數(shù)據(jù)不一致,該從庫(kù)就不可再用了,再創(chuàng)建一個(gè)從庫(kù)!

常見(jiàn)的復(fù)制錯(cuò)誤

【錯(cuò)誤碼-1062】

處理操作:

  • 處理這種情況,需要和業(yè)務(wù)協(xié)商,或在公司內(nèi)形成一個(gè)規(guī)定,遇到這種情況要怎樣做(在從庫(kù)將這條重復(fù)數(shù)據(jù)刪除還是補(bǔ)充到主庫(kù))。
  • 通常,在從庫(kù)刪除該條數(shù)據(jù),讓復(fù)制繼續(xù)進(jìn)行。
  • 使用pt-slave-restart來(lái)修復(fù)問(wèn)題,它會(huì)會(huì)跳過(guò)錯(cuò)誤,建議先處理錯(cuò)誤,才可以保證數(shù)據(jù)的一致性

具體操作:

  • 定位到該事物
    • 傳統(tǒng)復(fù)制:Exec_Master_Log_Pos 與 last_error中的end_log_pos 中間的事務(wù)
    • GTID復(fù)制:executed_gtid_set : xxxxx:1-5 ,即第6個(gè)事務(wù)報(bào)錯(cuò)了。
    • master:mysqlbinlog -vv --base64-output=decode-rows --start-position ……
  • 在slave上刪除該條數(shù)據(jù),然后連接復(fù)制
    • > set sql_log_bin=0; # 先禁止當(dāng)前會(huì)話的操作記錄寫(xiě)到binlog
    • > delete from xn_db.t_order_produce where id=35197;
    • > set sql_log_bin=1; # 恢復(fù)正常
    • > start slave sql_thread; # 啟動(dòng)SQL線程

【錯(cuò)誤碼-1032】

1032錯(cuò)誤 分為: update錯(cuò)誤 和 delete錯(cuò)誤。

update 處理操作:

  • 在主庫(kù)上獲取出來(lái)主鍵的值(不需要具體恢復(fù)出來(lái)),只要滿足SQL執(zhí)行成功即可。

update 具體操作:

  • 定位到該事物
    • 傳統(tǒng)復(fù)制:Exec_Master_Log_Pos 與 last_error中的end_log_pos 中間的事務(wù)
    • GTID復(fù)制:executed_gtid_set : xxxxx:1-5 ,即第6個(gè)事務(wù)報(bào)錯(cuò)了。
    • master:mysqlbinlog -vv --base64-output=decode-rows --start-position ……
  • 將沒(méi)有的數(shù)據(jù)創(chuàng)建出來(lái),只符合錯(cuò)誤事務(wù)執(zhí)行成功即可
    • > set sql_log_bin=0;
    • > insert into xn_db.t_mes(id) values(35592);
    • > set sql_log_bin=1;
    • > start slave sql_thread;

delete 處理操作:

  • 由于從庫(kù)沒(méi)有該數(shù)據(jù),致使刪除失敗,可以跳過(guò)該錯(cuò)誤,因?yàn)樘^(guò)該刪除事務(wù)相當(dāng)于不執(zhí)行該delete語(yǔ)句,和在從庫(kù)上沒(méi)執(zhí)行之前是一樣的,那些數(shù)據(jù)都不會(huì)存在于從庫(kù)中。

delete 具體操作:

  • 傳統(tǒng)復(fù)制:
    • > stop slave;
    • > set global sql_slave_skip_counter=1; # 跳過(guò)一個(gè)事務(wù)
    • > start slave;
  • GTID復(fù)制:
    • > stop slave;
    • > set gtid_net='xxxxx:6' # 跳過(guò)報(bào)錯(cuò)事務(wù)6
    • > begin;commit; # 執(zhí)行一個(gè)空事務(wù),即GTID為6的事務(wù)
    • > set gtid_next='AUTOMATIC';
    • > start salve;

當(dāng)前名稱:對(duì)MySQL數(shù)據(jù)庫(kù)復(fù)制中斷的處理
轉(zhuǎn)載源于:http://www.5511xx.com/article/dhdheie.html