

# Babelfish 的数据库集群参数组设置
<a name="babelfish-configuration"></a>

当您创建 Aurora PostgreSQL 数据库集群并选择 **Turn on Babelfish**（开启 Babelfish）时，如果您选择 **Create new**（新建），将自动为您创建数据库集群参数组。此数据库集群参数组基于为安装选择的 Aurora PostgreSQL 版本（例如 Aurora PostgreSQL 版本 14）的 Aurora PostgreSQL 数据库集群参数组。它使用以下一般模式命名：

```
custom-aurora-postgresql14-babelfish-compat-3
```

您可以在集群创建过程中更改以下设置，但其中一些设置一旦存储在自定义参数组中，就无法更改，因此请仔细选择：
+ 单个数据库或多个数据库
+ 原定设置排序规则区域设置
+ 排序规则名称
+ 数据库参数组

要使用现有 Aurora PostgreSQL 数据库集群版本 13 或更高版本的参数组，请编辑该组并将 `babelfish_status` 参数设置为 `on`。在创建 Aurora PostgreSQL 集群之前，请指定任何 Babelfish 选项。要了解更多信息，请参阅[Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)。

以下参数控制 Babelfish 首选项。除非说明中另有规定，否则参数是可修改的。说明中包含原定设置值。要查看任何参数的允许值，请执行以下操作：

**注意**  
将新数据库参数组与数据库实例关联时，修改后的静态和动态参数仅在数据库实例重新启动后得到应用。但是，如果在将数据库参数组与数据库实例关联之后修改数据库参数组中的动态参数，这些更改将立即得到应用，而无需重启。

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 从导航窗格中，选择 **Parameter groups**（参数组）。

1. 从列表中选择 `default.aurora-postgresql14` 数据库集群参数组。

1. 在搜索字段中输入参数的名称。例如，在搜索字段中输入 `babelfishpg_tsql.default_locale`，以显示此参数及其原定设置值和允许的设置。
**注意**  
只有在辅助区域中开启以下参数后，适用于 Aurora PostgreSQL 的 Babelfish 全球数据库才能在这些区域中运行。


