リアルタイム データ同期の核心は、ログに基づいて実装することであり、これにより、準リアルタイム データ同期を実現できます。ログ ベースの実装では、データベース自体に設計と実装における追加の制約は必要ありません。 MySQLネイティブレプリケーションに基づくマスター-マスター同期ソリューションこれは一般的なソリューションです。一般的に、このアーキテクチャは中小規模のプロジェクトの場合に最も便利です。 2 つのノードは、シンプルなデュアル マスター モードを採用し、専用回線接続を使用できます。master_A ノードに障害が発生すると、アプリケーション接続はすぐに master_B ノードに切り替えられ、その逆も同様です。注意すべき点がいくつかあります。スプリット ブレインの場合、2 つのノードが同じデータを書き込んで競合が発生します。同時に、2 つのノードの auto_increment_increment (自動インクリメント ステップ) と auto_increment_offset (自動インクリメント開始値) が異なる値に設定されます。目的は、マスターノードが予期せずクラッシュしたときに、一部のバイナリログがスレーブにコピーされずにアプリケーションが実行され、スレーブの新しく書き込まれた自動インクリメント ID が元のマスターと競合するのを回避することです。そのため、最初からずらして配置されています。もちろん、マスターとスレーブの自動インクリメント ID の競合を解決するための適切なフォールト トレラント メカニズムがあれば、これも回避できます。新しいデータ バージョン 5.7+ を使用すると、マルチスレッド レプリケーションを使用して、レプリケーションの遅延を大幅に削減できます。同時に、レプリケーションの遅延に特に敏感な別の代替ソリューションは、半同期半同期レプリケーションです。これは基本的に遅延はありませんが、特に双方向書き込みでは、トランザクションの同時実行パフォーマンスが大幅に低下するため、決定する前に包括的な評価が必要です。 Galeraレプリケーションソリューションに基づくGalera は、Codership が提供するマルチマスター データ同期およびレプリケーション メカニズムです。複数のノード間でデータ同期レプリケーションと読み取り/書き込みを実現し、データベース サービスの高可用性とデータの一貫性を確保できます。Galera に基づく高可用性ソリューションには、主に MariaDB Galera Cluster と Percona XtraDB Cluster (略して PXC) があります。 現在、PXC はより広く使用されています。データの一貫性が厳格で、特に電子商取引アプリケーションに適しています。ただし、PXC にも制限があります。同時トランザクション量が多い場合は、ネットワーク遅延を減らすために InfiniBand ネットワークを使用することをお勧めします。PXC には書き込み拡張とショートボード効果があるため、同時効率が大幅に低下します。半同期半同期レプリケーションと同様に、Gelera は実際には 3 つのノードしか使用できず、ネットワーク ジッターによるパフォーマンスと安定性の問題が常態化しています。 グループレプリケーションソリューションに基づくMGRはMySQLが正式にリリースした高可用性ソリューションで、Paxosプロトコルを通じてデータベースクラスタノードデータに強力な一貫性保証を提供します。ネイティブレプリケーションテクノロジに基づいており、プラグインとして提供されます。クラスタ間のすべてのノードに書き込みが可能で、単一クラスタの書き込みパフォーマンスを解決します。すべてのノードが読み取りと書き込みが可能で、ネットワークパーティションによるブレインスプリットの問題を解決し、複製されたデータの信頼性を向上させます。しかし、現実はまだ少し残酷です。現時点では、試した人は多くありません。同時に、InnoDBテーブルのみをサポートしており、書き込みセットの競合検出のために各テーブルにプライマリキーが必要です。GTID機能をオンにし、プライマリ選択と書き込みセットのバイナリログ形式をROWに設定する必要があります。 COMMIT は、スナップショット トランザクション分離レベルの障害シナリオと同様に、障害を引き起こす可能性があります。現在、MGR クラスターは最大 9 ノードをサポートし、外部キーとセーブ ポイント機能をサポートせず、グローバル制約検出と部分ロールバックを実行できず、バイナリ ログは binlog イベント チェックサムをサポートしていません。 運河ソリューションに基づくデータベースのリアルタイム同期のために、Alibaba は分散データベースの同期レプリケーションを実装する特別なオープンソース プロジェクト Otter を持っています。その中心となるアイデアは、データベースの増分データ ログを取得することで、準リアルタイムの同期レプリケーションを実行することです。そのため、Otter 自体は、増分データベース同期ログ情報の取得に重点を置いた別のオープンソース プロジェクトである Canal に依存しています。 現在、Otter の焦点は、MySQL 間のデータベース同期とレプリケーションを実現することにあります。基本的には、同様のテクノロジを使用して、2 つの MySQL データベース間の双方向同期データベース レプリケーションを実現します。この双方向性自体は、A->B または B->A に移動できることを意味し、特定の時点では単方向であることに注意してください。 マスタースレーブレプリケーションは 3 つのステップに分かれています。 マスターはバイナリ ログに変更を記録します (これらの記録はバイナリ ログ イベントと呼ばれ、show binlog events で表示できます)。 スレーブはマスターのバイナリ ログ イベントをリレー ログにコピーします。 スレーブはリレー ログ内のイベントをやり直し、データを自身のものに反映するように変更します。 運河の原理は比較的単純です。 Canal は MySQL スレーブの対話型プロトコルをシミュレートし、MySQL スレーブのふりをして、ダンプ プロトコルを MySQL マスターに送信します。 MySQL マスターはダンプ要求を受信し、バイナリ ログをスレーブ (チャネル) にプッシュし始めます。 詳細については、https://github.com/alibaba/canal をご覧ください。 要約する 上記は、編集者が紹介したMySQLアクティブ-アクティブ同期レプリケーションの4つのソリューションです。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Centos7 に mysql と mysqlclient をインストールする際に遭遇する落とし穴の概要
以前、テーブル結合クエリを書いていたとき、whereとonの違いがわからず、SQLに小さな問題が発生...
この記事では、無限ループスクロールを実現するためのReactの具体的なコードを参考までに紹介します。...
この記事では、CSS ::markerの興味深い疑似要素を紹介します。これを使用すると、テキスト番号...
.imgbox{ 幅: 1200ピクセル; 高さ: 612px; 右マージン: 自動; 左マージン...
目次序文根拠手順1. CDから仮想マシンを起動する2. GPartedツールを使用してパーティション...
目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...
SQL文 ドロップトリガー もし sys_menu_edit が存在します。 各行のsys_menu...
最近、画像、ビデオ、CSS/JS などの静的リソースを配置するために nginx を使用する方法を学...
目次1. ブラウザのローカルストレージ技術1.1、セッションストレージ1.2、ローカルストレージ2....
目次1 配列のフラット化とは何ですか? 2 JS標準ライブラリの配列フラット化メソッド3 フラットメ...
この記事の例では、カレンダーウィジェットを実装するためのjsの具体的なコードを参考までに共有していま...
スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...
背景: 開発プロセスでは、現在の月、現在の日、現在の時間、今後数日など、時間を判断条件としてデータを...
目次JavaScript で配列を作成する配列の使用配列を分割文字列に変換する配列に要素を追加する配...
1. nginxをダウンロードする [root@localhost my.Shells]# dock...