-
MySQLデータベースのネイティブレプリケーション機能に基づくマスターマスターレプリケーション
-
Galeraレプリケーションに基づくソリューション
-
グループレプリケーションに基づくソリューション
-
Canalに基づくソリューション
-
MySQLデータベースをVinchin Backup & Recoveryでバックアップ
-
結論
MySQLはオープンソースのリレーショナルデータベース管理システムであり、構造化されたデータの管理や保存に広く使用されています。シンプルで使いやすく、スケーラビリティに優れていることから、小規模なウェブサイトから大規模な企業システムに至るまで、さまざまなアプリケーションで人気のある選択肢です。
リアルタイムデータ同期においては、ログに基づいて実装することで、きわめて短時間でのデータ同期が可能になります。これにより、データベース自体の設計や実装に余分な制約を課す必要がありません。MySQLのアクティブアクティブ同期複製(synchronous replication)の目的は、継続的な可用性と障害耐性を確保することです。以下に、MySQLのアクティブアクティブ同期複製を実現するための4つの方法を紹介します。
MySQLデータベースのネイティブレプリケーション機能に基づくマスターマスターレプリケーション
これは一般的に中小規模の展開に適しています。
このアーキテクチャでは、2つのノードがシンプルなデュアルマスターモードを採用し、専用接続を使用できます。マスターAノードに障害が発生した場合、アプリケーション接続はすぐにマスターBノードに切り替わり、その逆も可能です。
スプリットブレインのシナリオ(両方のノードが競合するデータを書き込む状況)を避けるためには、2つのノード上でauto-increment-incrementとauto-increment-offsetに異なる値を設定することが重要です。これは、マスターノードが予期せずクラッシュしたり利用不能になった場合に、一部のバイナリログイベントがスレーブノードに複製されない可能性があるためです。このような場合、スレーブで生成された自動インクリメント値とマスターの元の値の間に競合が生じる可能性があります。
ただし、マスターとスレーブの自動インクリメントIDの競合を解決する適切なフォールトトレラント機構が存在する場合、このような方法を回避することが可能です。MySQLのバージョン5.7以降では、マルチスレッドレプリケーションを活用することでレプリケーション遅延を大幅に軽減できます。また、レプリケーション遅延に特に敏感な別の代替ソリューションとして、実質的に遅延がない半同期レプリケーションがあります。ただし、双方向書き込みにおいてはトランザクションの同時実行性能が低下する可能性があります。そのため、決定にあたっては包括的な評価が必要です。
Galeraレプリケーションに基づくソリューション
Galeraは、Codershipが提供するマルチマスターデータ同期レプリケーション機構です。複数のノード間でデータの同期レプリケーションおよび読み取り・書き込み操作を可能にし、データベースの高可用性とデータの一貫性を確保します。Galeraに基づく主な高可用性ソリューションには、MariaDB Galera ClusterおよびPercona XtraDB Cluster(PXC)があります。
現在、PXCはより広く利用されており、厳格なデータ一貫性を提供するため、特にECサイトに適しています。ただし、PXCにも限界があります。同時トランザクション量が多いシナリオでは、ネットワーク遅延を抑えるためにInfiniBandネットワークの使用が推奨されます。これは、PXCは書き込み増幅とボトルネック効果を起こしやすく、同時処理効率が大きく低下するためです。半同期レプリケーションと同様に、Galeraレプリケーションは通常3ノードまでに制限されます。さらに、ネットワークのジッターによってパフォーマンスや安定性に問題が生じることがあります。
グループレプリケーションに基づくソリューション
MGR(MySQLグループレプリケーション)は、MySQLが正式に導入した高可用性ソリューションです。これはPaxosプロトコルを通じてデータベースクラスター内のノード間で強いデータ一貫性を保証します。MGRはネイティブなレプリケーション技術に基づき、プラグインとして提供されます。クラスター内のすべてのノードに書き込みが可能となり、単一クラスターのパフォーマンス制限を解消し、ネットワークパーティショニングによるスプリットブレイン問題を解決し、レプリケートされたデータの信頼性を高めます。
しかし、現実はある程度厳しいものがあります。現在、MGRを早期導入している事例はそれほど多くありません。また、InnoDBテーブルのみをサポートしており、各テーブルに主キーが必要で、これは書き込みセットの競合検出ためです。GTID機能は有効にする必要があり、リーダー選出および書き込みセットのためにバイナリログのフォーマットはROWに設定する必要があります。
COMMITはスナップショット分離レベルにおける障害シナリオと同様に、失敗する可能性があります。現在、MGR(MySQLグループレプリケーション)クラスターは最大で9ノードまでサポートしています。外部キーおよびセーブポイント機能はサポートしていないため、グローバル制約チェックおよび部分的なロールバックを行うことはできません。バイナリログはbinlogイベントのチェックサムをサポートしていません。
Canalに基づくソリューション
リアルタイムデータベース同期に関して、アリババは専用のオープンソースプロジェクトであるOtterを公開しており、分散データベースの同期複製が可能になっています。Otterの核心的な考え方は、データベースの増分データログを取得することでほぼリアルタイムの同期複製を実現するというものです。Otter自体は、増分データベース同期ログ情報を取得することに特化したもう1つのオープンソースプロジェクトであるCanalに依存しています。
現在、OtterはMySQLデータベース間の同期的レプリケーションの実現に焦点を当てています。これは、2つのMySQLデータベース間で双方向同期レプリケーションを実現するために類似の技術を利用しています。ここでいう双方向とは、データをAからB、またはBからAに同期できるということですが、特定の時点では一方向的なものである可能性がある点に注意してください。
マスタースレーブレプリケーションのプロセスは、3つのステップに分けることができます:
1. マスターは変更内容をバイナリログに記録します。これはバイナリログイベントとも呼ばれます。これらのイベントは、「show binlog events」コマンドを使用して確認できます。
2. スレーブはマスターから自身のリレーログにバイナリログイベントをコピーします。
3. スレーブはリレーログに記録されたイベントを順番に再実行して、マスターからの変更を自身のデータに反映します。
カナルの原則については、比較的単純明快です:
1. Canalは自身をMySQLのスレーブとして見せかけ、MySQLマスターにダンプ要求を送信することにより、MySQLスレーブのインタラクションプロトコルを模倣します。
2. ダンプ要求を受信すると、MySQLマスターはバイナリログをスレーブ(これはCanalです)にプッシュし始めます。
3. Canalは、次にバイナリログオブジェクト(元のバイトストリーム形式)を解析して関連情報を抽出します。
MySQLデータベースをVinchin Backup & Recoveryでバックアップ
データをより効果的に保護するため、データベースのバックアップをおすすめします。Vinchin Backup & Recovery は、仮想マシンと物理サーバーの両方でデータベースを保護する強力な機能を提供します。VMレベルのバックアップと連携することで、仮想環境を利用するユーザーに、重要なビジネスデータや情報システムの二重保証を提供します。
Vinchin Backup & Recoveryは、物理マシンおよび仮想マシンにインストールされたOracle DB、MySQL、SQL Server、PostgreSQL、Postgres Pro、MariaDBの保護を、強力なデータベースバックアップおよび復元機能でサポートしています。また、フルバックアップ、差分バックアップ、増分バックアップおよびトランザクションログバックアップの戦略を提供し、ニーズに応じて自身のバックアップ計画を設定することができます。
Vinchin Backup & Recoveryは、データベースの通常運用に影響を与えることなく効率的なホットバックアップをサポートし、カスタマイズされたデータベースバックアップジョブの作成も簡単です。
1 ターゲットデータベースを選択します

2 バックアップストレージを選択する

3 バックアップ戦略の選択

4 ジョブを送信する

この強力なシステムは、60日間のフル機能無料トライアルから使い始められます。 インストールパッケージを入手するには、ボタンをクリックするだけです。詳しくはここをクリックして、Vinchin Backup & RecoveryでMySQLをバックアップする方法をご確認ください。
結論
MySQLのアクティブ-アクティブ同期複製は、高可用性と柔軟性を提供するために設計されています。複数のMySQLインスタンスを同時にアクティブ状態で動作させ、双方向の読み取りおよび書き込み操作を可能にしながらデータを同期します。これにより、高い可用性や負荷分散、データの整合性と柔軟性を実現します。ただし、適切な設定と管理が非常に重要であり、実装するソリューションやツールの選択は特定の要件に応じることになります。
データベースのデータを効率よく保護するために、Vinchin Backup & Recovery を選んで、簡単にデータベースのバックアップと復元を行えます。無料トライアルをお見逃しなく。
共有: