MySQL遅延スレーブを導入するメリットのまとめ

MySQL遅延スレーブを導入するメリットのまとめ

序文

MySQL のマスター/スレーブ レプリケーション関係は、厳密には「同期」または「マスター/スレーブ同期」と呼ばれます。実際、初期の MySQL のマスターとスレーブは、真の「同期」(sync) を実現できず、「非同期」(async) しか実現できませんでした。

MySQL のマスター スレーブ レプリケーションには複数のモードがあります。最も古典的で古いモードは非同期レプリケーション (async replication) です。バージョン 5.5 以降では半同期レプリケーション (semi-sync replication) が利用可能になり、バージョン 5.7 では強化された半同期レプリケーションが利用可能になりました。この記事で説明した遅延スレーブ ライブラリも、5.6 以降で利用できる機能です。それ以前は、percona pt-slave-delay ツールを使用して、隠して実装する必要があります。

さらに、バージョン 5.6 以降では並列レプリケーションが追加されましたが、依然としてスキーマベースの並列モード (slave-parallel-type=DATABASE) に基づいており、非常に非効率的で意味がありません。 5.7 では、真の並列レプリケーション (slave-parallel-type=LOGICAL_CLOCK) が実装され、レプリケーションの効率が大幅に向上しました。また、マルチソース レプリケーションも追加されたため、マルチマスターと 1 つのスレーブのアーキテクチャを実装するのが非常に便利になりました。

MySQL レプリケーションの簡単な歴史を理解した後、本題に入りましょう。

MySQL 遅延スレーブの利点は次のとおりです。

1. 誤ってデータを削除した場合でも、より早く復元できます。

場合によっては、ハンドシェイクにより、オンライン データが誤って削除されたり、データベース、テーブル、またはその他のオブジェクトが誤って削除されたり、WHERE 条件を追加せずに更新または削除が実行されたりすることがあります。これらはすべて、遅延スレーブ データベースを誤った操作の前の時点で停止させ、その後回復させる可能性があります。

2. 遅延スレーブを専用のバックアップノードとして使用します。ある程度の遅延はありますが、ノードをバックアップ ロールとして使用することには影響しません。また、実稼働ノードのデータベース ライブラリにも影響しません。

3. 遅延ライブラリを、いくつかの問題やケーススタディの対象として使用することもできます。場合によっては、一部の binlog イベントが通常のスレーブで問題を引き起こすことがあります (たとえば、プライマリ キーがないとスレーブの更新が非常に遅くなるという、初期バージョンの典型的な問題)。この場合、遅延スレーブについてゆっくりと調査および研究する時間があります。

遅延スレーブを有効にする方法も非常に簡単です。MySQL 8.0 でこれを行う方法は次のとおりです。

#CHANGE MASTER TOを直接使用して設定します。次のN単位は秒です。CHANGE MASTER TO MASTER_DELAY = N

エラーが発生し、遅延スレーブライブラリを特定の位置で停止する必要がある場合は、次のコマンドを使用します。

スレーブを開始
それまで {
#1. 指定されたGTID位置{SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_setまで停止します

#2. 指定されたバイナリログ位置まで停止する | MASTER_LOG_FILE = 'log_name'、MASTER_LOG_POS = log_pos

#3. 指定されたリレーログ位置まで停止する | RELAY_LOG_FILE = 'log_name'、RELAY_LOG_POS = log_pos

#4. スレーブ上の複数の並列スレッド間に遅延ギャップがなくなるまで停止します。#マルチスレッド レプリケーションのため、異なるスレッドのレプリケーションの進行状況は異なるため、ギャップが生じます | SQL_AFTER_MTS_GAPS }

PS、5.7 以降では、MASTER_DELAY オプションを変更すると、スレーブ スレッドを再起動せずにオンラインですぐに有効になります。

具体的な MASTER_DELAY 設定については、エラー発生時に DBA が現場に到着するまでにかかる平均時間を見積もる必要があります。一般的には 1 時間程度が推奨されます。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL のスレーブ データベースの遅延のトラブルシューティングに関するケース スタディ
  • MYSQL マスタースレーブ非同期遅延原理の分析と解決
  • MySQLマスタースレーブデータ同期遅延の削減の詳細な説明
  • MySQL のスレーブ レイテンシ問題を解決するための基本チュートリアル
  • スレーブ遅延が大きい MySQL 同期問題の最適化方法
  • MySQL 遅延関連付けパフォーマンス最適化方法
  • mySQL 遅延クエリ メインテーブル
  • MySQL マスタースレーブレプリケーション遅延問題の詳細な説明

<<:  CentOS 6.x のインストール時に発生するエラー「ディスク sda に BIOS RAID メタデータが含まれています」の解決方法

>>:  Vite2.0の落とし穴

推薦する

Ubuntu 18.04 は pyenv、pyenv-virtualenv、virtualenv、Numpy、SciPy、Pillow、Matplotlib をインストールします

1. 現在、Pythonのバージョン管理ツールは数多く存在します。その中でも比較的使いやすいのがPy...

MySQL サブクエリとグループ化されたクエリ

目次概要サブクエリサブクエリの分類クエリの結果によるとサブクエリの位置で区別する選択後のサブクエリサ...

MYSQLは、ショッピングカートに追加する際に重複追加を防ぐためのサンプルコードを実装します。

序文最近、仕事の都合で、APP ショッピングカートの注文支払いに取り組んでいました。テスト中にバグが...

Vueはマルチタブコンポーネントを実装します

効果を直接確認するために、リロード、左を閉じる、右を閉じる、その他の機能を閉じるなどの右クリック メ...

Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法

1. セットアップを始める次のコード関数を簡単に紹介します。 ref 関数を使用して変数の変更を監視...

Vue v-onディレクティブの使用について

目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...

Vue3 の使用 (パート 1) Vue CLI プロジェクトの作成

目次1. 公式ドキュメント2. Vue CLIプロジェクトを作成する1. Vue CLIをインストー...

iframe src 割り当ての問題 (サーバー側)

今日この問題に遭遇しました。サーバー側でiframeのsrc値を再割り当てし、iframeにIDを追...

メタ宣言注釈の手順

メタ宣言注釈の手順: 1. モバイル ページと 1 対 1 で対応するすべての PC ページを分類し...

ベースリンクタグの使用の紹介ベース

<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...

HTML テーブル マークアップ チュートリアル (40): ヘッダーの暗い境界線の色属性 BORDERCOLORDARK

テーブルヘッダーでは、暗い境界線の色を個別に定義できます。基本的な構文<TH 境界線の色を暗く...

LinuxサーバーでRabbitMQ管理ページにアクセスできない問題を解決

私のプロジェクトの特定の機能ではサーバーが rabbitmq にメッセージを送信する必要があるため、...

MySQL 8.0 アトミック DDL 構文の詳細な説明

目次01 アトミックDDLの紹介02 一部のDDL操作の実行動作の変更03 DDL 操作のログを表示...

大量のデータをMySQLにインポートする際に発生する問題と解決策の分析

プロジェクトでは、SQL を使用してデータ分析を実行するために、大量のデータをデータベースにインポー...

MySQL 8.0.15 のダウンロードとインストールの詳細なチュートリアルは初心者にとって必須です。

この記事では、MySQL 8.0.15をダウンロードしてインストールするための具体的な手順を参考まで...