この記事では、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 サイトの他の関連記事を参照してください。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック









