MySQL マスター/スレーブ レプリケーションのバイナリ ログに基づく高可用性アーキテクチャのガイド

序文

最新のデータベース アーキテクチャでは、MySQL のマスター/スレーブ レプリケーション テクノロジが重要な役割を果たしています。これにより、データベースのパフォーマンスとスケーラビリティが向上するだけでなく、システムに優れた高可用性と災害復旧機能も与えられます。この記事では、MySQL マスター/スレーブ レプリケーションの内部メカニズムを深く分析し、同時に実際のケースを通じて実際のシナリオにおけるその強力な役割を実証します。

コアメカニズム

MySQL のマスター/スレーブ レプリケーションはバイナリ ログ (Binary Log) テクノロジーに基づいており、そのコア プロセスは次のとおりです。

  1. メイン データベースの記録:メイン データベースはすべての書き込み操作をバイナリ ログに記録し、一連のバイナリ ログ イベントを作成します。
  2. データベースからの接続:データベースからマスター データベースに接続し、そのバイナリ ログ イベントの取得を要求します。
  3. データベースからの再生:受信したバイナリ ログ イベントはデータベースから順番に再生され、プライマリ データベースと同じ書き込み操作の実行をシミュレートします。
  4. データベースから中継:データベースから中継ログを作成し、自身が実行した操作を記録します。
  5. データベースからの読み取りサービス:アプリケーションプログラムからのデータベースからの読み取り要求を受け付け、処理して応答します。

デモの例

MySQL のマスター/スレーブ レプリケーションをより深く理解するために、簡潔な例を通してそれがどのように機能するかを示します。電子商取引 Web サイトがあり、マスター データベースが書き込み操作を処理し、スレーブ データベースが読み取り操作に使用されるとします。

ステップ 1: マスターデータベースの設定

まず、プライマリ データベースでバイナリ ログを有効にしてから、レプリケーション用のユーザーを作成します。MySQL マスター データベースで次のコマンドを実行します。

  • マスターデータベースのMySQL設定ファイルを開きます。my.ini
  • バイナリログを有効にします。log_bin = mysql-bin
  • マスターサーバーの一意の ID を設定します。server_id = 1
  • 構成を有効にするには、プライマリ データベースを再起動します。

ステップ 2: レプリケーション ユーザーを作成する

  • プライマリ データベースに接続し、レプリケーション ユーザーを作成します。
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; 
  • コピー許可を付与します。
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication_user'@'%';

ステップ 3: master データベースをバックアップする

  • などの適切なバックアップ ツールを使用して、mysqldumpマスター サーバーのデータベースをバックアップします。

ステップ 4: プライマリ データベースのステータス情報を取得する

  • メイン データベースに接続し、次を実行してSHOW MASTER STATUS;Fileと の値を記録しますPosition
SHOW MASTER STATUS;

ステップ 5: データベースから構成する

  • などの適切なバックアップ ツールを使用して、mysqldumpマスター サーバーのデータベースをバックアップします。

  • データベースから MySQL 構成ファイルを開きます。my.ini

  • マスターサーバーの一意の ID を設定します。server_id = 2

  • 構成を有効にするには、プライマリ データベースを再起動します。

ステップ 6: データベースからのレプリケーションを設定する

  • スレーブ データベースに接続するには、次を実行します。
CHANGE MASTER TO
MASTER_HOST = '主数据库IP地址',
MASTER_USER = 'replication_user',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = '主数据库的日志文件名',
MASTER_LOG_POS = '主数据库的日志位置';

ステップ 7: データベースからのコピーを開始する

  • スレーブ データベースに接続するには、次を実行します。
START SLAVE;

ステップ 8: マスター/スレーブ レプリケーションをテストする

  • 次に、マスター データベースでいくつかの書き込み操作を実行し、スレーブ データベースでレプリケーションが成功したことを確認します。たとえば、メイン データベースにデータを挿入するには、次のようにします。
INSERT INTO products (name, price) VALUES ('新商品', 99.99);
  • 次に、データベースからクエリを実行します。
SELECT * FROM products;

挿入されたばかりの新しい項目が表示され、マスター/スレーブ レプリケーションが正常に実行されたことが示されます。

メモと回答

MySQL マスター/スレーブ レプリケーションを実装する場合は、次の項目に注意し、対応する回答を提供してください。

Q1: マスター/スレーブ レプリケーションはパフォーマンスに影響しますか?

回答: 書き込み操作ではバイナリ ログを記録し、それをスレーブ データベースに送信する必要があるため、マスター/スレーブ レプリケーションはマスター データベースのパフォーマンスにある程度影響します。ただし、スレーブは読み取りリクエストをオフロードして、全体的なパフォーマンスを向上させることができます。プライマリ データベースの書き込み負荷が大きすぎる場合は、マスター/スレーブ レプリケーションを使用して負荷を軽減できます。

Q2: マスター/スレーブ レプリケーションに遅延は発生しますか?

回答: はい、マスター/スレーブ レプリケーションではある程度の遅延が発生する可能性があります。スレーブ データベースは、マスター データベースがバイナリ ログを記録して送信するまで待機する必要があるためです。これは、リアルタイムのデータ同期を必要とするアプリケーションに影響を与える可能性があります。この問題に対処するには、同期レプリケーションまたはその他のデータ同期戦略を検討してください。

Q3: マスター/スレーブ レプリケーションの高可用性を確保するにはどうすればよいですか?

回答: 高可用性を確保するために、複数のスレーブ データベースを構成してマスター データベースのホット バックアップを実現できます。同時に、 などのデータベース クラスタ テクノロジと組み合わせてMySQL Galera ClusterPercona XtraDB Cluster可用性を向上させます。

Q4: マスター/スレーブ レプリケーションを監視および維持するにはどうすればよいですか?

回答:SHOW SLAVE STATUSコマンドを使用して、スレーブ データベースのレプリケーション ステータスを監視できます。ステータスを定期的に確認して、レプリケーションが適切に機能していることを確認します。さらに、データの整合性を確保するために、スレーブ データベースを定期的にバックアップおよび復元してください。

結論: 成熟の最大の兆候は、不平不満に耐えられる能力です。謙虚に生まれるのは恥ではないし、屈伸ができれば夫になれる。
力強い言葉を与えてください。人の心は不満によって増幅されます。

おすすめ

転載: blog.csdn.net/Da_zhenzai/article/details/132101055