MySQL の高可用性アーキテクチャ テクノロジを一緒に分析しましょう
この記事では、mysql 中高可用性アーキテクチャの技術分析に関する関連知識を提供します。主に MMM、MySQL マスター/スレーブ アーキテクチャ、およびクラスター関連の問題の技術分析を紹介します。みんなが助けてくれます。
高可用性アーキテクチャ基本的にインターネット サービスの標準です。アプリケーション サービスとデータベース サービスの両方が必要です。高可用性であること。システムの場合、 にはフロントエンド アプリケーション、キャッシュ、データベース、検索、メッセージ キューなどの多くのモジュールが含まれる場合があります。システム 全体の高可用性を確保するには、各モジュールの可用性が高い必要があります。データベース サービスの場合、高可用性はさらに複雑になる可能性があります。ユーザーがサービスを利用できるようにするには、アクセスだけでなく正確性の保証も必要です。したがって、データベースの高可用性には、より多くの認証が必要です。
MySQL 高可用性アーキテクチャの分類- MySQL は高可用性のために MMM を実装します
- MySQL は MHA のために高可用性を実装します
- MySQL は高可用性クラスタ モードを実装しますアーキテクチャから高可用性を実現するための
- MySQL
MMM (MySQL のマスター-マスター レプリケーション マネージャー) の技術分析は、デュアルマスターフェイルオーバーとデュアルマスターの日常管理をサポートするスクリプトプログラム。
- MMM は Perl 言語を使用して開発されており、主に MySQL のマスター-マスター (デュアルマスター) レプリケーションの監視と管理に使用されます。ビジネスでは同じ時間のみが許可されます。一方のマスターに書き込み、もう一方の代替マスターで部分的な読み取りサービスを提供して、マスター間の切り替え時の代替マスターのウォームアップを高速化します。
- MMM の監視側は、書き込み可能な VIP と複数の読み取り可能な VIP を含む複数の仮想 IP (VIP) を提供します。監視管理を通じて、これらの IP は利用可能な mysql にバインドされます。がダウンすると、vip が他の mysql に移行されます。
#MMM スクリプト プログラムはフェイルオーバー機能を実装する一方で、追加の内部ツール スクリプトによって複数のスレーブの読み取り負荷分散を実現することもできます。
- このパッケージは、標準のマスター/スレーブ構成に基づいて任意の数のスレーブ サーバーにわたる負荷分散を読み取ることもできるため、これを使用して、複製されたサーバーのグループで起動することができます。さらに、仮想 IP には、ノード間のデータ バックアップおよび再同期機能を実装するスクリプトも含まれています。
MMM 基本コンポーネント分析
- mmm_mond: 監視プロセス。すべての監視作業を担当し、すべてのノード ロール アクティビティを決定して処理します。したがって、スクリプトはスーパーバイザ上で実行する必要があります。
- mmm_agentd: 各 msql サーバーで実行されているエージェント プロセスは、監視プローブ作業を完了し、簡単なリモート サービス設定を実行します。このスクリプトは監視対象マシン上で実行する必要があります。
- mmm_control: mmm_mond を管理するコマンドを提供する単純なスクリプト。
MMM 実装の基本的な実装原理
MMM は、サーバーのグループ内でレプリケーション遅延が大きいサーバーの仮想 IP を自動および手動で削除する方法を提供します。また、データをバックアップしたり、2 つのノード間でデータ同期を実現したりすることもできます。MySQL 自体はレプリケーション フェイルオーバー ソリューションを提供しませんが、MMM ソリューションを通じてサーバー フェイルオーバーを実現できるため、mysql の高可用性を実現できます。
MMM の使用シナリオ
MMM はデータの一貫性を完全に保証できないため、MMM はデータの一貫性要件がそれほど高くないアプリケーションに適していますが、ビジネスの可用性を最大限に確保したいと考えています。 データの一貫性に対する高度な要件がある企業の場合、MMM のような高可用性アーキテクチャを使用することはあまりお勧めできません。- MMM プロジェクトは Google から提供されています: code.google.com/p/mysql-mas…
- 公式 Web サイトは次のとおりです: mysql-mmm.org
MHA は、オープン ソースの MySQL 高可用性プログラムです。MHA がマスター ノードの障害を監視すると、最新のデータを持つスレーブ ノードが新しいマスター ノードになるように自動的に昇格します。
MHA は、一貫性の問題を回避するために他のノードから追加情報を取得します。つまり、MHA は他のスレーブ ノードからデータ情報を取得し、その情報を最も近いマスター ノードスレーブ ノードに送信します。そのため、マスター ノードに障害が発生した場合、このスレーブ ノードがマスター ノードに昇格し、このスレーブ ノードは他のスレーブ ノードのすべてのデータ情報を保持します。
MHA は、マスター ノードのオンライン切り替え機能、つまりオンデマンドでマスター/スレーブ ノードを切り替える機能も提供します。
MHA の基本コンポーネント
MHA は、MHA マネージャー (管理ノード) と MHA ノード (データ ノード) の 2 つの部分で構成されます。
MHA マネージャーは、複数のマスター/スレーブ クラスターを管理するために独立したマシンに個別に展開することも、スレーブ ノードに展開することもできます。
MHA 実装原理
- MHA ノードは各 MySQL サーバー上で実行されます。MHA マネージャーは定期的にクラスター内のマスター ノードを検出します。マスターに障害が発生した場合、マスター ノードが自動的に検出されます。最新のデータが新しいマスターにプロモートされ、その後、他のすべてのスレーブが新しいマスターにリダイレクトされます。フェイルオーバー プロセス全体は、アプリケーションに対して完全に透過的です。
- MHA 自動フェイルオーバー プロセス中、MHA はデータが最大限失われないように、ダウンしたメイン サーバーからバイナリ ログを保存しようとしますが、これは常に実現できるわけではありません。
- たとえば、メイン サーバー ハードウェアに障害が発生した場合、または ssh 経由でアクセスできない場合、MHA はバイナリ ログを保存できず、フェイルオーバーのみが行われ、最新のデータが失われます。 MySQL 5.5 の半同期レプリケーションを使用すると、データ損失のリスクを軽減できます。
- MHA は半同期レプリケーションと組み合わせることができ、1 つのスレーブのみが最新のバイナリ ログを受信した場合、MHA は最新のバイナリ ログを他のすべてのスレーブ サーバーに適用できるため、すべてのノードのデータの一貫性が保証されます。
MHA の使用シナリオ
現在、MHA は主に 1 マスター、複数スレーブのアーキテクチャをサポートしています。
MHA を構築するには、レプリケーション クラスターに少なくとも 3 つのデータベース サーバー (1 つのマスターと 2 つのスレーブ) が必要です。つまり、1 つはマスターとして機能し、もう 1 つはバックアップ マスターとして機能し、もう 1 つはスレーブとして機能します。
少なくとも 3 台のサーバーが必要であるため、タオバオではマシンのコストを考慮してこれに基づいて変更を加えており、現在、タオバオ TMHA は 1 台のマスターと 1 台のスレーブをサポートしています。
コード的に見ると、MHA は Perl スクリプトの集合体にすぎませんので、Alibaba の技術力があれば、1 つのマスターと 1 つのスレーブをサポートするように MHA を変更することは難しくないと思います。
MySQL マスター/スレーブ アーキテクチャ
この種のアーキテクチャはスタートアップ企業でよく使用されており、その後の段階的な拡張も容易になります
このアーキテクチャの特徴
- 低コスト、高速かつ便利な導入
- 読み取りと書き込みの分離
- スレーブを追加することでライブラリの読み取りの負荷を軽減することもできますライブラリが間に合っている
- マスター ライブラリの単一障害点
- データ整合性の問題 (同期遅延が原因)
- 高可用性ソフトウェアは、VIP、データ管理、および DRBD サービスを完全に担当するハートビートを使用できます。
- マスター障害後に自動的かつ迅速に切り替えることができ、スレーブ ライブラリは引き続きデータを新しいマスター ライブラリと同期できます。 VIP 経由
- #スレーブ ライブラリは読み取りと書き込みの分離もサポートしており、ミドルウェアまたはプログラムの実装で使用できます
MySQL Cluster の概要
MySQL Cluster テクノロジは、分散システム内の MySQL に冗長性機能を提供し、セキュリティを強化することでシステムの信頼性とデータの有効性を向上させることができます。 MySQL クラスターには一連のコンピューターが必要です。各コンピューターはノードとして理解でき、これらのノードの機能は異なります。 MySQL Cluster は、その機能に応じて、管理ノード、データ ノード、SQL ノードの 3 種類のノードに分類できます。クラスター内のコンピューターは、単一のノードであることも、2 つまたは 3 種類のノードの集合であることもできます。これらのノードを組み合わせることで、アプリケーションに信頼性とパフォーマンスの高いクラスター データ管理を提供できます。企業データの量が増加しているため、MySQL の要件がさらに増加しています。以前の高可用性ソリューションのほとんどには、通常、MySQL レプリケーション ソリューションなど、特定の欠陥があります。マスターが正常かどうかを検出するには、一定の時間がかかります。マスター/スレーブの切り替えが必要な場合は、ある程度の時間がかかるため、高可用性は監視ソフトウェアと自動管理ツールに大きく依存します。 MySQL Cluster は継続的な開発により、最終的にパフォーマンスと高可用性が大幅に向上しました。
MySQL Cluster の基本概念
MySQL Cluster は単に MySQL クラスタ テクノロジであり、次のもので構成されています。コンピュータのグループ。各コンピュータは、MySQL サーバー、DNB クラスタ データ ノード、他のノードの管理、および特殊なデータ アクセス プログラムを含む 1 つ以上のノードを保存できます。これらのノードは、アプリケーションが高パフォーマンス、高可用性を備えたクラスタ データ管理を向上させるために結合されます。およびスケーラビリティ;
MySQL Cluster のアクセス プロセスは大まかに次のようになります。アプリケーションは通常、特定の負荷分散アルゴリズムを使用して、データ アクセスをさまざまな SQL ノードに分散します。SQL ノードはデータ ノードへのデータ アクセスを実行し、データ ノードからデータ結果を返します。管理ノード SQL ノードとデータ ノードのみを構成および管理します。
MySQL Cluster ノードについて
MySQL Cluster は、ノード タイプに応じて、管理ノード、SQL という 3 つのタイプのノードに分けることができます。ノード、データ ノード、これらすべてのノードは完全な MySQL クラスタ システムを構成します。実際、データは NDB ストレージ サーバーのストレージ エンジンに保存され、テーブル構造は MySQL サーバーに保存されます。アプリケーションは、 MySQL サーバーとクラスター管理サーバーは、管理ツール ndb_mgmd を通じて NDB ストレージ サーバーを管理します;
[1. 管理ノード]
管理ノードは、主に他のノードを管理するために使用されます。通常、config.ini ファイルは、クラスター内で維持する必要があるコピーの数、各データ ノードのデータとインデックスに割り当てるメモリの量、IP アドレス、各データ ノードにデータを保存するためのディスク パスを構成するように構成されます。
管理ノードは通常、クラスター構成ファイルとクラスター・ログを管理します。クラスター内の各ノードは、管理サーバーから構成情報を取得し、管理サーバーがどこにあるかを判断する方法を要求します。ノードで新しいイベントが発生すると、ノードはこのタイプのイベントの情報を管理サーバーに送信し、この情報をクラスター ログに書き込みます。
通常、MySQL には少なくとも 1 つの管理ノードが必要です。クラスター システム。データ ノードと SQL ノードは開始前にクラスター構成情報を読み取る必要があるため、通常は管理ノードが最初に開始されることにも注意してください;
[2.SQL ノード]
SQL ノードは単なる mysqld サーバーであり、アプリケーションはデータ ノードに直接アクセスできず、データを返すには SQL ノード経由でのみデータ ノードにアクセスできます。すべての SQL ノードはすべてのストレージ ノードに接続されているため、いずれかのストレージ ノードに障害が発生した場合、SQL ノードはリクエストを別のストレージ ノードに転送して実行できます。一般に、SQL ノードが多いほど優れています。SQL ノードが多いほど、各 SQL ノードに割り当てられる負荷が小さくなり、システム全体のパフォーマンスが向上します。
[3. データ ノード]
データ ノードは、クラスターにデータを保存するために使用されます。MySQL Cluster は、データ ノード間でデータをレプリケートします。いずれかのノードに障害が発生した場合、データを保存する別のデータ ノードが常に存在します。
通常は、この 3 つの異なるデータ ノードが使用されます。論理ノードは異なるコンピュータに分散できます。クラスタには少なくとも 3 台のコンピュータがあります。クラスタ サービスを正常に維持できるようにするため、通常、管理ノードは別のホストに配置されます。
推奨される学習: mysql ビデオ チュートリアル
以上がMySQL の高可用性アーキテクチャ テクノロジを一緒に分析しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLはSQLを使用するデータベース管理システムです。 SQLは、CRUD操作を含むデータベースと対話する方法を定義しますが、MySQLはSQL標準を実装し、ストアドプロシージャやトリガーなどの追加機能を提供します。

MySQLとPHPMyAdminは、次の手順を通じて効果的に管理できます。1。データベースの作成と削除:PHPMyAdminをクリックして完了します。 2。テーブルの管理:テーブルを作成し、構造を変更し、インデックスを追加できます。 3。データ操作:データの挿入、更新、削除、SQLクエリの実行をサポートします。 4。データのインポートとエクスポート:SQL、CSV、XML、およびその他の形式をサポートします。 5。最適化と監視:最適化可能なコマンドを使用してテーブルを最適化し、クエリアナライザーと監視ツールを使用してパフォーマンスの問題を解決します。
