

# DB シャードグループにルーターを追加する
<a name="limitless-add-router"></a>

DB シャードグループにルーターを追加できます。

**Topics**
+ [前提条件](#limitless-add-router.prereqs)
+ [ルーターの追加](#limitless-add-router.proc)
+ [ルーターの追加の追跡](#limitless-add-router.track)
+ [ルーターの追加のキャンセル](#limitless-add-router.cancel)

## 前提条件
<a name="limitless-add-router.prereqs"></a>

ルーターの追加には、次の前提条件があります。
+ DB シャードグループが必要です。
+ ユーザーには `rds_aurora_limitless_cluster_admin` 権限が必要です。`rds_superuser` にはこの権限があるため、マスターユーザーにも権限があります。`rds_superuser` は、他のユーザーに権限を付与できます。

  ```
  /* Logged in as the master user or a user with rds_superuser privileges */
  CREATE USER username;
  GRANT rds_aurora_limitless_cluster_admin to username;
  ```
**注記**  
DB シャードグループの作成後に AWS アカウントのデフォルト CA 証明書を変更すると、新しいルーターは新しい CA 証明書を使用します。これは既存のルーターの CA 証明書とは異なります。トラストストアによっては、一部の接続が失敗することがあります。
+ システム開始のルーターの追加を有効にするには、DB クラスターに関連付けられたカスタムの DB クラスターパラメータグループに次の DB クラスターパラメータを設定します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/limitless-add-router.html)

  詳細については、「[Amazon Aurora DB クラスターの DB クラスターパラメータグループ](USER_WorkingWithDBClusterParamGroups.md)」を参照してください。

## ルーターの追加
<a name="limitless-add-router.proc"></a>

ルーターを追加するには、`rds_aurora.limitless_add_router` 関数を使用します。この関数は、非同期的に実行されるルーター追加ジョブを開始します。

```
SELECT rds_aurora.limitless_add_router();
```

ジョブが正常に送信されたら、ジョブ ID が返されるまで待ちます。次に例を示します。

```
    job_id
---------------
 1691300000000
(1 row)
```

**注記**  
同時ルーター追加オペレーションはサポートされていません。オペレーションを順番に実行し、各オペレーションを完了してから別の追加オペレーションを開始します。

## ルーターの追加の追跡
<a name="limitless-add-router.track"></a>

ジョブ ID を使用して、ルーター追加ジョブを追跡できます。特定のジョブを記述して詳細を取得するには、次のクエリを実行します。

```
SELECT * FROM rds_aurora.limitless_list_router_scale_jobs(job_id);
```

例：

```
SELECT * FROM rds_aurora.limitless_list_router_scale_jobs(1691300000000);

    job_id     |   action   |        job_details       | status  |    submission_time     |                   message                   
---------------+------------+--------------------------+---------+------------------------+-------------------------------------------
 1691300000000 | ADD_ROUTER | Add 1 new Router by User | SUCCESS | 2023-08-06 05:33:20+00 | Scaling job succeeded.                  +
               |            |                          |         |                        | New router instance with ID 7 was created.
(1 row)
```

存在しないジョブを入力として渡すと、クエリはエラーを返します。

```
SELECT * from rds_aurora.limitless_list_router_scale_jobs(1691300000001);

ERROR:  no job found with the job ID provided
```

ジョブ ID なしで同じクエリを使用して、すべてのルーター追加ジョブのステータスを追跡できます。次に例を示します。

```
SELECT * FROM rds_aurora.limitless_list_router_scale_jobs();

    job_id     |   action   |        job_details       |   status    |    submission_time     |                  message                   
---------------+------------+--------------------------+-------------+------------------------+-------------------------------------------
 1691200000000 | ADD_ROUTER | Add 1 new Router by User | IN_PROGRESS | 2023-08-05 01:46:40+00 | 
 1691300000000 | ADD_ROUTER | Add 1 new Router by User | SUCCESS     | 2023-08-06 05:33:20+00 | Scaling job succeeded.                +
               |            |                          |             |                        | New router instance with ID 7 was created.
 1691400000000 | ADD_ROUTER | Add 1 new Router by User | FAILED      | 2023-08-07 09:20:00+00 | Error occurred for the add router job 1691400000000.
               |            |                          |             |                        | Retry the command. If the issue persists, contact AWS Support.
 1691500000000 | ADD_ROUTER | Add 1 new Router by User | CANCELED    | 2023-08-07 09:20:00+00 | Scaling job was cancelled.
(4 rows)
```

ジョブステータスは以下のいずれかになります。
+ `IN_PROGRESS` – ルーター追加ジョブが送信され、進行中です。一度に進行中のジョブは 1 つだけです。
+ `CANCELLATION_IN_PROGRESS` – ルーター追加ジョブはユーザーによってキャンセルされています。
+ `CANCELED` – ルーター追加ジョブは、ユーザーまたはシステムによって正常にキャンセルされました。
+ `SUCCESS` – ルーター追加ジョブが正常に完了しました。`message` フィールドには、新しいルーターのインスタンス ID が含まれます。
+ `FAILED` – ルーター追加ジョブが失敗しました。`message` フィールドには、失敗の詳細と、失敗したジョブのフォローアップとして実行できるアクションが含まれます。

**注記**  
ルーターの追加を確定する必要がないため、`PENDING` ステータスはありません。ダウンタイムは発生しません。

## ルーターの追加のキャンセル
<a name="limitless-add-router.cancel"></a>

`IN_PROGRESS` のルーターの追加をキャンセルできます。キャンセルするにはジョブ ID が必要です。

```
SELECT * from rds_aurora.limitless_cancel_router_scale_jobs(job_id);
```

エラーがない限り、出力は返されません。ジョブ追跡クエリを使用してキャンセルを追跡できます。