新しいロールモデルとベテランドライバーがMySQL分散ストレージの使い方を紹介します

新しいロールモデルとベテランドライバーがMySQL分散ストレージの使い方を紹介します

1. 分散アプリケーションの概念と利点

分散データベースは、高速ネットワークを使用して物理的に分散された複数のデータ ストレージ ユニットを接続し、論理的に統合されたデータベースを形成するデータベースです。分散データベースの基本的な考え方は、元の集中型データベース内のデータを、ネットワークで接続された複数のデータ ストレージ ノードに分散して、より大きなストレージ容量とより高い同時アクセスを実現することです。近年、データ量の増加に伴い、分散データベース技術も急速に発展しています。従来のリレーショナル データベースは、集中型モデルから分散ストレージへ、集中型コンピューティングから分散型コンピューティングへと移行し始めています。

分散データベース システムの主な目的は、災害復旧とオフサイト データ バックアップです。近接アクセスの原則により、ユーザーは近くのデータベース ノードにアクセスできるため、オフサイトの負荷分散が実現します。同時に、データベース間のデータ転送同期により、分散的にデータの一貫性を維持できます。このプロセスによりデータのバックアップが完了します。データのリモート ストレージは、単一点障害が発生した場合でもサービス アクセスに影響を与えません。アクセス トラフィックをリモート ミラーに切り替えるだけです。

分散データベース アプリケーションの利点は次のとおりです。

(1)分散データ管理に適しており、システムパフォーマンスを効果的に向上させることができます。

(2)このシステムは経済性と柔軟性に優れています。

(3)システムは高い信頼性と可用性を備えている。

2. MySQL分散アプリケーションの主な技術

(1)MySQLデータカット

データシャーディングとは、ある特定の条件下で同じデータベースに保存されているデータを複数のデータベース(ホスト)に分散し、単一デバイスの負荷を分散する効果を実現することを指します。データのセグメント化により、システム全体の可用性も向上します。これは、1 台のマシンがクラッシュした後、データ全体ではなく、データの一部のみが異なるためです。

セグメンテーションルールの種類に応じて、2 つのセグメンテーションモードに分けられます。 1 つは、異なるテーブル (またはスキーマ) に従ってデータを異なるデータベース (ホスト) に分割することです。この種の分割は垂直データ分割と呼ばれます。もう 1 つは、テーブル内のデータの論理的な関係に基づいて、特定の条件に従って同じテーブル内のデータを複数のデータベース (ホスト) に分割することです。この種の分割は水平データ分割と呼ばれます。垂直分割の最大の特徴は、ルールがシンプルで実装が容易なことです。これは、ビジネス間の結合度が低く、相互影響が少なく、ビジネス ロジックが非常に明確なシステムに特に適しています。このシステムでは、異なるビジネス モジュールで使用されるテーブルを異なるデータベースに分割することが容易になります。異なるテーブルに従って分割すると、アプリケーションへの影響が少なくなり、分割ルールがよりシンプルで明確になります。水平方向のスライスは垂直方向のスライスよりも少し複雑です。同じテーブル内の異なるデータを異なるデータベースに分割する必要があるため、分割ルール自体はアプリケーションにとって比較的複雑であり、その後のデータメンテナンスも複雑になります。

(2)なぜデータを分割する必要があるのか​​?

1) Oracle のような成熟した安定した DB は、大量のデータの保存とクエリをサポートできますが、その価格は誰もが利用できる価格ではありません。

2) 負荷が高い場合、マスタースレーブモデルにボトルネックが発生します。従来技術では、負荷が高いときに、関連する読み取りおよび書き込みスループット パフォーマンスを実現するために、関連するレプリケーション メカニズムが使用されます。このメカニズムには 2 つのボトルネックがあります。まず、その有効性は読み取り操作の割合に依存し、ここではマスターがボトルネックになることがよくあります。書き込み操作を実行するには順次キューが必要であり、マスターは過負荷に耐えられません。 Slaver のデータ同期遅延も非常に大きくなり、CPU の計算能力も消費します。マスターで書き込み操作が実行された後、各スレーブ マシンで書き込み操作を 1 回実行する必要があります。シャーディングにより、コンピューティング、ストレージ、I/O を複数のマシンに並列に簡単に分散できるため、複数のマシンのさまざまな処理機能を最大限に活用し、単一障害点を回避し、システムの可用性を向上させ、エラーを適切に分離できます。

3) 無料の MySQL と安価なサーバー、または PC を使用してクラスターを構築し、ミニコンピュータ + 大規模な商用 DB の効果を実現し、資本投資を大幅に削減し、運用コストを削減します。なぜそれをしないのですか?

