MySQL 5.6 マスタースレーブエラー報告の実践記録

MySQL 5.6 マスタースレーブエラー報告の実践記録

1. 問題の症状

バージョン: MySQL 5.6、従来の binlog ファイルと pos 方式を使用して構成されたマスター/スレーブ レプリケーション構造を使用します。

インスタンスが再起動されると、マスター-スレーブ レプリケーション エラーが上図のように表示されます。

2. エラーの意味

エラーは2つの部分に分かれています。

パート1

  • クライアントは、ファイル サイズより大きい位置からレプリケーションを開始するようにマスターに要求しました。
  • 最初のイベント 'mysql-bin.000398' は 163800795 で、最後のイベントは './mysql-binlog.000398' から 4 で読み取られ、最後のバイトは './mysql-bin.000398' から 4 で読み取られました。

パート1

この部分はメインライブラリのDUMPスレッド関数から来ています

mysql_binlog_send
 ->送信者.run()
  ->Binlog_sender::init
    ->Binlog_sender::check_start_file

 ((ファイル = open_binlog_file(&cache, m_linfo.log_file_name, &errmsg)) < 0)の場合 
 {
  致命的なエラーを設定します。
  1 を返します。
 }

 サイズ = my_b_filelength(&cache);
 end_io_cache(&cache);
 mysql_file_close(ファイル、MYF(MY_WME));

 (m_start_pos > サイズ)の場合
 {
  set_fatal_error("クライアントがマスターにレプリケーションの開始を要求しました"
          "位置 > ファイルサイズ");
  1 を返します。
 }

キーとなるのは 2 つの値 m_start_pos と size です。m_start_pos はライブラリから読み取る必要がある位置から取得されます。そして、size はこの binlog ファイルのサイズなので、IO スレッドに必要な POS ポイントがこの binlog ファイルのサイズより大きい場合は当然間違っていることが容易に理解できます。

パート2

この部分もDUMPスレッドから来ています

mysql_binlog_send
 ->送信者.run()
   ->Binlog_sender::init
   ->while (!has_error() && !m_thd->killed)
   #正常であれば、ここでループを開始し、binlog イベントを読み取ります。エラーがある場合は、次のロジックを続行します。#読み取りエラーがある場合は、エラーを報告します my_snprintf(error_text, sizeof(error_text),
         "%s; %lld の最初のイベント '%s'、"
         "%lld に '%s' から読み取られた最後のイベント"
         "%lld で '%s' から読み取られた最後のバイト。",
         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 はダンプ スレッドから取得され、最後に読み取られた位置です。明らかに、ここでは一度も読み取られていないため、位置は初期位置 4 です。

3. 考えられる原因

分析の結果、最も可能性の高い理由は sync_binlog に関連していると思われます。

1 に設定しないと、OS キャッシュがディスクにフラッシュされない可能性があります。メイン ライブラリ サーバーがクラッシュして直接再起動すると、この問題が簡単に発生する可能性があります。

簡単に Google 検索してみたところ、これらのエラーのほとんどは、サーバーのクラッシュと sync_binlog が 1 に設定されていないことが原因であることがわかりました。

これも私たちの主張を証明しています。

最後に、問題のあるデータベースのメイン データベースが実際に double 1 に設定されていないことを確認しました。

この小さな事例を通じて、ダブル 1 を設定することの重要性をより深く認識しました。

要約する

これで、MySQL 5.6 マスター スレーブ エラー レポートに関するこの記事は終了です。MySQL 5.6 マスター スレーブ エラー レポートに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL5.6 マスタースレーブレプリケーション同期詳細設定(画像とテキスト)
  • MySQL5.6 データベースのマスタースレーブ同期のインストールと構成の詳細 (マスター/スレーブ)
  • MySQL5.6 レプリケーション マスタースレーブレプリケーション(読み書き分離)構成 完全版
  • MySQL5.6 マスタースレーブレプリケーション (mysql データ同期構成)
  • MySQL 5.6.14 マスタースレーブレプリケーション(MySQL ABレプリケーションとも呼ばれる)環境設定方法
  • MYSQL5.6.33 データベース マスター/スレーブ (マスター/スレーブ) 同期のインストールと構成の詳細 (マスター-Linux スレーブ-windows7)

<<:  jQuery キャンバスで画像検証コード例を描画する

>>:  CSS @font-face パフォーマンス最適化の詳細な理解

推薦する

Linux でのマルチスレッドプログラミング例の分析

1 はじめにスレッド技術は 1960 年代にすでに提案されていましたが、マルチスレッドがオペレーティ...

MySQL DML言語操作例

追加説明、外部キー: 外部キーを使用しないでください。すべての外部キーの概念はアプリケーション層で解...

Linux でジャンクファイルをエレガントに削除する方法

あなたも私と同じように、コンピューターのファイルを整然と整理し、不要なファイルを適宜削除するプログラ...

CentOS の Nginx 公式 Yum ソースの設定を詳しく解説

私はプロジェクトの展開にAlibaba Cloudから購入したCentOSを使用しています。最近、プ...

Angular の 12 の典型的な問題について簡単に説明します

目次1. Angular 2 アプリケーションのライフサイクル フックとは何ですか? 2. Angu...

MySQL でコミットされていないトランザクションを見つけるための SQL の例の簡単な分析

以前、「MySQL でコミットされていないトランザクション情報を検索する方法」というタイトルのブログ...

フレックスレイアウトでコンテナ内のコンテンツを維持するためのソリューションの詳細な説明

モバイル側では、フレックスレイアウトが非常に便利です。デバイスの幅に応じてコンテナの幅を自動的に調整...

MySQL で null を置き換える IFNULL() および COALESCE() 関数の詳細な説明

MySQLではisnull()関数をnull値の代わりとして使用することはできません。次のように:ま...

クールなネオンライト効果を実現する純粋な CSS (デモ付き)

私は最近、YouTube の CSS アニメーション効果チュートリアル シリーズをフォローしています...

JavaScript の async と await のシンプルで詳細な学習

目次1. はじめに2. 詳しい説明2.1、非同期2.1.1. 関数はPromise以外のオブジェクト...

Raspberry Pi 4 に Ubuntu 19.10 をインストールするための詳細なチュートリアル

以前、raspbian で実行したときに opencv の一部の依存関係をパッケージ化できず、一部の...

MySQLの日次統計レポートでは、その日にデータがない場合には0が入力されます。

1. 問題の再現:各日の合計数を日ごとにカウントします。データのない日がある場合、グループ化によっ...

Dockerのデフォルトネットワークセグメントを変更する実装方法の分析

背景同社のサーバーはすべて Alibaba Cloud ECS ホストを購入しています。デフォルトの...

MySQL インデックスの正しい使い方とインデックスの原理の詳細な説明

1. はじめになぜインデックスが必要なのでしょうか?一般的なアプリケーション システムでは、読み取り...

MySQL 8の新機能におけるグローバルパラメータの永続性の詳細な説明

目次序文グローバルパラメータの永続性最後に要約する参考資料:序文2018 年に MySQL 8.0....