このドキュメントでは、データベースプロキシによりリード・ライト分離機能をオンにすることで、スケールアウトを実現し、TencentDB for MySQLのパフォーマンスを向上させるすることをご紹介します。
データベースプロキシがリード・ライト分離アーキテクチャを実現する
データベースプロキシ
データベースプロキシは、クラウドデータベースサービスとアプリケーションサービスの間にあるネットワークプロキシサービスであり、アプリケーションサービスがデータベースにアクセスするときにすべてのリクエストをプロキシするために用いられます。
データベースプロキシのアクセスアドレスは、元のデータベースのアクセスアドレスから独立しています。データベースプロキシアドレスを介したすべてのリクエストは、プロキシクラスターを介して中継され、データベースのマスターノードとスレーブノードにアクセスし、読み取り/書き込み分離を行います。読み取りリクエストは読み取り専用インスタンスに転送され、メインデータベースへの負荷が軽減されます。
自動リード・ライト分離
ユーザーのビジネスシナリオには、読み取りの増加と書き込みの減少、予測できない業務の負荷といったシナリオがあります。ただし、読み取りリクエスト数が多いアプリケーションシナリオでは、単一のインスタンスが読み取りのプレッシャーに耐えられない場合があり、業務に影響を与える可能性もあります。
読み取り機能のフレキシブルな拡張を実現し、データベースのプレッシャーを分担するために、1つ以上の読み取り専用インスタンスを作成し、読み取り専用インスタンスを利用して多数のデータベース読み取り要件を満たすことができます。ただし、このタイプのソリューションでは、業務側が読み取り/書き込み分離の変換をサポートする必要があります。そのコードのロバスト性によって、ビジネスの読み取り/書き込み分離の品質が決まるため、顧客に対する技術的要件が高く、柔軟性とスケーラビリティが低くなります。
したがって、読み取り専用インスタンスの作成後、データベースプロキシを購入することで読み取り/書き込み分離機能を有効にし、データベースプロキシアドレスをアプリケーションで設定することによって、書き込みリクエストをマスターインスタンスに、読み取りリクエストを各読み取り専用インスタンスに自動的に転送できます。
データベースプロキシによりリード・ライト分離機能を有効にする
ステップ1:データベースプロキシを有効にする
- MySQLコンソールにログインし、インスタンスリストで、プロキシの有効化が必要なマスターインスタンスを選択し、インスタンスIDまたは操作の列の管理をクリックし、インスタンス管理ページに進みます。
- インスタンス管理ページで、データベースプロキシページを選択し、今すぐ有効化をクリックします。
- ポップアップしたダイアログボックスで、仕様ノードを選択し、OKをクリックし、ページを更新します。
- ネットワークタイプ:VPCのみをサポートします。デフォルトではマスターインスタンスと一致します。
- プロキシ仕様:2コア4000MBメモリ、4コア8000MBメモリ、8コア16000MBメモリ。
- ノードの個数:プロキシノードの個数。推奨プロキシ個数は、マスターインスタンスと読み取り専用インスタンスのCPUコア数合計の1/8(切り上げ)です。例えば、マスターインスタンスが4コアのCPUで、読み取り専用インスタンスが8コアのCPUの場合、推奨プロキシ数=(4+8)/8 ≒2となります。
- 接続プール状態:接続プールは短い接続が頻繁に新しい接続を確立することで、インスタンスの負荷が高くなるという問題を効果的に解決できます。
- セキュリティグループ:重要なネットワークセキュリティ隔離手段であり、必要に応じて既存のセキュリティグループまたはセキュリティグループの新規作成を選択することができます。
- 有効になると、データベースプロキシページで基本情報の表示、プロキシノードの管理、データベースプロキシアドレスの変更、構成の調整などを行うことができます。
説明:
- プロキシノードリストの接続数を確認するか、各プロキシノードのパフォーマンス監視を確認することで、各ノードへのアクセスが偏っているかどうかを判断することができます。各プロキシノードへの接続数が偏っている場合、リロードバランシングをクリックして接続を分散させることができます。
- リロードバランシングはプロキシノードの再起動をトリガーし、再起動中は一時的にサービスが利用できなくなります。 オフピーク時にサービスを再起動することをお勧めします。業務に再接続メカニズムが備わっていることを確認してください。
ステップ2:データベースプロキシのリード・ライト分離を有効にする
- MySQL コンソールにログインします。
- 上側でリージョンを選択し、インスタンスIDまたは操作列の管理をクリックすると、インスタンス管理画面が表示されます。
- インスタンス管理画面のデータベースプロキシで、読み取り/書き込み分離を選択し、今すぐ有効にするをクリックします。
- 表示されたダイアログボックスで、設定を選択して、OKをクリックします。
注意:
- 状態が実行中のマスターインスタンスと読み取り専用インスタンスのみ、データベースプロキシに追加することができます。
- 現在、クロスリージョンROと遅延ROは、データベースプロキシの下にマウントすることはできません。
- 読み取り専用インスタンスの排除:排除ポリシーを有効にするかを設定します。読み取り専用インスタンスでレプリケーションの異常(レプリケーション遅延、レプリケーション中断)が発生した時、データベースプロキシは読み取り専用インスタンスを読み取り/書き込み分離から一時的に外します。遅延排除閾値はデフォルトで10秒で、読み取り専用インスタンスの最小保留数は1個となります。
説明:
読み取り専用インスタンス排除は閾値とインスタンスの最小保留数を設定後、新たな接続に対してのみ有効となります。
- 遅延排除閾値:読み取り専用インスタンスがマスターインスタンスのデータと同期を取るときに許容される最大遅延時間。読み取り専用インスタンスの遅延時間が閾値を超えた場合、この読み取り専用インスタンスのウェイトがいくらかにもかかわらず、読み取りリクエストはこの読み取り専用インスタンスに転送されません。値の範囲は1以上の整数です。
- 読み取り専用インスタンスの遅延が閾値を超えた時は排除され、排除されたインスタンスの重みは自動的に0に設定されます。また、システムがユーザーにアラームを出します(まず「データベースプロキシマウントノードの排除」アラームをサブスクリプトしてください。設定については アラーム機能をご参照ください)。
- 読み取り専用インスタンスの遅延が閾値より小さい時は、新たにデータベースプロキシに追加されます。同時に、遅延排除機能が有効かどうかに関わらず、読み取り専用インスタンスの障害が排除された後、インスタンスが修復されるのを待って新たにデータベースプロキシに追加されます。
- 読み取り専用の最小保留数の設定により、データベースプロキシが現在のルート中の読み取り専用インスタンスが設定された値よりも小さいことがわかった時は、読み取り/書き込み分離に関与する読み取り専用インスタンスの個数が最小保留数を満たすまで、異常のある読み取り専用インスタンスを読み取り/書き込み分離に戻します。
注意:
読み取り専用データベースで致命的な障害(クラッシュなど)が発生した時、最小保留数を致命的な障害が発生したインスタンスに適用できません。
- 読み取り専用インスタンス最小保留数:確保しなければならないインスタンスの最小数。既存の読み取り専用インスタンス数がこの最小値以下であり、かつ遅延時間が閾値を超えた場合、既存の読み取り専用インスタンスはいずれも排除されません。
- 読み取りウェイト割当:インスタンスに読み取りウェイトを割り当てます。システムによる自動割当かカスタムを指定できます。割り当てるウェイトの範囲は0 - 100の整数です。読み取りウェイト割当を設定すると、直ちにすべての接続に反映されます。
- データベースプロキシは、重みの設定に従って読み取りリクエストのトラフィックを割り当てます。例えば、2つの読み取り専用データベースの重みがそれぞれ10と20の場合、それらの読み取りリクエストのトラフィックは1:2の比率で割り当てられます。
- 重みは読み取りリクエストの重みのみで、書き込みリクエストはマスターデータベースに直接ルーティングされ、重みの計算には関与しません。 例えば、クライアントが10個の書き込みステートメントと10個の読み取りステートメントを送信し、マスターデータベースと読み取り専用データベースの重み比が1:1の場合、マスターデータベースは10個の書き込みステートメントと5個の読み取りステートメントを受信し、読み取り専用データベースは5個の読み取りステートメントのみ受信することになります。
- システムによる重みの自動割り当てを選択した時、システムはインスタンスのCPUとメモリの仕様に基づいて自動的に重みを割り当てます。このときに設定できるのはマスターインスタンスの重みのみです。
- 読み取り専用インスタンスの重みが0の場合、データベースプロキシはこの読み取り専用インスタンスへの接続を構築することはありません。読み取り専用インスタンスの重みを0から非0に変更しても、重みはすぐに有効とならず、新規接続に対してのみ有効となります。
- フェイルオーバー:有効にするかを設定します。有効にすることを推奨します。読み取り専用インスタンスに異常が発生した場合、データベースプロキシは読み取リクエストをマスターインスタンスへ送信します。
説明:
フェイルオーバー設定後は、新規接続に対してのみ有効となります。
- 読み取り専用インスタンスの自動追加:有効にするかを設定します。有効に設定した場合、新しい読み取り専用インスタンスを購入すると、自動的にデータベースプロキシに追加されます。
- 読み取り重みがシステムによる自動割当の場合、新たに購入した読み取りインスタンスに対して、仕様に応じたデフォルト重みを割り当てます。
- 読み取り重みがカスタムの場合、新たに購入した読み取りインスタンスを追加する時、その重みはデフォルトで0とします。データベースプロキシ読み取り/書き込み分離を調整することで、重みを変更できます。
データベースプロキシのリード・ライト分離を有効にすることに成功した
データベースプロキシのリード・ライト分離が正しく有効になると、データベースプロキシページは次のとおりです。
関連ドキュメント
この記事はお役に立ちましたか?