# TaurusDB for PostgreSQL约束与限制
TaurusDB for PostgreSQL在使用上有一些固定限制，用来提高实例的稳定性和安全性。
#### 规格与性能限制
表1规格说明 
| 资源类型  | 规格                                                                                                                                                                                                                             |
|:---|:---|
| 存储空间  | - SSD云盘：40GB\~4000GB  - 极速型SSD：40GB\~4000GB   |
| 最大连接数 | 取决于"max_connections"参数的值。                                                                                                                                                                                                         |
| IOPS   | - SSD云盘：最大50000  - 极速型SSD：最大128000      |
   
#### 配额
表2配额 
| 资源类型    | 限制                                                                                                                                                                                                                          |
|:---|:---|
| 标签     | 1个实例最多支持20个标签配额。                                                                                                                                                                                                          |
| 免费备份空间   | TaurusDB for PostgreSQL提供了和实例磁盘大小相同的部分免费存储空间，用于存放您的备份数据。                                                                                                                                                                 |
| 自动备份保留天数 | 默认为7天，可设置范围为1～732天。                                                                                                                                                                                                        |
| 日志查询   | - 错误日志明细：2000条  - 慢日志明细：2000条   |
   
#### 命名限制
表3命名限制 
| 限制项    | 说明                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|
| 实例名称    | - 长度最小为4字符，最大为64个字符，如果名称包含中文，则不超过64字节（注意：一个中文字符占用3个字节）。  - 必须以字母或中文开头，区分大小写，可以包含字母、数字、中划线、下划线或中文，不能包含其他特殊字符。                                              |
| 数据库名称  | - 长度可在1～63个字符之间  - 由字母、数字、或下划线组成，不能包含其他特殊字符，不能以"pg"和数字开头，且不能和TaurusDB for PostgreSQL模板库重名。TaurusDB for PostgreSQL模板库包括postgres， template0 ，template1。   |
| 账号名称 | - 长度在1到128个字符之间。  - 由字母、数字、中划线或下划线组成，不能包含其他特殊字符，不能和系统用户名称相同。系统用户包括：rdsadmin, rdsuser, rdsbackup, rdsmirror。                                               |
| 备份名称   | - 长度在4\~64个字符之间。  - 必须以字母开头，区分大小写，可以包含字母、数字、中划线或者下划线，不能包含其他特殊字符。                                                                                                |
| 参数模板名称 | - 长度在1\~64个字符之间。  - 区分大小写，可包含字母、数字、中划线、下划线或句点，不能包含其他特殊字符。                                                                                                  |
   
