人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

MySQL 5.6主從報錯的實戰(zhàn)記錄

發(fā)布日期:2022-02-18 16:12 | 文章來源:站長之家

1. 問題現(xiàn)象

版本:MySQL 5.6,采用傳統(tǒng) binlog file & pos 方式配置的主從復(fù)制結(jié)構(gòu)。

實例重啟后,主從復(fù)制報錯如上圖所示。

2. 錯誤含義

錯誤分為2部分。

第一部分

  • Client requested master to start replication from position > file size;
  • the first event 'mysql-bin.000398' at 163800795,the last event read from './mysql-binlog.000398' at 4,the last byte read from './mysql-bin.000398' at 4'

第一部分

這部分來源于主庫的DUMP線程函數(shù)

mysql_binlog_send
 ->sender.run()
  ->Binlog_sender::init
    ->Binlog_sender::check_start_file
 if ((file= open_binlog_file(&cache, m_linfo.log_file_name, &errmsg)) < 0) 
 {
  set_fatal_error(errmsg);
  return 1;
 }
 size= my_b_filelength(&cache);
 end_io_cache(&cache);
 mysql_file_close(file, MYF(MY_WME));
 if (m_start_pos > size)
 {
  set_fatal_error("Client requested master to start replication from "
          "position > file size");
  return 1;
 }

關(guān)鍵就是m_start_pos和size兩個值,其中m_start_pos來源于從庫需要讀取的位點。而size則是本binlog文件的大小,那么很容易理解如果io線程需要的pos點比本binlog文件的大小還要大,那么自然不對。

第二部分

這部分也來源于DUMP線程

mysql_binlog_send
 ->sender.run()
   ->Binlog_sender::init
   ->while (!has_error() && !m_thd->killed)
   #如果正常這里開始循環(huán)讀取binlog event,如果前面出錯則直接繼續(xù)后面邏輯
   #如果有讀取錯誤則報錯
    my_snprintf(error_text, sizeof(error_text),
         "%s; the first event '%s' at %lld, "
         "the last event read from '%s' at %lld, "
         "the last byte read from '%s' at %lld.",
         m_errmsg,
         m_start_file, m_start_pos, m_last_file, m_last_pos,
         log_file, my_b_tell(&log_cache));

這里我們主要看看m_start_pos和m_last_pos,實際上m_start_pos就是和前面報錯一致的來自從庫需要讀取的位點信息,而m_last_pos來自dump線程,就是最后讀取的位置,顯然這里一次都沒有讀取,因此位置為最開始的pos 4。

3. 可能的原因

分析后覺得最有可能原因應(yīng)該和sync_binlog 有關(guān)。

如果我們沒有設(shè)置為1,那么可能os cache沒有刷盤,如果主庫服務(wù)器直接crash重啟很容易就遇到這種問題。

稍微google查詢了一下發(fā)現(xiàn)很大部分出現(xiàn)這種錯誤都是由于服務(wù)器crash且sync_binlog 沒設(shè)置為 1導(dǎo)致的。

這也證明我們的說法。

最后查看問題數(shù)據(jù)庫的主庫確實沒有設(shè)置為雙1。

那么通過這個小案例,我們已經(jīng)更加深刻體會到設(shè)置雙1的重要性。

總結(jié)

到此這篇關(guān)于MySQL 5.6主從報錯的文章就介紹到這了,更多相關(guān)MySQL5.6主從報錯內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

美國穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部