校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > MySQL 5.6主從報錯的實戰記錄

MySQL 5.6主從報錯的實戰記錄

熱門標簽:南昌三維地圖標注 怎樣在地圖標注銷售區域 武漢網絡外呼系統服務商 曲靖移動外呼系統公司 電話外呼系統改號 地圖標注費用是多少 啥是企業400電話辦理 外呼系統打電話上限是多少 百應電話機器人優勢

1. 問題現象

版本:MySQL 5.6,采用傳統 binlog file pos 方式配置的主從復制結構。

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

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線程函數

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;
 }

關鍵就是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)
   #如果正常這里開始循環讀取binlog event,如果前面出錯則直接繼續后面邏輯
   #如果有讀取錯誤則報錯
    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. 可能的原因

分析后覺得最有可能原因應該和sync_binlog 有關。

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

稍微google查詢了一下發現很大部分出現這種錯誤都是由于服務器crash且sync_binlog 沒設置為 1導致的。

這也證明我們的說法。

最后查看問題數據庫的主庫確實沒有設置為雙1。

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

總結

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

您可能感興趣的文章:
  • mysql5.6 主從復制同步詳細配置(圖文)
  • MySQL5.6 數據庫主從同步安裝與配置詳解(Master/Slave)
  • MySQL5.6 Replication主從復制(讀寫分離) 配置完整版
  • MySQL5.6主從復制(mysql數據同步配置)
  • mysql 5.6.14主從復制(也稱mysql AB復制)環境配置方法
  • MYSQL5.6.33數據庫主從(Master/Slave)同步安裝與配置詳解(Master-Linux Slave-windows7)

標簽:吉林 黑河 錦州 資陽 甘南 隨州 滄州 荊州

巨人網絡通訊聲明:本文標題《MySQL 5.6主從報錯的實戰記錄》,本文關鍵詞  MySQL,5.6,主從,報,錯的,實戰,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL 5.6主從報錯的實戰記錄》相關的同類信息!
  • 本頁收集關于MySQL 5.6主從報錯的實戰記錄的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 北流市| 乌兰浩特市| 怀宁县| 广南县| 克东县| 米脂县| 西贡区| 汉中市| 集安市| 高邑县| 海林市| 潼关县| 弥渡县| 确山县| 漯河市| 冷水江市| 津市市| 广丰县| 江口县| 梅州市| 东乌| 竹溪县| 托克托县| 山阳县| 嘉荫县| 仪征市| 日喀则市| 阿城市| 阜阳市| 洛阳市| 新建县| 丰台区| 农安县| 平泉县| 泊头市| 玉溪市| 汝阳县| 游戏| 福州市| 美姑县| 阜城县|