一般的なソリューションの五MySQL ClusterのMySQLの高可用性

1.概要

私たちは高可用性MySQLデータベースのアーキテクチャを考えると、主に次の側面を考慮します

  • データベースの障害または予期しないダウンタイムの中断が、データベースの可用性とすぐに再開する場合は、可能な限りダウンタイム短縮サービスが原因データベースの障害のために中断されていないことを確実にするため。
  • バックアップとして、データは読み取り専用のノード機能は、マスターノードとリアルタイムでのデータや、常に同じであるべき非マスターのコピー。
  • サービス切り替えは、データベースが、前と切り替え後のデータベースの内容が一貫していなければならないとき、データが欠落することはないだろうか、一貫性のないデータトラフィックは影響が発生します。

ここでは、唯一の一般的な高可用性ソリューションで使用されるプログラムの高可用性と選択の長所と短所を議論ここでは、高可用性の分類に関する詳細な議論をしません。

2.高可用性プログラム

2.1。マスターから又は一次マスター半同期

2ノードのデータベースを使用して、単方向または双方向準同期レプリケーションを構築します。将来のリリース5.7、によるロスレス・レプリケーションでは、ネイティブのMySQL半同期レプリケーションを行う新機能の導入に論理的なマルチスレッド複製および他のいくつかの列は、より信頼性の高いです。

次のように一般的なアーキテクチャは、次のとおりです。

多くの場合、プロキシ、データベースの健全性を監視するために使用することができ、一連の管理コマンドを実行することができ、他のサードパーティ製のソフトウェアを使用している間keepalivedの。プライマリ・データベースがスタンバイデータベースにフェイルオーバーした場合は、データベースを使用し続けることができます。

利点:

  1. アーキテクチャは、データ同期のための基礎としてネイティブ準同期レプリケーションを使用して、簡単です。
  2. 2ノードは、何の問題は、選択したメインホストがダウンした後、あなたが直接切り替えることができますありません。
  3. 2ノード、リソース、簡単な展開にはあまり需要。

短所:

  1. 準同期レプリケーションに完全に依存し、非同期複製に準同期複製縮退場合、データの一貫性は保証できません。
  2. そして、追加の考慮事項のhaproxy、keepalivedの高可用性メカニズムを必要とします。

2.2。半同期レプリケーションの最適化

半同期レプリケーションメカニズムが信頼性があります。準同期複製が施行されている場合、データが一致していると考えることができます。しかし、いくつかの客観的な理由のためには、タイムアウトを発生し、非同期レプリケーションに切り替え、その後、時間がデータの整合性を保証することはできません準同期レプリケーションにつながる、解約します。だから、半同期レプリケーションを確保するために可能な限り、それはデータの一貫性を向上させることができます。

プログラムはまた、2つのノード・アーキテクチャを使用するが、半分の本来の機能で準同期レプリケーションメカニズムに同じコピーに基づいて最適化され、より確実になります。

最適化方式を参照してください、次のとおりです。

2.2.1。デュアルチャネルの複製

準同期複製がタイムアウト後に発生するので、再び複製を設定するときに2つのチャネルを確立しながら、切断されたコピー、、、準同期レプリケーションチャネルの一つはスレーブが現在のホストの実装の進行状況を知ることを保証するために、現在の位置からコピーを開始します。また、キャッチアップのチャネルは、後方のマシンからのデータの非同期レプリケーションを開始します。ときに半同期、半同期回復を引く開始位置への非同期レプリケーションチャネル。

2.2.2。BINLOGファイルサーバ

下半分-SCHは、通常、ファイルサーバに接続され、前記2つの半同期チャネル構造、半同期問題分解半分のマスタースレーブネットワークがファイルサーバチャンネルと同期複製を起動すると、有効になっていません。場合は、マスターから半同期回復、半近いファイルサーバーチャネル同期レプリケーション。

利点:

  1. 2ノード、リソース、簡単な展開にはあまり需要。
  2. シンプルな構造、主な問題は、選択されていない、あなたは直接切り替えることができます。
  3. 優れたデータの整合性を確保するために最適化されたオリジナルのコピー、半同期レプリケーションと比較すると。

短所:

  1. MySQLや通信プロトコルを使用して、カーネルソースの変更。私たちは、ソースコードのいくつかの知識を持っている必要があり、かつ二次開発をある程度行うことができます。
  2. それでも半同期レプリケーションに依存して、データの整合性は、根本的に問題を解決していません。

