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 で Scala 環境を構築し、簡単な Scala プログラムを書く

Linux に Scala 環境をインストールするのは非常に簡単です。Ubuntu 環境であれば、さ...

ウェブ音楽プレーヤーを実現する js

この記事では、参考までに簡単なHTMLと音楽プレーヤーの制作コードを紹介します。具体的な内容は以下の...

Navicat を MySQL に接続するときに発生する 2059 エラーの解決方法

最近、Djangoを学習しているときにデータベースを使用する必要があったため、MySQLで使用するた...

MySQLのテーブル構造を変更する際に知っておきたいメタデータロックの詳しい解説

序文MySQL を扱ったことがある人なら、テーブル メタデータ ロックの待機についてよく知っているは...

JavaScript が Xiaomi のカルーセル効果を模倣

この記事は、透明度を変えてカルーセルにするXiaomiカルーセルを真似て書いたものです。初心者なので...

MySQL ストレージエンジンの簡単な紹介

1. MySQL アーキテクチャストレージ エンジンを紹介する前に、まずは MySQL アーキテクチ...

ローカル画像サーバーのNginx構成の実装

目次1. Nginx の紹介2. 画像サーバーの構築1. Nginx の紹介Nginx はリバース ...

Maven+Tomcat 基本イメージを構築する Docker の実装

序文Javaプログラミングでは、ほとんどのアプリケーションはMavenに基づいて構築されており、配信...

MySQL データ分析ストレージエンジンの例の説明

目次1. 事例紹介2. システムのデフォルトのストレージエンジンとデフォルトの文字セットを表示する3...

Linuxパフォーマンス監視コマンドの簡単な紹介

システムでさまざまな IO ボトルネック、メモリ使用量の増加、CPU 使用率の増加などの問題が発生し...

Ubuntu 18.04 に MySQL をインストールする (グラフィカル チュートリアル)

ヒント: 以下の操作はすべて root 権限で実行されます。 # MySQL がインストールされてい...

MySQL ルートパスワードを変更する 4 つの方法 (要約)

方法1: SET PASSWORDコマンドを使用するまずMySQLにログインします。フォーマット: ...

Vueライフサイクル機能の詳細な説明

目次ライフサイクル関数一般的なライフサイクルフックVue のインスタンス破棄について:要約するライフ...

Vue.js の計算プロパティ、監視プロパティ、ライフサイクルの詳細な説明

目次序文計算されたプロパティ計算プロパティの紹介入門ケース統計価格事例ゲッターメソッドとセッターメソ...

MySQL インデックス プッシュダウンを 5 分で理解する

目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...