MySQL マスタースレーブ同期の原理と応用

MySQL マスタースレーブ同期の原理と応用

1. マスタースレーブ同期原理

マスタースレーブ同期アーキテクチャ図(非同期同期)

これは最も一般的なマスター スレーブ同期アーキテクチャです。

マスタースレーブ同期プロセス(非同期同期)

  • メインデータベースはデータの変更をbinlogファイルに書き込みます
  • ライブラリI/Oスレッドからdump要求を開始する
  • マスターI/Oスレッドはbinlogをスレーブにプッシュします
  • ライブラリI/Oスレッドからローカルrelay logファイルを書き込みます( binlogと同じ形式)
  • スレーブ SQL スレッドはrelay logを読み取り、それをシリアルに再実行して、マスター データベースと同じデータを取得します。

binlog とは何ですか?

メイン データベースがトランザクションをコミットするたびに、データの変更がbinlogと呼ばれるバイナリ ファイルに記録されます。注: binlogには書き込み操作のみが記録され、読み取り専用操作 ( selectステートメントやshowステートメントなど) は記録されません。

binlogの3つの形式

ステートメント形式: binlog実際に実行されたSQLステートメントを記録します
行形式: binlogupdate table_a set col1=value1 , col2=value2 ... where col1=condition1 and col2=condition2 ...
混合形式:デフォルトではstatement形式が選択され、 row形式は必要な場合にのみ使用されます。

Binlog フォーマットの比較

  • ステートメントレベル: binlogファイルが小さいという利点がありますが、マスターデータベースの遅いSQLがスレーブデータベースにも再び現れ、環境やコンテキストに依存する一部の関数が不整合なデータを生成する可能性があるという欠点があります。
  • 行レベル:欠点はファイルが大きいことです (ステートメントが複数の行を含む場合、n 倍に拡大されます)。利点は、前述の SQL の低速問題がなく、環境やコンテキストに依存しないことです。
  • 変更前後のデータを取得するには、 canal rowの使用を推奨します。

マスタースレーブ同期の2つの方法

  • 非同期同期:デフォルト モードでは、マスターとスレーブの切り替え中にデータが失われる可能性があります。マスター データベースがcommitかどうかは、マスター スレーブ同期プロセスとは関係がなく、認識されないためです。
  • 半同期:新しいバージョンのmysqlでサポートされている高可用性ソリューションです。マスターcommit結果をclientに返す前に、少なくとも 1 つのスレーブ (デフォルトは 1 で、特定の数を指定できます) がrelay logへの書き込みを確認する必要があります。

マスタースレーブ同期プロセス(半同期)

  • マスターに接続すると、スレーブは半同期レプリケーションをサポートしていることを示します。
  • マスター データベースは、半同期レプリケーションもサポートする必要があります。トランザクションcommit前に、マスター データベースはブロックされ、少なくとも 1 つのスレーブ データベースがタイムアウトになるまでrelay logackを書き込むのを待機します。
  • ブロッキング待機がタイムアウトすると、マスター データベースは一時的に非同期同期モードに戻ります。少なくとも 1 つのスレーブ データベースの半同期が進行に追いつくと、マスター データベースは半同期モードに戻ります。

半同期アプリケーションシナリオ

高可用性バックアップ:半同期レプリケーションにより、スレーブ データベースとマスター データベース間の一貫性が確保されます。マスター データベースに障害が発生した場合、スレーブ データベースに切り替えてもデータが失われることはありません。安定性を確保するため (遅い準同期によってメイン データベースのパフォーマンスが低下しないようにするため)、通常はビジネス トラフィックを処理せず、できるだけ早くack 、同期とバックアップにのみ使用されます。

2. マスタースレーブ同期アプリケーションシナリオ

一般的なシナリオ: オンラインスレーブの非同期同期と高可用性バックアップの半同期

高い一貫性が求められる大規模なデータ収集要件

大容量データの取得により、スレーブ データベースの CPU 使用率が急上昇し、ACK が遅くなる可能性があります。半同期に必要な ACK の数は 1 に設定できます。通常の状況では、高可用性バックアップは迅速にackできるため、マスター データベースはcommitて戻り、大容量データの取得とレプリケーションが遅くなっても問題ありません。この方法により、メイン データベースと業務は、大容量データ取得の遅いackの影響を受けません。

これで、MySQL のマスター スレーブ同期の原理とアプリケーションに関するこの記事は終了です。MySQL のマスター スレーブ同期の原理とアプリケーションに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MYSQLデータベースのマスタースレーブ同期設定の実装手順
  • MySQL マスタースレーブレプリケーション 準同期レプリケーション
  • Mysql データベースのマスタースレーブ同期構成
  • この記事では、MySQLのマスタースレーブ同期の原理を説明します。
  • MySQLはマスタースレーブ同期を構築して操作を実装します

<<:  JavaScript でよく使われる 3 つの Web エフェクトの詳細な説明

>>:  CSS3+ベジェ曲線でスケーラブルな入力検索ボックス効果を実現

推薦する

Vueコンポーネントのルーティング強調表示問題の解決策

序文以前は、キャッシュを使用してルートを強調表示していました。すべてのルートをトラバースし、クリック...

MySQL 5.7.18 のインストールと設定方法のグラフィックチュートリアル (CentOS7)

LinuxにMySQL 5.7.18をインストールする方法1. MySQLをダウンロードします。公...

CentOS仮想マシンの時刻を変更する方法

上はシステム時間、下はハードウェア時間です。ここでは変更を加えているので、同じくらいの速さになってい...

JavaScript 配列 sort() メソッドの基本的な使い方と落とし穴

序文日常のコード開発では、配列のソートに関連する操作が多数あります。JavaScript では、so...

CSS レスポンシブ レイアウト システムの例コード

レスポンシブ レイアウト システムは、今日の一般的な CSS フレームワークではすでに非常に一般的で...

MySQL の自動増分主キーが使い果たされた場合の対処方法

面接では、次のようなシナリオを経験する必要があります。インタビュアー: 「MySQL を使用したこと...

Windows 版 MySQL のインストール、起動、基本設定に関する詳細なグラフィック チュートリアル

ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...

Linux sftp コマンドの使用法の概要

sftp は、安全なファイル転送プロトコルである Secure File Transfer Prot...

JavaScriptはボタンをクリックして4桁のランダムな検証コードを生成します

この記事の例では、ボタンをクリックすることで4桁のランダムな検証コードを生成するjsの具体的なコード...

Linux サーバーのクイックアンインストールとノード環境のインストール (簡単に始められます)

1.まずnpmをアンインストールする sudo npm アンインストール npm -g 2. ノー...

MySQLデッドロック問題の詳細な分析

序文私たちのビジネスがまだ初期段階にあり、同時実行の度合いが比較的低い場合、数年間はデッドロックの問...

バージョン管理ツール Rational ClearCase の紹介

Rational ClearCase は、コードやその他のソフトウェア開発資産のバージョン管理を実...

テキストエリアタグはサイズ変更できず、マウスでドラッグすることもできません

テキストエリアタグのサイズは不変ですコードをコピーコードは次のとおりです。 <textarea...

Tencent Cloud で HTTPS を無料で導入する方法

最近、WeChatアプレットを書いていたとき、WeChatアプレットではすべてのリクエストインターフ...