読み取り専用インスタンスは、プライマリ ApsaraDB RDS for MySQL インスタンスのレプリカです。プライマリインスタンスのデータ変更は、関連付けられたすべての読み取り専用インスタンスに自動的に同期されます。読み取り専用インスタンスを使用して、プライマリインスタンスから読み取りトラフィックをオフロードし、読み取り負荷の高いワークロードのスループットをスケールできます。
他のデータベースエンジンについては、「ApsaraDB RDS for SQL Server 読み取り専用インスタンスの作成」および「ApsaraDB RDS for PostgreSQL 読み取り専用インスタンスの作成」をご参照ください。
前提条件
開始する前に、インスタンスの [基本情報] ページで、プライマリインスタンスが以下のすべての要件を満たしていることを確認してください。
-
MySQL バージョン:8.0、5.7、または 5.6
-
課金方法:サブスクリプションまたは従量課金 (Serverless インスタンスはサポート対象外です)
-
エディション:RDS High-availability Edition
制限事項と注意事項
ハード制限:
-
プライマリインスタンス 1 つあたり最大 10 個の読み取り専用インスタンスを作成できます。
-
読み取り専用インスタンスは、プライマリインスタンスからのみ作成できます。既存のインスタンスを変換することはできません。
-
読み取り専用インスタンスのストレージクラスは、プライマリインスタンスのストレージクラスと同じである必要があります。
-
ストレージ容量:
-
ディスクベースのインスタンス:ストレージ容量は、プライマリインスタンスのストレージ容量より小さくできません。プライマリインスタンスのメモリが読み取り専用インスタンスより多い場合、プライマリインスタンスの仕様を変更すると読み取り専用インスタンスが再起動します。
-
ローカルディスクベースのインスタンス:ストレージ容量は、プライマリインスタンスのストレージ容量より小さくできません。
-
-
読み取り専用インスタンスは、ローカルログ保持ポリシー のみをサポートします。自動バックアップポリシーおよび手動バックアップはサポートしていません (データはプライマリインスタンスのバックアップでカバーされます)。
-
読み取り専用インスタンス作成時に選択できる Virtual Private Cloud (VPC) オプションには制限があります。
動作に関する注意:
-
データはプライマリインスタンスのセカンダリノードからコピーされるため、読み取り専用インスタンスの作成はプライマリインスタンスのパフォーマンスに影響しません。ただし、読み取り専用インスタンスの作成中は、プライマリインスタンスの仕様を変更できません。
-
読み取り専用インスタンスは、プライマリインスタンスのパラメータ設定を継承しません。デフォルトのパラメータ値が適用されます。必要に応じて、読み取り専用インスタンスのコンソールでパラメータを変更してください。
-
プライマリインスタンスがリリースされると、サブスクリプションの読み取り専用インスタンスは自動的に返金され、リリースされます。従量課金の読み取り専用インスタンスは直ちにリリースされます。
-
課金方法はサブスクリプションまたは従量課金を選択できます。料金については、「読み取り専用インスタンスタイプ」をご参照ください。
読み取り専用インスタンスとエンドポイントの確認
-
ApsaraDB RDS コンソールにログインします。上部のナビゲーションバーでリージョンを選択し、左側のナビゲーションペインで[インスタンス]をクリックします。
-
インスタンス一覧でプライマリインスタンスを見つけ、その左にある矢印をクリックすると、関連付けられた読み取り専用インスタンスが展開されます。または、プライマリインスタンス ID をクリックしてその詳細ページを開きます。読み取り専用インスタンスは、[基本情報] > [インスタンス分散] に表示されます。
展開したリストでは、読み取り専用インスタンスはプライマリインスタンスの下にインデント表示され、青色の R でマークされます。
プライマリインスタンスの 基本情報 ページで、インスタンスの分布 セクションにある[読み取り専用インスタンス]を見つけます。[管理] をクリックして読み取り専用インスタンスの詳細を表示するか、[追加] をクリックして読み取り専用インスタンスを作成します。
-
読み取り専用インスタンスのエンドポイントを表示するには、読み取り専用インスタンスの ID をクリックしてその詳細ページを開きます。 [基本情報] > [ネットワークタイプ] で、[詳細を表示] をクリックします。
レプリケーション遅延の監視
読み取り専用インスタンスがプライマリインスタンスからデータを同期する際に、通常は大規模なトランザクションまたは DDL 操作の実行中にレプリケーション遅延が発生することがあります。通常の状態では、遅延は 1 秒以内に収まります。遅延が 1 秒を超える場合は同期の遅れを示します。極端な場合、レプリケーション接続が切断されることがあります。
読み取り専用インスタンスの[基本情報] ページで、現在のレプリケーション遅延を確認できます。
| 遅延範囲 | ステータス | 対応 |
|---|---|---|
| 1 秒以内 | 正常 | 対応は不要です。 |
| 1 秒超 | 同期の遅れ | 大規模なトランザクションまたは DDL 操作を調査してください。「レプリケーション遅延の原因と解決策」をご参照ください。 |
| レプリケーション接続の切断 | 極端な遅延 | リンク先のトラブルシューティングガイドに従ってください。 |
読み書き分離の設定
読み取り専用インスタンスを追加した後、次のいずれかの方法で読み書き分離を設定します:
-
アプリケーションでの手動ルーティング:書き込みはプライマリインスタンスのエンドポイントに直接接続し、読み取りは読み取り専用インスタンスのエンドポイントに直接接続します。
-
[データベースプロキシ] (推奨):データベースプロキシを有効にして、読み取りリクエストと書き込みリクエストを自動的にルーティングします。汎用データベースプロキシと持続的接続機能は無料です。「[New Features] RDS for MySQL supports free general-purpose database proxy and persistent connection features」をご参照ください。
詳細については、「データベースプロキシとは」、「読み書き分離とは」、および「データベースプロキシの有効化」をご参照ください。
読み取り専用インスタンスの無停止切り離し
読み書き分離環境から読み取り専用インスタンスを削除する必要がある場合は、先にトラフィックウェイトを 0 に設定し、アクティブなセッションがドレインされるのを待ってから削除します。
次の例では、プライマリインスタンス A と読み取り専用インスタンス B、C の構成を想定し、インスタンス C をオフライン化します。
-
[RDS Instances] ページに移動し、インスタンス A のあるリージョンを選択して、インスタンス A の ID をクリックします。
-
左側のナビゲーションペインで、[データベースプロキシ] をクリックします。[接続トポロジ管理] セクションで、[設定の変更] をクリックします。

