

# 向数据库分片组中添加路由器
<a name="limitless-add-router"></a>

您可以向数据库分片组中添加路由器。

**Topics**
+ [先决条件](#limitless-add-router.prereqs)
+ [添加路由器](#limitless-add-router.proc)
+ [追踪路由器添加](#limitless-add-router.track)
+ [取消路由器添加](#limitless-add-router.cancel)

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

添加路由器具有以下先决条件：
+ 您必须拥有一个数据库分片组。
+ 用户必须具有 `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;
  ```
**注意**  
如果您在创建数据库分片组后更改了 AWS 账户 的默认 CA 证书，新路由器将使用与现有路由器的 CA 证书不同的新 CA 证书。根据信任存储的不同，某些连接可能会失败。
+ 要启用系统启动的路由器添加功能，请在与数据库集群相关联的自定义数据库集群参数组中设置以下数据库集群参数：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/limitless-add-router.html)

  有关更多信息，请参阅 [Amazon Aurora 数据库集群的数据库集群参数组](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` – 路由器添加任务已提交，正在进行中。同一时间只能有一个任务在进行中。
+ `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);
```

除非出现错误，否则不会返回任何输出。您可以使用任务跟踪查询来跟踪取消情况。