序文 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 をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: CentOS 6.x のインストール時に発生するエラー「ディスク sda に BIOS RAID メタデータが含まれています」の解決方法
目次序文webSocket の操作と例について:ウェブソケット1. webSocketについて2. ...
複数列のインデックスについては、理解が不足していることがよくあります。よくある間違いは、多数の列に独...
実行プロセスを分析します。マウスをノードに移動して、ノードにツールチップ実装を開くための識別子 (...
1. 動的クエリルール動的クエリルールは、おおよそ次の図のようになります。ユーザのカスタマイズに応じ...
目次1. beforeunload イベント2. アンロードイベント3. ソースコードプロジェクトの...
まずは効果の写真をお見せしましょう。 個人的には効果は問題ないと思います。アプリが写真を学習する時間...
この読書ノートでは、主にファイルシステムに関連する操作を記録します。ディスクとディレクトリの容量ディ...
目次1. 元のドライバーをアンインストールする2. 新しいグラフィックカードドライバーをダウンロード...
1. スプレッド演算子スプレッド演算子は 3 つのドット ... で、複数の引数 (関数呼び出しなど...
質問:最近、プロジェクトの統計を行っていたときに、テーブルを上下にスクロールしたときにテーブルの先頭...
DTD はマークアップの文法規則のセットです。これは XML 1.0 仕様の一部であり、HTML フ...
背景MySQL のデッドロックについて言えば、私は以前 MySQL のロックに関する基本的な紹介記事...
目次1. nginx とは何ですか? 2. nginx で何ができるのか? 2.1 フォワードプロキ...
1. CSS その他のアイコンアイコンを作成するには 3 つの方法があります。写真css (小さな矢...
この記事では、CSS ::markerの興味深い疑似要素を紹介します。これを使用すると、テキスト番号...