-
[プロキシエンドポイント (ターミナル) 設定の変更] ダイアログボックスで、読み取り専用インスタンス C の読み取りウェイトを 0 に設定します。

-
インスタンス C の[モニタリングとアラート] ページに移動します。[セッション接続] セクションで、
active_sessionメトリックを監視し、その値が 0 になるまで待機します。長時間経過しても値が 0 にならない場合は、残りのセッションを手動で強制終了します。
-
プライマリインスタンス A の [データベースプロキシ] タブで、データベースプロキシエンドポイントからインスタンス C を削除します。
よくある質問
作成
-
読み取り専用インスタンスの作成時に特定のゾーンを選択できないのはなぜですか。
そのゾーンではリソースを利用できません。別のゾーンを選択してください。読み取り専用インスタンスの機能には影響しません。
-
読み取り専用インスタンスで、プライマリインスタンスとは異なる VPC を使用できますか。
プライマリインスタンスのネットワークタイプとストレージクラスによって異なります:
-
プライマリインスタンスがクラシックネットワークの場合:読み取り専用インスタンスでは任意の VPC を使用できます。
-
プライマリインスタンスが VPC の場合:
-
ローカル SSD ストレージ:任意の VPC を使用できます。
-
クラウドディスクストレージ:VPC はプライマリインスタンスの VPC と一致している必要があります。
-
-
-
読み取り専用インスタンスの作成はプライマリインスタンスに影響しますか。
データはプライマリインスタンスのセカンダリノードからコピーされるため、プライマリインスタンスのパフォーマンスには影響しません。ただし、読み取り専用インスタンスの作成中は、プライマリインスタンスの仕様を変更できません。
-
読み書き分離のために、Basic Edition インスタンスに読み取り専用インスタンスを追加できますか。
Basic Edition インスタンスは、読み取り専用インスタンスを直接サポートしていません。読み書き分離を使用するには、次のいずれかを実行してください:
-
High-availability Edition にアップグレードします:「Basic Edition から High-availability Edition へのインスタンスアップグレード」をご参照ください。その後、読み取り専用インスタンスを追加し、「データベースプロキシの有効化」を実施してください。
-
Cluster Edition にアップグレードします:「Basic Edition から Cluster Edition へのインスタンスアップグレード」をご参照ください。プライマリノードとセカンダリノードを使用して、別途読み取り専用インスタンスを用意せずに読み書き分離を実装できます。
-
-
High-availability Edition の読み取り専用インスタンスで、プライマリゾーンとセカンダリゾーンを選択できますか。
この機能は、プライマリインスタンスがクラウドディスクを使用している場合にのみ利用できます。
-
読み取り専用インスタンスの作成にはどのくらい時間がかかりますか。
読み取り専用インスタンスの作成に必要な時間は、プライマリインスタンスのデータ量、ストレージタイプ、エディションによって異なります:
-
プライマリインスタンスにデータがない (空のインスタンス) 場合、読み取り専用インスタンスの作成には約 7 ~ 12 分かかります。実際の時間は、ストレージタイプ (ローカルディスクまたはクラウドディスク)、エディション (High-availability または Basic)、およびリージョンによって異なります。
-
プライマリインスタンスにすでにデータがある場合、作成時間はデータ量に応じて増加します。
インスタンスリストで作成の進行状況を監視できます。作成中のインスタンスステータスは [Creating] です。作成が完了すると、ステータスは [Running] に変わります。
-
データ同期とレプリケーションレイテンシ
-
データ同期にはどのくらい時間がかかりますか。
通常の状態では、同期はリアルタイムです。大規模なトランザクションまたは DDL 操作の実行中にレプリケーション遅延が発生することがあります。実際の遅延は状況により異なります。
-
レプリケーションが正常かどうかはどのように判断できますか。
レプリケーション遅延が 1 秒以内であれば正常です。1 秒を超える遅延は同期の遅れを示します。極端な場合、レプリケーション接続が切断されることがあります。
-
レプリケーション遅延の原因は何ですか。
「ApsaraDB RDS for MySQL 読み取り専用インスタンスのレプリケーション遅延の原因と解決策」をご参照ください。
-
読み取り専用インスタンスは並列レプリケーションをサポートしていますか。
はい。
接続とルーティング
-
リクエストを強制的にプライマリインスタンスにルーティングするにはどうすればよいですか。
次の 3 つの方法があります:
-
プライマリインスタンスの内部またはパブリックエンドポイントに直接接続します。
-
リクエストをトランザクションに含めます。データベースプロキシが有効で、かつトランザクション分割が無効の場合、トランザクション内のすべての操作はプライマリインスタンスにルーティングされます。
-
Hint 構文を使用して明示的にルーティングします。「Hint 構文」をご参照ください。
-
-
読み取り専用インスタンスには専用のエンドポイントがありますか。
はい。各読み取り専用インスタンスには専用のエンドポイントがあり、インスタンスの詳細ページの[基本情報] > [ネットワークタイプ]に記載されています。
インスタンスの運用
-
読み取り専用インスタンスのストレージ使用量がプライマリインスタンスより多いのですが、これは正常ですか。
はい。プライマリインスタンスは元の SQL 文 (
INSERT、UPDATEなど) を実行しますが、読み取り専用インスタンスは行ベースのバイナリログイベントをリプレイします。この InnoDB のページ書き込みメカニズムの違いにより、読み取り専用インスタンスでページ分割が発生し、内部ストレージのフラグメンテーションが増える場合があります。更新、削除、大規模トランザクションが頻繁なシナリオでは、読み取り専用インスタンスの ibdata1 ファイル、undo ログ、一時ファイルが、プライマリインスタンスより速く増加することがあります。容量を回収するには、読み取り専用インスタンスを再作成します。データベースプロキシで読み書き分離を有効にした後、新しい読み取り専用ノードを作成し、正常に動作することを確認してから、古いノードを削除してください。
-
High-availability Edition の読み取り専用インスタンスで、プライマリノードとセカンダリノードの両方のパラメータをどのように設定しますか。
読み取り専用インスタンスのプライマリノードでパラメータを設定します。セカンダリノードはプライマリノードからパラメータ値を自動的に同期します。セカンダリノードを直接変更することはできません。
-
読み取り専用インスタンスを通常のインスタンスに変換できますか。
いいえ。
-
読み取り専用インスタンスのバックアップは必要ですか。
いいえ。プライマリインスタンスからデータをバックアップしてください。スナップショットバックアップは、プライマリインスタンスのパフォーマンスにオーバーヘッドを発生させません。
-
バイナリログはどのようにパージされますか。
バイナリログは、設定されたルールに基づいて自動または手動で削除されます。
-
読み取り専用インスタンスの構成変更、リリース、または課金方法の変更は、プライマリインスタンスに影響しますか。
いいえ。
課金
-
読み取り専用インスタンスの課金方法を変更できますか。
はい。「従量課金からサブスクリプションへの変更」または「サブスクリプションから従量課金への変更」をご参照ください。
-
読み取り専用インスタンスのコストはどのように見積もれますか。
ApsaraDB RDS コンソールにログインし、読み取り専用インスタンスの作成ページに移動して、インスタンスタイプとストレージ容量を設定します。ページには、選択内容に基づく概算費用が表示されます。
関連 API
| API | 説明 |
|---|---|
| CreateReadOnlyDBInstance | RDS 読み取り専用インスタンスを作成します |