2.3。高可用性アーキテクチャの最適化

マルチノード・データベース、またはマルチノードデータベースクラスタに2ノードデータベースを拡張しました。あなたは、マルチクラスタからマルチマスタまたはマルチマスタから、自分のニーズに応じて、マスターから2を選択することができます。

準同期レプリケーションので、トランスポンダの存在が半分から複製単一半信頼性に優れた信頼性からマルチ同期複製成功半同期考え成功した特性であるマシンから受信されます。そして、同時にダウンタイム単一ノードの確率がある程度ので、マルチノード・アーキテクチャをダウンよりも小さくなければならない複数のノードの確率が高い可用性2ノードアーキテクチャよりも優れていると考えることができます。

しかし、データベースの数、データベース管理ソフトウェアは、データベースの保守性を確保する必要があるため。あなたはMMM、MHAまたはプロキシのさまざまなバージョンを選択し、上のようにすることができます。次のように一般的なスキームは次のとおりです。

2.3.1。MHA +マルチノードクラスタ

マスターに障害が発生したときMHA Managerは、定期的に、それは新しいマスターのための最新のデータを自動的にスレーブアップグレードすることができ、クラスタ内のマスターノードを検出し、その後、他のすべてのスレーブは新しいマスター、全体のフェイルオーバー・プロセス・アプリケーションにリダイレクト完全に透明に。

MHAノードは各MySQLサーバー上で実行されている、主な役割は、あなたが切り替わる際にバイナリログを処理することで、失われたデータを最小限に抑えるために、スイッチにしてください。

次のようにMHAは、マルチノードクラスタに拡張することができます。

利点:

  1. それは自動的に検出し、転送障害することができます。
  2. より良いスケーラビリティは、ノードおよびMySQLの構造の数を拡大する必要があるかもしれません。
  3. MySQLで利用できない2つのノードのMySQL複製、3ノード/マルチノードに比べて低い確率

短所:

  1. 2つのノードに対して少なくとも3つのノード、多くのリソースを必要とします。
  2. より複雑なロジックは、トラブルシューティングの障害が発生し、位置決めの問題がより困難です。
  3. データの整合性は、データの矛盾のリスクは依然として存在し、天然の半同期レプリケーション保証によって依然としてあります。
  4. おそらくネットワークパーティションスプリットブレイン現象の発生;

2.3.2。飼育係+プロキシ

データの整合性を確保するために、分散クラスタリングアルゴリズムを使用して飼育係は、使用の飼育係が効果的にプロキシの高可用性を保証することができ、より優れたネットワークパーティション現象を回避することができます。

利点:

  1. より良いプロキシは、MySQLを含むシステム全体の高可用性を確保。
  2. より良いスケーラビリティは、大規模クラスタに拡張することができます。

短所:

  1. データの一貫性は、依然としてmysqlのネイティブ半同期レプリケーションに依存しています。
  2. ZKの紹介、システムのロジックが複雑になります。

2.4。共有ストレージ

共有ストレージは、データベース・サーバとストレージ・デバイス、異なるデータベース間でのデータの同期は、もはやMySQLのネイティブレプリケーション機能に依存しているのデカップリングを達成するために、しかし、ディスクデータの同期化によって、データの整合性を確保します。

2.4.1。SANストレージを共有しました

SANの概念は、集中データストレージの実装を介して接続されている接続(LANと比較して)直接(サーバ)との間のプロセッサと高速ネットワークのストレージデバイスを可能にすることです。次のように一般的なアーキテクチャは、次のとおりです。

共有メモリは、MySQLサーバがファイルシステムをマウントし、正常に動作することができた場合、プライマリ・データベースのダウンタイムが発生した場合、スタンバイ・データベースは、同じファイルシステムをマウントし、メインとバックアップのデータベースライブラリが同じデータを使用していることを確認することができます。

利点:

  1. 2つのノードが展開、単純なスイッチングロジックに簡単であることができます。
  2. グッド強い保証データの一貫性。
  3. ではないので、データの不整合がMySQLの論理的なエラーが発生しました。

短所:

  1. あなたは、共有ストレージ、高可用性を考慮する必要があります。
  2. 高価な; 

2.4.2。DRBDのディスク複製