| 参数 | 说明 | 应用类型 | 是否可修改 | 
| --- | --- | --- | --- | 
| babelfishpg\$1tsql.apg\$1enable\$1correlated\$1scalar\$1transform | 使计划程序能够在 Babelfish 中转换相关的标量子查询。（默认值：打开）（支持的值：打开、关闭）  | 动态 | true | 
| babelfishpg\$1tsql.apg\$1enable\$1subquery\$1cache | 支持在 Babelfish 中对关联标量子查询使用缓存。（默认值：打开）（支持的值：打开、关闭）  | 动态 | true | 
| babelfishpg\$1tds.tds\$1default\$1numeric\$1scale | 如果引擎未指定一个，则设置要在 TDS 列元数据中发送的数字类型的原定设置扩展。（原定设置值：8）（允许的值：0–38）  | 动态 | true | 
| babelfishpg\$1tds.tds\$1default\$1numeric\$1precision | 一个整数，用于设置要在 TDS 列元数据中发送的数字类型的原定设置精度（如果引擎未指定此精度）。（原定设置值：38）（允许的值：1–38） | 动态 | true | 
| babelfishpg\$1tds.tds\$1default\$1packet\$1size | 一个整数，设置用于连接 SQL Server 客户端的原定设置数据包大小。（原定设置值：4096）（允许的值：512–32767） | 动态 | true | 
| babelfishpg\$1tds.tds\$1default\$1protocol\$1version | 一个整数，设置用于连接客户端的原定设置 TDS 协议版本。（原定设置值：DEFAULT）（允许的值：TDSv7.0、TDSv7.1、TDSv7.1.1、TDSv7.2、TDSv7.3A、TDSv7.3B、TDSv7.4、DEFAULT） | 动态 | true | 
| babelfishpg\$1tds.default\$1server\$1name | 一个字符串，用于标识 Babelfish 服务器的原定设置名称。（原定设置值：Microsoft SQL Server）（允许的值：null） | 动态 | true | 
| babelfishpg\$1tds.tds\$1debug\$1log\$1level | 一个整数，用于在 TDS 中设置日志记录级别；0 表示关闭日志记录。（原定设置值：1）（允许的值：0、1、2、3） | 动态 | true | 
| babelfishpg\$1tds.listen\$1addresses | 一个字符串，用于设置要在其上监听 TDS 的主机名或 IP 地址。创建 Babelfish 数据库集群后将无法修改此参数。（原定设置值：\$1）（允许的值：null）  | – | false | 
| babelfishpg\$1tds.port | 一个整数，指定在 SQL Server 语法中用于请求的 TCP 端口。（原定设置值：1433）（允许的值：1–65535） | 静态 | true | 
| babelfishpg\$1tds.tds\$1ssl\$1crypt | 一个布尔值，用于为遍历 TDS 侦听器端口的数据打开 (0) 或关闭 (1) 加密。有关使用 SSL 进行客户端连接的详细信息，请参阅 [Babelfish SSL 设置和客户端连接](#babelfish-ssl)。（原定设置值：0）（允许的值：0、1） | 动态 | true | 
| babelfishpg\$1tds.tds\$1ssl\$1max\$1protocol\$1version | 一个字符串，指定要用于 TDS 会话的最高 SSL/TLS 协议版本。（原定设置值：“TLSv1.2”）（允许的值：“TLSv1”、“TLSv1.1”、“TLSv1.2”） | 动态 | true | 
| babelfishpg\$1tds.tds\$1ssl\$1min\$1protocol\$1version | 一个字符串，指定要用于 TDS 会话的最低 SSL/TLS 协议版本。（默认值：在 Aurora PostgreSQL 版本 16 中，为“TLSv1.2”；对于比 Aurora PostgreSQL 版本 16 更早的版本，为“TLSv1”）（允许的值：“TLSv1”、“TLSv1.1”、“TLSv1.2”） | 动态 | true | 
| babelfishpg\$1tds.unix\$1socket\$1directories | 一个字符串，用于标识 TDS 服务器 Unix 套接字目录。创建 Babelfish 数据库集群后将无法修改此参数。（原定设置值：/tmp）（允许的值：null） | – | false | 
| babelfishpg\$1tds.unix\$1socket\$1group | 一个字符串，用于标识 TDS 服务器 Unix 套接字组。创建 Babelfish 数据库集群后将无法修改此参数。（原定设置值：rdsdb）（允许的值：null） | – | false | 
| babelfishpg\$1tsql.default\$1locale |  一个字符串，指定用于 Babelfish 排序规则的原定设置区域设置。原定设置区域设置只是区域设置，不包括任何限定符。 在预置 Babelfish 数据库集群时设置此参数。预调配数据库集群后，将忽略对此参数的更改。（原定设置值：en\$1US）（允许的值：请参阅[表](babelfish-collations.md)）   | 静态 | true | 
| babelfishpg\$1tsql.migration\$1mode |  一个不可修改的列表，用于指定对单用户或多用户数据库的支持。在预置 Babelfish 数据库集群时设置此参数。预调配数据库集群后，无法修改此参数的值。（默认值：在 Aurora PostgreSQL 版本 16 中，为 multi-db；对于比 Aurora PostgreSQL 版本 16 更早的版本，为 single-db）（允许的值：single-db、multi-db、null）  | 静态 | true | 
| babelfishpg\$1tsql.server\$1collation\$1name |  一个字符串，指定用于服务器级别操作的排序规则的名称。在预置 Babelfish 数据库集群时设置此参数。预置数据库集群后，请勿修改此参数的值。（原定设置值：bbf\$1unicode\$1general\$1ci\$1as）（允许的值：请参阅[表](babelfish-collations.md)）  | 静态 | true | 
| babelfishpg\$1tsql.version |  一个字符串，用于设置 @@VERSION 变量的输出。请勿为 Aurora PostgreSQL 数据库集群修改此值。（原定设置值：null）（允许的值：原定设置值）  | 动态 | true | 
| rds.babelfish\$1status | 一个字符串，用于设置 Babelfish 功能的状态。如果此参数设置为 `datatypesonly`，Babelfish 将关闭，但 SQL Server 数据类型仍可用。（原定设置值：off）（允许的值：on、off、datatypesonly） | 静态 | true | 
| unix\$1socket\$1permissions | 设置 TDS 服务器 Unix 套接字权限的整数。创建 Babelfish 数据库集群后将无法修改此参数。（原定设置值：0700）（允许的值：0–511） | – | false | 

## Babelfish SSL 设置和客户端连接
<a name="babelfish-ssl"></a>

要想要求使用 SSL/TLS 连接到适用于 Aurora PostgreSQL 的 Babelfish 数据库集群，请使用 `rds.force_ssl` 参数。
+ 要想要求使用 SSL/TLS 连接，请将 `rds.force_ssl` 参数值设置为 1（开启）。
+ 要想不要求使用 SSL/TLS 连接，请将 `rds.force_ssl` 参数值设置为 0（关闭）。

此参数的默认值取决于 Aurora PostgreSQL 版本：
+ 对于 Aurora PostgreSQL 版本 17 及更高版本：默认值为 1（开启）。
+ 对于 Aurora PostgreSQL 版本 16 及较低版本：默认值为 0（关闭）。

**注意**  
当您从 Aurora PostgreSQL 版本 16 或更早版本执行主要版本升级，从而升级到版本 17 或更高版本时，参数的默认值将从 0（关闭）更改为 1（开启）。对于未配置 SSL 的应用程序，此更改可能会导致连接故障。您可以将此参数设置为 0（关闭），从而恢复到之前的默认行为。

有关驱动程序特定的详细信息，请参阅[连接到 Babelfish 数据库集群](babelfish-connect.md)。

当客户端连接到 TDS 端口（原定设置为 `1433`）时，Babelfish 将在客户端握手过程中发送的安全套接字层 (SSL) 设置与 Babelfish SSL 参数设置 (`tds_ssl_encrypt`) 进行比较。然后，Babelfish 确定是否允许连接。如果允许连接，则强制执行加密行为与否具体取决于您的参数设置和客户端提供的加密支持。

下表显示了 Babelfish 对于每个组合的行为。


| 客户端 SSL 设置 | Babelfish SSL 设置 | rds.force\$1ssl | 是否允许连接？ | 返回给客户端的值 | 
| --- | --- | --- | --- | --- | 
| ENCRYPT\$1ON | 任何 | 任何 | 允许，整个连接都已加密 | ENCRYPT\$1ON | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=1 | 任何 | 允许，整个连接都已加密 | ENCRYPT\$1REQ | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=0 | 允许，登录数据包已加密 | ENCRYPT\$1OFF | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=1 | 否，连接已关闭 | ENCRYPT\$1OFF | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=0 | 是 | ENCRYPT\$1NOT\$1SUP | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=1 | 任何 | 否，连接已关闭  | ENCRYPT\$1REQ | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=1 | 否，连接已关闭 | ENCRYPT\$1NOT\$1SUP | 
| ENCRYPT\$1CLIENT\$1CERT | 任何 | 任何 | 否，连接已关闭 | 不支持 | 