中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 5.6主從報錯分析

發布時間:2021-03-15 11:11:11 來源:億速云 閱讀:142 作者:TREX 欄目:開發技術

本篇內容主要講解“MySQL 5.6主從報錯分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MySQL 5.6主從報錯分析”吧!

1. 問題現象

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

MySQL 5.6主從報錯分析

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

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主從報錯分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安图县| 孟津县| 永济市| 筠连县| 方城县| 通城县| 安溪县| 高邑县| 兴仁县| 阿坝| 芦溪县| 永寿县| 博白县| 吉木乃县| 宜良县| 平山县| 虹口区| 黑龙江省| 礼泉县| 花莲县| 日喀则市| 体育| 改则县| 聂荣县| 什邡市| 南阳市| 玉山县| 仙居县| 道真| 深圳市| 林口县| 合水县| 青田县| 昌平区| 东平县| 达拉特旗| 斗六市| 绥宁县| 嘉黎县| 濉溪县| 文昌市|