すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:読み書き分離の検証

最終更新日:Mar 28, 2026

ApsaraDB RDS for MySQL インスタンス(RDS High-availability Edition)で読み書き分離を有効化した後、データベースプロキシ経由でテストクエリを実行し、SQL Explorer および Audit のログを確認して、読み取りリクエストが読み取り専用インスタンスに、書き込みリクエストがプライマリインスタンスに正しくルーティングされていることを確認します。

本ガイドでは、内部ネットワーク経由で RDS インスタンスに接続する Elastic Compute Service (ECS) インスタンスを使用します。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

標準アカウントを使用する場合は、対象データベースに対して読み取り/書き込み (DDL + DML)権限を付与してください。本ガイドでは、例としてデータベース testdb01、テーブル products、テストアカウント cxx1 を使用します。

仕組み

データベースプロキシは、そのエンドポイントに送信されるすべてのクエリをインターセプトし、読み取り重みの構成に基づいてルーティングします。すなわち、書き込み操作はプライマリインスタンスに、読み取り操作は設定した重みに従って読み取り専用インスタンスにそれぞれ送信されます。

読み取り専用インスタンスの重みをゼロでない値に、プライマリインスタンスの重みを 0 に設定すると、すべての読み取りトラフィックが読み取り専用インスタンスに強制的にルーティングされます。これにより、ルーティング動作を明確に観測可能になります。実行した SELECT 文は、読み取り専用インスタンスの SQL Explorer ログにのみ記録され、プライマリインスタンスのログには一切記録されません。

検証手順

ステップ 1:読み取り重みの設定

  1. ApsaraDB RDS コンソールにログインし、インスタンスページに移動します。プライマリインスタンスのリージョンを選択し、そのインスタンス ID をクリックします。

  2. 左側ナビゲーションウィンドウで、データベースプロキシをクリックします。接続情報セクションから、構成対象のプロキシエンドポイントを特定します。

  3. 構成の変更を、操作列からクリックします。

  4. ダイアログボックスで、以下のパラメーターを設定し、OK をクリックします。

    パラメーター
    読み書き属性読み書き (読み書き分離)
    読み取り重みの割り当てカスタム
    読み取り専用インスタンスの重み10000
    プライマリインスタンスの重み0
  5. 接続情報セクションから、VPC 型のプロキシエンドポイントをコピーします。このエンドポイントを、ECS インスタンスからの接続に使用します。

ステップ 2:プロキシ経由での読み取り操作の実行

  1. ECS インスタンスにログインします。手順については、「インスタンスへの接続」をご参照ください。

  2. データベースプロキシのエンドポイントを経由して RDS インスタンスに接続します。

    プレースホルダー説明
    <proxy-endpoint>ステップ 1 で取得した VPC 型プロキシエンドポイント。VPC 外部から接続する場合は、パブリック型プロキシエンドポイントを使用します。
    <port>プロキシのポート番号
    <username>テストアカウント名(例:cxx1
    <password>アカウントのパスワード。コマンドラインで -p の直後にスペースを空けずに直接入力するか、あるいはパスワードを省略してプロンプト表示時に個別に入力することで、平文での漏洩を防ぎます。
    mysql -h<proxy-endpoint> -P<port> -u<username> -p<password>
  3. テストデータベースに切り替えます。

    USE testdb01;
  4. 以下の SELECT 文を 6 回実行します。

    SELECT * FROM products LIMIT 20;

ステップ 3:プロキシ経由での書き込み操作の実行

同一セッション内で、以下の CREATE TABLE 文を 3 回実行します。

CREATE TABLE Products11 (
  prod_id    CHAR(10)      NOT NULL,
  vend_id    CHAR(10)      NOT NULL,
  prod_name  CHAR(254)     NOT NULL,
  prod_price DECIMAL(8,2)  NOT NULL,
  prod_desc  VARCHAR(1000) NULL
);

ステップ 4:SQL Explorer および Audit によるルーティング結果の確認

両インスタンスの SQL ログを確認し、各リクエストが正しいインスタンスにルーティングされたことを検証します。

プライマリインスタンスの確認 — SELECT レコードが存在しないことを確認:

  1. プライマリインスタンスの詳細ページ左側ナビゲーションウィンドウで、自律サービス > SQL Explorer および Audit を選択します。

  2. テスト実行期間を含む時間範囲を選択し、クエリ をクリックします。

  3. SELECT 文のレコードが一切表示されず、CREATE TABLE 文のレコードのみが表示されることを確認します。

読み取り専用インスタンスの確認 — 6 件の SELECT レコードが存在することを確認:

  1. プライマリインスタンスの詳細ページ左側ナビゲーションウィンドウで、基本情報 をクリックします。インスタンス分布 セクション内の 読み取り専用インスタンス の横にあるカウント数にカーソルを合わせ、読み取り専用インスタンスの ID をクリックします。

  2. 読み取り専用インスタンスの左側ナビゲーションウィンドウで、自律サービス > SQL Explorer および Audit を選択します。

  3. 同じ時間範囲を選択し、クエリ をクリックします。6 件の SELECT 文のレコードが表示されることを確認します。执行记录

プライマリインスタンスの再確認 — 3 件の CREATE TABLE レコードが存在することを確認:

プライマリインスタンスの詳細ページ左側ナビゲーションウィンドウで、自律サービス > SQL Explorer および Audit を選択します。同じ時間範囲を選択し、クエリ をクリックします。3 件の CREATE TABLE 文のレコードが表示されることを確認します。执行记录

検証の結論

読み取り専用インスタンスの重みを 10000、プライマリインスタンスの重みを 0 に設定した場合:

  • すべての書き込みリクエスト(CREATE TABLE)はプライマリインスタンスによって処理されます。

  • すべての読み取りリクエスト(SELECT)は読み取り専用インスタンスによって処理されます。

これは、読み書き分離が正しく機能していることを確認するものです。