Mysql バージョン 5.1 以上では、データ テーブルのパーティション分割機能がサポートされています。データベース内のデータが垂直または水平に分割され、異なるデータベース ホストに保存された後、アプリケーション システムが直面する最大の問題は、これらのデータ ソースをより適切に統合する方法です。解決策は2つあります。

1) 各アプリケーション モジュールに必要な 1 つ (または複数) のデータ ソースを構成および管理し、各データベースに直接アクセスして、モジュール内でデータ統合を完了します。

2) すべてのデータ ソースは中間プロキシ層を通じて均一に管理され、バックエンド データベース クラスターはフロントエンド アプリケーションに対して透過的です。

2 番目のオプションは短期的にはコストがかかる可能性がありますが、システム全体のスケーラビリティには非常に役立ちます。 2 番目の解決策のアイデアは次のとおりです。

1) MySQL プロキシを使用してデータの分割と統合を実現します。

MySQL プロキシは、クライアント要求と MySQL サーバー間の接続プールを確立します。すべてのクライアント要求は MySQL プロキシに送信され、MySQL プロキシは対応する分析を実行して読み取り操作か書き込み操作かを判断し、対応する MySQL サーバーに送信します。マルチノードスレーブクラスターの場合、負荷分散も実現できます。

2) アメーバを使用してデータのセグメンテーションと統合を実現します。

Amoeba は、分散データベース データ ソース統合プロキシ プログラムの解決に重点を置いて、Java ベースで開発されたオープン ソース フレームワークです。 Amoeba にはすでに、クエリ ルーティング、クエリ フィルタリング、読み取り/書き込み分離、負荷分散、HA メカニズム、その他の関連コンテンツが備わっています。 Amoeba は主に以下の問題を解決します。

①データ分割後の複雑なデータソースの統合

②データセグメンテーションルールを提供し、データセグメンテーションルールがデータベースに与える影響を軽減する

③データベースとクライアント間の接続数を減らす

④読み書き分離ルーティング

3) HiveDB を使用してデータの分割と統合を実現します。

3. MySQLの読み書き分離

読み取り/書き込み分離では、データベース レプリケーション テクノロジを使用して読み取りと書き込みを異なる処理ノードに分散し、可用性とスケーラビリティを向上させます。マスター データベースは書き込み操作を提供し、スレーブ データベースは読み取り操作を提供します。多くのシステムでは、読み取り操作の方が一般的です。マスター データベースが書き込み操作を実行する場合、データベースの整合性を効果的に確保するために、データをスレーブ データベースに同期する必要があります。 Mysql には独自の同期データ テクノロジもあります。 Mysql はバイナリ ログを使用してデータをコピーします。マスター データベースがスレーブ データベースに同期された後、スレーブ データベースは通常、複数のデータベースで構成され、負荷を軽減するという目的を達成します。読み取り操作は、単純にランダムに分散されるのではなく、サーバーの負荷に基づいて異なるサーバーに分散される必要があります。 Mysql は、読み取りと書き込みの分離操作を実装するための mysql プロキシを提供します。

現在、より一般的な MySQL の読み取り/書き込み分離は、次の 2 つのタイプに分かれています。

①プログラムコードの内部実装に基づく

コードでは、ルートは選択と挿入に従って分類されます。この方法は、実稼働環境でも最も広く使用されています。

②中間プロキシ層に基づく実装

プロキシはクライアントとサーバーの間に配置されます。プロキシ サーバーはクライアント要求を受信すると、判断に基づいてそれをバックエンド データベースに転送します。次の図は、eBay の読み取りと書き込みの分離の構造図です。 Share plex は、ほぼリアルタイムでデータを他のデータ ノードに複製するために使用され、その後、特定のモジュールを使用してデータベースの状態を確認し、負荷分散と読み取り/書き込みの分離を実行することで、システムの可用性が大幅に向上します。

4. MySQL クラスタ

MySQL クラスタ テクノロジーは、分散システム内の MySQL データに冗長性を提供し、セキュリティを強化し、単一の MySQL サーバー障害がシステムに大きな悪影響を及ぼさないことを保証し、システムの安定性を確保します。

Mysql クラスターはシェアードナッシング アーキテクチャを採用しています。 Mysql クラスタは主に NDB ストレージ エンジンを使用して実装されます。これは、すべてのデータをメモリにロードする必要があるインメモリ ストレージ エンジンです。データはクラスター内の異なるストレージ ノードに自動的に分散され、各ストレージ ノードには完全なデータの一部のみが保存されます。同時に、ユーザーは同じデータを複数の異なるストレージ ノードに保存するように設定して、単一点障害によってデータが失われないようにすることができます。