#### 安全限制
表4安全限制 
| 限制项           | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| 管理员账户root权限    | 创建实例页面只提供管理员root账户，TaurusDB for PostgreSQL为root用户在特定场景进行了提权，详见[root用户权限说明]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 管理员账户root的密码 | - 长度为8\~32个字符。  - 至少包含大写字母、小写字母、数字、特殊字符三种字符的组合，其中允许输入\~!@#%\^\*-_=+?,特殊字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 数据库端口        | 设置范围为2100～9500。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 磁盘加密        | 购买磁盘加密后，在实例创建成功后不可修改磁盘加密状态，且无法更改密钥。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 虚拟私有云          | 目前TaurusDB for PostgreSQL实例创建完成后不支持切换虚拟私有云。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 安全组          | - 默认情况下，一个用户可以创建100个安全组。  - 默认情况下，一个安全组最多只允许拥有50条安全组规则。  - 目前一个TaurusDB for PostgreSQL实例允许绑定一个安全组，一个安全组可以关联多个TaurusDB for PostgreSQL实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 系统账户         | 创建TaurusDB for PostgreSQL数据库实例时，系统会自动为实例创建如下系统账户（用户不可使用），用于给数据库实例提供完善的后台运维管理服务。 - rdsAdmin：管理账户，拥有最高权限，用于查询和修改实例信息、故障排查、迁移、恢复等操作。  - pg_execute_server_program：允许用运行该数据库的用户执行数据库服务器上的程序来配合COPY和其他允许执行服务器端程序的函数。  - pg_read_all_settings：读取所有配置变量。  - pg_read_all_stats：读取所有的pg_stat_\*视图并且使用与扩展相关的各种统计信息。  - pg_stat_scan_tables：执行可能会在表上取得ACCESS SHARE锁的监控函数（可能会持锁很长时间）。  - pg_signal_backend：向其他后端发送信号（例如：取消查询、中止）。  - pg_read_server_files：允许使用COPY以及其他文件访问函数从服务器上该数据库可访问的任意位置读取文件。  - pg_write_server_files：允许使用COPY以及其他文件访问函数在服务器上该数据库可访问的任意位置中写入文件。  - pg_monitor：读取/执行各种监控视图和函数。这个角色是pg_read_all_settings、pg_read_all_stats以及pg_stat_scan_tables的成员。  - rdsRepl：复制账户，用于备实例在主实例上同步数据。  - rdsBackup：备份账户，用于后台的备份。  - rdsMetric：指标监控账户，用于watchdog采集数据库状态数据。   |
| 实例参数        | 为确保云数据库TaurusDB for PostgreSQL服务发挥出最优性能，可根据业务需求对用户创建的参数模板中的参数进行调整。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
#### 实例操作限制
表5实例操作限制 
| 限制项       | 说明                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|
| 实例部署      | 实例所部署的弹性云服务器，对用户都不可见，即只允许应用程序通过IP地址和端口访问数据库。                                                                                                                                                                                                                                                                                                                    |
| 数据迁移       | 云数据库TaurusDB for PostgreSQL提供了多种数据同步方案，可满足从TaurusDB for PostgreSQL、自建PostgreSQL数据库、其他云PostgreSQL、自建Oracle数据库、RDS for MySQL、自建MySQL数据库、或其他云MySQL同步到云数据库TaurusDB for PostgreSQL。 常用的数据迁移工具有：DRS、pg_dump、DAS。推荐使用DRS，DRS可以快速解决多场景下，数据库之间的数据流通问题，操作便捷、简单，仅需分钟级就能搭建完成迁移任务。通过服务化迁移，免去了传统的DBA人力成本和硬件成本，帮助您降低数据传输的成本。 |
| 主备复制        | TaurusDB for PostgreSQL本身提供主备复制架构的双节点集群，无需用户手动搭建。其中主备复制架构集群的备实例不对用户开放，用户应用不可直接访问。                                                                                                                                                                                                                                                                              |
| CPU使用率高 | CPU使用率很高或接近100%，会导致数据读写处理缓慢、连接缓慢、删除出现报错等，从而影响业务正常运行。                                                                                                                                                                                                                                                                                                           |
| 重启实例         | 无法通过命令行重启，必须通过管理控制台操作重启实例。                                                                                                                                                                                                                                                                                                                                       |
| 停止/开启实例   | - 支持对按需计费实例进行关机，通过暂时停止实例以节省费用。  - 在停止数据库实例后，支持手动重新开启实例。                                                                                                                 |
| 查看备份        | 下载手动和自动备份文件，用于本地存储备份。支持使用OBS Browser+下载、直接浏览器下载、按地址下载备份文件。                                                                                                                                                                                                                                                                                                      |
| 日志管理     | TaurusDB for PostgreSQL默认开启日志，不支持关闭。                                                                                                                                                                                                                                                                                                                             |
   
 #### root用户权限说明
TaurusDB for PostgreSQL开放了root用户权限。为了便于用户使用TaurusDB for PostgreSQL并保证在无操作风险的前提下，为root用户在特定场景进行了提权。
表6root用户权限说明 
| 版本         | 是否提权 | 提权起始版本 |
|:---|:---|:---|
| pgcore16 | 是     | 16.2  |
   
**root** **提权涉及以下场景：**
- 创建事件触发器
- 创建包装器
- 创建逻辑复制-发布
- 创建逻辑复制-订阅
- 查询和维护复制源
- 创建replication用户
- 创建全文索引模板以及Parser
- 对系统表执行vacuum
- 对系统表执行analyze
- 创建插件
- 授予用户某个对象的权限
 
