読み取り負荷の高いアプリケーションでは、単一のインスタンスで大量の読み取りトラフィックを処理しきれず、ビジネスに影響が出る場合があります。読み取り容量をスケールし、データベースへの負荷をオフロードするには、1 つ以上の読み取り専用インスタンスを作成します。これにより、大量の読み取りリクエストを処理でき、アプリケーションのスループットを向上させることができます。
他のデータベースエンジンの読み取り専用インスタンスについては、次のトピックをご参照ください。
概要
読み取り専用インスタンスは、データの整合性を確保するために、プライマリインスタンスからデータをレプリケートします。プライマリインスタンスは、データ更新をすべての読み取り専用インスタンスに自動的に同期します。また、読み取り専用インスタンスのレプリケーションラグを設定することもできます。
レプリケーションラグの問題のトラブルシューティング方法については、「ApsaraDB RDS for MySQL の読み取り専用インスタンスにおけるレプリケーションラグの原因と解決策」をご参照ください。
前提条件
ApsaraDB RDS for MySQL のプライマリインスタンスは、次の要件を満たす必要があります。
データベースエンジンバージョン: 8.4、8.0、5.7、または 5.6
課金方式: サブスクリプションまたは従量課金。サーバーレスインスタンスでは、読み取り専用インスタンスを作成することはできません。
エディション: High-availability Edition
この情報は、インスタンスの 基本情報 ページで確認できます。
Basic Edition または High-availability Edition の読み取り専用インスタンスを作成できます。High-availability Edition の読み取り専用インスタンスは、プライマリノードとセカンダリノードで構成される高可用性アーキテクチャを使用します。詳細については、「High-availability Edition」をご参照ください。
ユースケース
プライマリインスタンスが過負荷の場合は、読み取り専用インスタンスを作成し、読み取りリクエストを読み取り専用インスタンスに振り分けることで、プライマリインスタンスの負荷を軽減できます。
バックアップやメンテナンスなどの操作によりプライマリインスタンスを一時的に利用できない場合は、読み取りリクエストを読み取り専用インスタンスに転送することで、アプリケーションの一部を継続して稼働させることができます。
レポーティングや分析などのデータ集約型タスクでは、読み取り専用インスタンスを使用して大量のデータをクエリおよび分析できます。これにより、プライマリインスタンスのパフォーマンスへの影響を回避できます。
読み書き分離アーキテクチャでは、読み取り専用インスタンスによって読み取り操作と書き込み操作のロック競合を回避できるため、システム全体のパフォーマンスとスループットが向上します。
課金
サポートされている課金方式は、サブスクリプションと従量課金です。詳細については、「読み取り専用インスタンスの仕様」をご参照ください。
注意事項
サブスクリプション課金のプライマリインスタンス用にサブスクリプションの読み取り専用インスタンスを作成する場合は、サブスクリプション期間を揃えることができます。
支払いの遅延によりプライマリインスタンスがロックされた場合でも、有効期限内の読み取り専用インスタンスには引き続きアクセスできます。これらのインスタンスのステータスは [実行中 (プライマリインスタンスロック)] に変更されます。
プライマリインスタンスがリリースされると、そのサブスクリプションの読み取り専用インスタンスは自動的に返金され、リリースされます。従量課金の読み取り専用インスタンスは直ちにリリースされます。
共有データベースプロキシを使用するプライマリインスタンスの最後の読み取り専用インスタンスがリリースされると、システムはプロキシの読み書き分離エンドポイントを自動的に削除します。クライアントがこのエンドポイントを使用している場合、接続は失敗します。
機能
課金方式: 従量課金は柔軟性が高く、サブスクリプションは長期利用でコスト効率に優れています。
リージョンとアベイラビリティーゾーン: 読み取り専用インスタンスは、プライマリインスタンスと同じリージョンに配置する必要がありますが、異なるアベイラビリティーゾーンに配置できます。
仕様: 読み取り専用インスタンスの仕様は、プライマリインスタンスと異なっていてもよく、いつでも変更できます。読み取り専用インスタンスの仕様は、プライマリインスタンスの仕様以上にすることを推奨します。そうでない場合、読み取り専用インスタンスでレプリケーションラグの増大や高負荷が発生する可能性があります。
ストレージタイプ: 読み取り専用インスタンスは、プライマリインスタンスと同じストレージタイプを使用する必要があります。
ストレージ容量: 読み取り専用インスタンスのストレージ容量は、プライマリインスタンスのストレージ容量より小さくすることはできません。
ネットワークタイプ: 読み取り専用インスタンスのネットワークタイプは、プライマリインスタンスと異なる場合があります。
アカウントとデータベースの管理: アカウントとデータベースはプライマリインスタンスから同期されるため、読み取り専用インスタンスで管理することはできません。
IP アドレスホワイトリスト: 読み取り専用インスタンスを作成すると、プライマリインスタンスの IP アドレスホワイトリストが自動的にコピーされます。ただし、両インスタンスの IP アドレスホワイトリストは独立しています。読み取り専用インスタンスの IP アドレスホワイトリストを変更する必要がある場合は、「IP アドレスホワイトリストを設定する」をご参照ください。
モニタリングとアラート: ディスク容量、IOPS、接続数、CPU 使用率、ネットワークトラフィックなど、約 20 のシステムパフォーマンスメトリクスについてモニタリングとアラートを利用できます。
プライマリ/セカンダリ スイッチオーバー: High-availability Edition の読み取り専用インスタンスは、プライマリ/セカンダリ スイッチオーバーをサポートし、スイッチオーバーログを確認できます。
制限事項
読み取り専用インスタンス数: プライマリインスタンスごとに、最大 10 個の読み取り専用インスタンスを作成できます。
インスタンスのバックアップ: バックアップは読み取り専用インスタンスではなく、プライマリインスタンスで実行されます。読み取り専用インスタンスではバックアップポリシーを設定したり、手動でバックアップを作成したりすることはできません。ローカルログファイルの保持ポリシーを設定することのみ可能です。
インスタンスの復元:
フルデータ復元 (インスタンスレベル): バックアップセットを使用するか、ポイントインタイムリカバリを実行して、読み取り専用インスタンスから新しいインスタンスにデータを復元することはできません。
データベースとテーブルの復元 (データベース/テーブルレベル): バックアップセットを使用するか、ポイントインタイムリカバリを実行して、読み取り専用インスタンスから元のインスタンスまたは新しいインスタンスに、個々のデータベースまたはテーブルを復元することはできません。
データ移行: 読み取り専用インスタンスにデータを移行することはできません。
データベース管理: 読み取り専用インスタンスでデータベースを作成または削除することはできません。
アカウント管理: 読み取り専用インスタンスでアカウントを作成または削除したり、アカウントに権限を付与したり、アカウントのパスワードを変更したりすることはできません。
読み取り専用インスタンスの作成
よくある質問
プライマリインスタンスで作成したアカウントを使用して、読み取り専用インスタンスにアクセスできますか?
はい。プライマリインスタンスで作成したアカウントは、読み取り専用インスタンスに同期されます。読み取り専用インスタンスでアカウントを管理することはできません。これらのアカウントには、読み取り専用インスタンスでの読み取り権限のみがあります。
読み取り専用インスタンスの課金を一時停止できますか?読み取りウェイトを 0 に設定した場合、課金は停止しますか?
いいえ。読み取り専用インスタンスの課金を一時停止することはできません。インスタンスが不要になった場合は、直ちに インスタンスをリリースまたは解約してください。
データベースプロキシサービスが有効になっていない場合でも、読み取り専用インスタンスの読み取りウェイトを設定できますか?
いいえ。データベースプロキシサービスがない場合、トラフィックを分散するための読み取りウェイトを設定できません。 読み書き分離と負荷分散を実装するには、アプリケーションで (プライマリインスタンス用と読み取り専用インスタンス用の) 別々の接続エンドポイントを設定する必要があります。
High-availability Edition の読み取り専用インスタンスは、いつ購入すべきですか?
読み取り負荷が高い場合は、読み取り操作の高可用性を確保するために、High-availability Edition の読み取り専用インスタンスを購入することを推奨します。
プライマリインスタンスにすでにセカンダリインスタンスがある場合でも、High-availability Edition の読み取り専用インスタンスは必要ですか?
セカンダリインスタンスは高可用性を確保するためのものであり、読み取り専用インスタンスは読み書き分離により読み取りリクエストをオフロードするために使用します。読み取り負荷が高い場合は、引き続き High-availability Edition の読み取り専用インスタンスを購入することを推奨します。
Basic Edition のインスタンスで読み書き分離を実装するにはどうすればよいですか?
Basic Edition インスタンスは読み取り専用インスタンスをサポートしていません。読み書き分離を実装するには、まずインスタンスのエディションを High-availability Edition に変更する必要があります。読み取り専用インスタンスを作成すると、ApsaraDB RDS は読み書き分離を自動的に有効にします。データベースプロキシを有効にすると、読み取りウェイトを調整できるようになります。