MySQL クラスタにはコンピュータのグループが必要であり、各コンピュータの役割は異なる場合があります。 MySQL クラスターは、ノードの種類によって、管理ノード (他のノードを管理)、データ ノード (クラスターにデータを格納、複数存在可能)、MySQL ノード (テーブル構造を格納、複数存在可能) の 3 つのカテゴリに分類できます。クラスター内のコンピューターは、特定の種類のノード、または 2 つまたは 3 つの種類のノードの集合になります。これら 3 種類のノードは論理的にのみ分割されているため、必ずしも物理コンピューターと 1 対 1 で対応するわけではありません。複数のノードを異なる地理的な場所に分散できるため、分散データベースを実装するためのソリューションでもあります。

MySQL クラスターの登場により、データベースの負荷分散が効果的に実現され、データセンター ノードとビッグ データ処理への負担が軽減されました。データベース センター ノードに障害が発生すると、クラスターは特定の戦略を採用して他のバックアップ ノードに切り替え、障害の問題を効果的に遮断します。単一のノードに障害が発生しても、データベース全体が外部サービスの提供に影響することはありません。さらに、データベース クラスタ アーキテクチャを採用することで、マスター データベースとスレーブ データベース間で常にデータ同期の冗長性が確保されます。データベースはマルチポイントかつ分散されているため、データベース データのバックアップが適切に完了し、データ損失を回避できます。

<<:  企業がハイパースケールクラウドプロバイダーになるチャンスは終わりつつある

>>:  クラウド コンピューティングが世界を席巻している今、私たちは何を心配すべきでしょうか?

推薦する

launchvps-$3.2/KVM/1G メモリ/20gSSD/1T トラフィック/ロサンゼルス/quadranet

launchvps は、新しいデータ センターを追加しました。quadranet のロサンゼルスで、...

ウェブサイトのコンテンツ管理と計画に関する簡単な説明

インターネットは膨大な情報データベースです。サイト制作者がユーザーの選別を支援できなければ、低品質で...

vps.net ロサンゼルス SSD VPS のレビューとバックエンドの使用法の簡単な紹介

10 月 25 日頃、ロサンゼルスのデータ センターにある、SSD ハード ドライブと 1000M ...

無料のモバイルウェブサイトセルフサービスウェブサイト構築プラットフォームの推奨

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますかつては、...

ウェブサイトの最適化は最終的にコンテンツの最適化へと移行します

現在のウェブサイト最適化の世界では、コンテンツの最適化に賛同する人が増えており、最終的にはコンテンツ...

クラウドコストの上昇にどう対処するか

クラウド コンピューティングの料金は前例のない高さに達しています。データセンターがエネルギーコスト、...

インタビュアー:カフカをご存知ですか? Kafka ログセグメントの読み取りと書き込みの方法について説明します。

[[332223]]私がこの記事を書いた理由は、以前のインタビューでインタビュアーからこの質問をされ...

同僚はDockerとK8Sを知らなかったため、会社のグループチャットから削除されました

Docker はコンテナと同義であり、K8S はコンテナ オーケストレーションと同義です。これら 2...

草の根は儲かるが、新浪は損をする。微博は氷と炎の2つの異なる状況に直面している

中国国際放送、北京、8月20日。経済音声「世界企業」の報道によると、新浪微博が儲からないのはもはやニ...

Baidu にウェブサイトの内部ページを素早く組み込む方法の簡単な分析

ウェブサイトの内部ページを含めることは、ウェブサイト自体にとって非常に重要です。内部ページを含めると...

ultahost: 無制限の VPS、月額 5.5 ドルから、米国/シンガポール/インド/カナダ/ドイツ/トルコ

ultahostは2009年に設立され、主に仮想ホスティング、VPS、VDS、専用サーバーレンタル、...

stablehost: サマーセール、仮想ホスティング 30% オフ、VPS 50% オフ

私が stablehost について最後に言及したのは、昨年の 9 月でした。2009 年に設立され...

Baidu の外部リンク アルゴリズムが更新された後に外部リンクを構築する方法

Baidu の外部リンク アルゴリズムが更新された後に外部リンクを構築する方法4月25日、百度ウェブ...

alphavps: ブルガリアの専用サーバーを販売中。月額 25 ユーロから。IPv6 対応。

格安サーバー業者を紹介します。alphavpsは、6年以上運営しているブルガリアのホスティング会社で...