ブロックベースのストレージソリューションは、ネットワークをコピーDRBDは、主にユーザデータがローカルディスクに書き込まれた論理ボリュームをミラーリングディスク、パーティション、および他のデータとの間で使用されるサーバは、データはまた、ソフトウェアベースの送信されますディスク上の別のホストへのネットワーク、ローカルホスト(マスタ)とリモートホスト(ノード装置)は、リアルタイムデータの同期を確保することができます。次のように一般的なアーキテクチャは、次のとおりです。

ローカルホストは、リモートホストが同じデータを保持する問題がある場合は、データのセキュリティを確保するために使用し続けることができます。

DRBDの高速同期レプリケーションレベルのLinuxカーネルモジュール同じ共有メモリ効果を得ることができSANで実装。

利点:

  1. 2つのノードが展開、単純なスイッチングロジックに簡単であることができます。
  2. SANストレージ・ネットワーク、低価格と比較すると、
  3. 強力なデータの整合性を確認してください。

短所:

  1. 性能に対するIOの大きなインパクト;
  2. ライブラリーからの読み出し動作を提供していません。

2.5。分散プロトコル

分散プロトコルデータ整合性の問題を解決することができます。以下のように、より一般的なシナリオは以下のとおりです。

2.5.1。MySQLクラスタ

MySQLクラスタは、NDBストレージエンジンのリアルタイムバックアップデータの冗長性、高可用性とデータベースのデータの一貫性を使用して、公式の展開のクラスタです。

利点:

  1. 公式を使用してすべてのコンポーネントは、サードパーティ製のソフトウェアに依存しません。
  2. 強力なデータの一貫性を達成することができます。

短所:

  1. あまり家庭での使用;
  2. より複雑な設定が必要ですNDBストレージエンジンは、MySQL従来のエンジンと、いくつかの違いがあります。
  3. 少なくとも3つのノード。

2.5.2。厨房

ガレラのMySQLのベースの高可用性クラスタは、障害、高可用性の単一の点が存在しない、使いやすい、MySQL Clusterの溶液のマルチマスターデータ同期です。次のように一般的なアーキテクチャは、次のとおりです。

利点:

  1. マルチマスタの書き込みは、強力なデータの一貫性を確保するために、遅滞なくコピー;
  2. 成熟したコミュニティがあり、インターネット企業は、大規模な使用です。
  3. 自動フェイルオーバーは、自動的に、追加ノードを削除します。

短所:

  1. ネイティブのMySQLのノードのために戦うWsrepパッチが必要
  2. のみサポートInnoDBストレージエンジン
  3. 少なくとも3つのノード。

2.5.3。POAXS

パクシ島のアルゴリズム分散システムは、値(解像度)に同意するかの問題を解決します。このアルゴリズムは、アルゴリズムの最も効果的な種類であると考えられています。強い整合性と組み合わされたPaxosとMySQLは、分散MySQLデータで達成することができます。次のように一般的なアーキテクチャがあります

利点:

  1. マルチマスタの書き込みは、強力なデータの一貫性を確保するために、遅滞なくコピー;
  2. 理論的基礎を成熟。
  3. 自動フェイルオーバーは、自動的に、追加ノードを削除します。

短所:

  1. のみサポートInnoDBストレージエンジン
  2. 少なくとも3つのノード。

3.まとめ

人々は、データの整合性の要件を改善し続けているため、より多くの方法は、MySQLの自体の最適化、MySQL Clusterのアーキテクチャの最適化、パクシ、いかだ、2PCアルゴリズムなどの分散データの一貫性の問題を解決しようとするために使用されています導入のように。

しかし、大規模で、より多くの、より多くの人々に受け入れられ、アプローチの問題MySQLデータベースのデータの一貫性を解決するために、そのようなのでPhxSQL、MariaDBガレラクラスタ、Percona XtraDBクラスタおよび成熟製品のシリーズを分散アルゴリズムを使用しますスケール使用。

GAの公式のMySQLのグループのレプリケーションでは、データの整合性の問題を解決するための分散プロトコルを使用すると、主流方向となっています。MySQLの高可用性の問題がよりよく対処することができ、より多くの優れたソリューションが提案されている期待しています。

リファレンス

[2015 OTN] Pengli魯迅-DoubleBinlogプログラムの.pdf

 

参考:

https://zhuanlan.zhihu.com/p/25960208(この記事から転送された上記)

オリジナルの記事は、0公表 ウォン称賛27 ビュー80000 +を

おすすめ

転載: blog.csdn.net/yimenglin/article/details/102853411