华为云用户手册

  • 计费说明 表1 计费说明 计费模式 变更操作 对费用的影响 包年/包月 扩容磁盘 您需要按照扩容的磁盘容量,结合使用周期内的剩余时间,补交差价。 例如:(以下价格仅作示例,实际价格以控制台显示为准) 客户于2023/6/1在华北-北京四购买规格为通用型 2vCPUs 8GB的RDS for PostgreSQL 14单机实例,SSD云盘存储,存储空间40GB,购买周期为一个月。存储空间单价为1元/GB/月。 客户在2023/6/15将磁盘扩容60GB,扩容后总容量100GB。 补交费用 = 存储空间扩容量 x 单价 x 剩余周期 公式中的剩余周期为每个自然月的剩余天数/对应自然月的最大天数。 本示例中,剩余周期=15(6月份剩余未使用天数)/ 30(6月份最大天数)= 0.5,代入公式可得补交费用 = 60 x 1 x 0.5 = 30元 包年/包月 缩容磁盘 缩容成功后,按缩容后的磁盘容量,结合使用周期内的剩余时间,退还费用。 退还费用计算方式与补交费用一致。 按需计费 变更磁盘 变更的磁盘容量按小时计费。具体请参见产品价格详情。
  • 扩容场景 随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,需要为云数据库RDS实例进行扩容。 当磁盘利用率大于等于97%,实例将显示“磁盘空间满”,实例业务发生闪断,并变为只读状态,此时不可进行写入操作,从而影响业务正常运行。 当实例处于“磁盘空间满”状态时,需扩容至磁盘空间使用率小于85%才可使实例处于可用状态,使数据库恢复正常的写入操作。建议您设置“磁盘使用率”指标的告警规则,及时了解磁盘使用情况,起到预警作用。具体请参见设置告警规则。 磁盘扩容期间,服务不中断。
  • 使用SSL证书连接 下面的代码使用psycopg2.connect函数,基于SSL证书认证方式,连接到RDS for PostgreSQL数据库实例,并使用SQL INSERT、UPDATE操作数据,使用cursor.execute方法对数据库进行SQL操作: 在某些实例版本上,如果创建表报错“permission deny for schema public”,则手动执行grant create on SCHEMA public to root;后可以解决。 import psycopg2 db_params ={'database':'postgres','user':'root','password':'****','host':'xxx.xxx.xxx.xxx','port':'5432','sslmode':'verify-ca','sslrootcert':'/path/to/CA/ca.pem',} conn=psycopg2.connect(**db_params) print("Connection established") cursor = conn.cursor() # Drop previous table of same name if one exists cursor.execute("DROP TABLE IF EXISTS inventory;") print("Finished dropping table (if existed)") # Create a table cursor.execute("grant create on SCHEMA public to root;") cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);") print("Finished creating table") # Insert some data into the table cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);",("banana",150)) cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);",("orange",154)) cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);",("apple",100)) print("Inserted 3 rows of data") cursor.execute("SELECT * FROM inventory;") result = cursor.fetchall() for row in result: print(row) # Clean up conn.commit() cursor.close() conn.close() 输出结果如下: Connection established Finished dropping table(if existed) Finished creating table Inserted 3 rows of data (1,'banana',150) (2,'orange',154) (3,'apple',100)
  • 参数说明 表1 参数说明 参数 说明 dbname 数据库名,即需要连接的数据库名(默认的管理数据库是postgres)。 user 连接数据库的用户。 password 连接数据库时用户的密码。 host 如果通过弹性云服务器连接,则是主机IP,即“概览”页面该实例的“内网地址”。 如果通过连接了公网的设备访问,则为该实例已绑定的“弹性公网IP”。 port 端口,默认5432,即“概览”页面该实例的“数据库端口”。 sslmode SSL连接模式。 disable:表示进行无证书连接,不关心安全性。 verify-ca: 采用CA认证方式。 其它选项参考社区文档。 sslrootcert sslrootcert:服务器证书路径。
  • 无证书连接 无证书方式连接RDS for PostgreSQL数据库的Python代码,可参考以下示例: import psycopg2 db_params ={'database':'postgres','user':'root','password':'****','host':'xxx.xxx.xxx.xxx','port':'5432','sslmode':'disable'} conn=psycopg2.connect(**db_params) print("Connection established") cursor = conn.cursor() # Drop previous table of same name if one exists cursor.execute("DROP TABLE IF EXISTS inventory;") print("Finished dropping table (if existed)") # Create a table cursor.execute("grant create on SCHEMA public to root;") cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);") print("Finished creating table") # Insert some data into the table cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);",("banana",150)) cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);",("orange",154)) cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);",("apple",100)) print("Inserted 3 rows of data") cursor.execute("SELECT * FROM inventory;") result = cursor.fetchall() for row in result: print(row) # Clean up conn.commit() cursor.close() conn.close()
  • 步骤1:购买E CS 登录管理控制台,查看是否有弹性云服务器。 有Linux弹性云服务器,执行3。 无Linux弹性云服务器,执行2。 图1 ECS实例 购买弹性云服务器时,选择Linux操作系统,例如CentOS。 由于需要在ECS下载PostgreSQL客户端,因此需要为ECS绑定弹性公网IP(EIP)。 购买Linux弹性云服务器请参考《弹性云服务器用户指南》中“购买弹性云服务器”章节。 在ECS实例基本信息页,查看ECS实例的区域和VPC。 图2 ECS基本信息 在RDS for PostgreSQ L实例 概览页,查看RDS实例的区域和VPC。 图3 PostgreSQL概览
  • 步骤2:测试连通性并安装PostgreSQL客户端 登录ECS实例,请参见《弹性云服务器用户指南》中“Linux弹性 云服务器远程登录 (VNC方式)”。 在RDS“实例管理”页面,单击实例名称进入“概览”页面。 选择“连接管理”,在“连接信息”模块获取实例的公网地址和数据库端口。 图4 连接信息 如果没有绑定公网地址,请参见绑定弹性公网IP。 在ECS上测试是否可以正常连接到RDS for PostgreSQL实例公网地址的端口。 telnet 公网地址 5432 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将RDS实例的公网IP地址和端口添加到出方向规则。 图5 ECS的安全组 查看RDS的安全组的入方向规则,如果源地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将ECS实例的私有IP地址和端口添加到入方向规则,具体操作请参见设置安全组规则。 图6 RDS的安全组 打开客户端安装页面。 PostgreSQL官网提供了针对不同操作系统的客户端安装方法。 下面将以CentOS下PostgreSQL 12版本为例,介绍安装PostgreSQL客户端。 选择数据库版本、操作系统、操作系统架构,在弹性云服务器上执行以下命令安装PostgreSQL客户端。 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 图7 安装客户端 数据库版本,选择与RDS for PostgreSQL数据库实例一致的版本。 操作系统,选择与弹性云服务器一致的操作系统。 操作系统架构,选择与弹性云服务器一致的操作系统架构。 图8 安装rpm包 图9 客户端安装完成
  • 步骤2:测试连通性并安装PostgreSQL客户端 登录ECS实例,请参见《弹性云服务器用户指南》中“Linux弹性云服务器远程登录(VNC方式)”。 在RDS“实例管理”页面,单击实例名称进入“概览”页面。 选择“连接管理”,在“连接信息”模块获取实例的内网地址和数据库端口。 图4 连接信息 在ECS上测试是否可以正常连接到RDS for PostgreSQL实例内网地址的端口。 telnet 192.168.0.7 5432 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将RDS实例的内网IP地址和端口添加到出方向规则。 图5 ECS的安全组 查看RDS的安全组的入方向规则,如果源地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将ECS实例的私有IP地址和端口添加到入方向规则,具体操作请参见设置安全组规则。 图6 RDS的安全组 打开客户端安装页面。 PostgreSQL官网提供了针对不同操作系统的客户端安装方法。 下面将以CentOS下PostgreSQL 12版本为例,介绍安装PostgreSQL客户端。 选择数据库版本、操作系统、操作系统架构,在弹性云服务器上执行以下命令安装PostgreSQL客户端。 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 图7 安装客户端 数据库版本,选择与RDS for PostgreSQL数据库实例一致的版本。 操作系统,选择与弹性云服务器一致的操作系统。 操作系统架构,选择与弹性云服务器一致的操作系统架构。 图8 安装rpm包 图9 客户端安装完成
  • 步骤1:购买ECS 登录管理控制台,查看是否有弹性云服务器。 有Linux弹性云服务器,执行3。 无Linux弹性云服务器,执行2。 图1 ECS实例 购买弹性云服务器时,选择Linux操作系统,例如CentOS。 由于需要在ECS下载PostgreSQL客户端,因此需要为ECS绑定弹性公网IP(EIP),并且选择与RDS for PostgreSQL实例相同的区域、VPC和安全组,便于RDS for PostgreSQL和ECS网络互通。 购买Linux弹性云服务器请参考《弹性云服务器用户指南》中“购买弹性云服务器”章节。 在ECS实例基本信息页,查看ECS实例的区域和VPC。 图2 ECS基本信息 在RDS for PostgreSQL实例概览页,查看RDS实例的区域和VPC。 图3 PostgreSQL概览 确认ECS实例与RDS for PostgreSQL实例是否处于同一区域、同一VPC内。 是,执行步骤2:测试连通性并安装PostgreSQL客户端。 如果不在同一区域,请重新购买实例。不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 如果不在同一VPC,可以修改ECS的VPC,请参见切换虚拟私有云。
  • 操作步骤 登录弹性云服务器。 创建弹性云服务器时,要选择操作系统,例如CentOS 7,并为其绑定EIP(Elastic IP,弹性公网IP)。 使用远程连接工具通过绑定的EIP连接到弹性云服务器。 打开客户端安装页面。 选择数据库版本、操作系统、操作系统架构,在弹性云服务器上执行以下命令安装PostgreSQL客户端。 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 图1 安装客户端 数据库版本,选择与RDS for PostgreSQL数据库实例一致的版本。 操作系统,选择与弹性云服务器一致的操作系统。 操作系统架构,选择与弹性云服务器一致的操作系统架构。 图2 安装rpm包 图3 客户端安装完成 连接PostgreSQL实例。 图4 连接成功
  • 连接RDS for PostgreSQL实例的方式 云数据库 RDS for PostgreSQL提供使用命令行、图形化界面、JDBC和数据管理服务(Data Admin Service,简称DAS)的连接方式。 表1 RDS连接方式 连接方式 使用场景 通过DAS连接RDS for PostgreSQL实例(推荐) 通过数据管理服务(Data Admin Service,简称DAS)这款可视化的专业数据库管理工具,可获得执行SQL、高级数据库管理、智能化运维等功能,做到易用、安全、智能地管理数据库。云数据库RDS服务默认开通DAS连接权限。 通过psql命令行客户端连接实例 在Linux操作系统中,您需要在弹性云服务器上安装PostgreSQL客户端,通过psql命令行连接实例。支持公网和内网两种连接方式: 系统默认提供内网IP地址。 当应用部署在弹性云服务器上,且该弹性云服务器与云数据库RDS实例处于同一区域,同一VPC时,建议单独使用内网IP连接弹性云服务器与RDS for PostgreSQL实例。 不能通过内网IP地址访问PostgreSQL实例时,使用公网访问,建议单独绑定弹性公网IP连接弹性云服务器(或公网主机)与RDS for PostgreSQL实例。 通过图形化界面连接RDS for PostgreSQL实例 在Windows操作系统中,您可以使用pgAdmin客户端连接到RDS for PostgreSQL实例。 通过JDBC连接RDS for PostgreSQL实例 通过JDBC连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。 通过Python连接RDS for PostgreSQL实例 通过Python连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。 父主题: 连接实例
  • 常见问题 Q:修改需要重启实例的参数后,为什么在实例重启完成后,参数修改历史中发现参数没有应用,并且实例状态依然为“参数变更,等待重启”? A:修改规格参数,比如“work_mem”、“shared_buffers”、“max_connections”等参数,如果这些参数值修改都比较大,可能会导致数据库启动失败,为了不影响数据库正常运行,在数据库启动失败时,系统自动对参数的修改做了回滚,因此参数并没有修改成功。请您重新查看参数修改的合理性,如果您确认需要修改参数,建议先扩大规格,再进行修改。变更规格操作请参见变更实例的CPU和内存规格。
  • 常见参数的修改 部分内核参数的修改需要重启后生效,在控制台上修改参数后,会有如下提示: 图1 修改参数 表1 常见参数的修改 参数名 描述 文档链接 timezone 设置显示和解释时间戳的时区。 如何修改时区 wal_level 设置写入WAL文件的信息的内容详细级别。只读实例恒设置为logical。 RDS for PostgreSQL是否支持test_decoding插件 max_connections 设置并发连接的最大个数。 实例使用规范
  • 数据库连接 RDS for PostgreSQL是进程架构,每个客户端连接都对应一个后端服务进程。 根据业务的复杂度,合理配置“max_connections”,例如,参考pgtune: WEB应用:“max_connections ”配置为 200 OLTP应用:“max_connections”配置为 300 数据仓库 :“max_connections”配置为 40 桌面应用:“max_connections”配置为 20 混合应用:“max_connections”配置为 100 根据业务需要限制单个用户的最大连接数。 ALTER ROLE xxx CONNECTION LIMIT xxx; 保持合理的活跃连接数,建议活跃连接数为CPU数量的2~3倍。 避免长事务,长事务会阻塞autovacuum等,导致出现性能问题。 避免空闲长连接,长连接的缓存可能较大,导致内存不足,建议通过配置idle_session_timeout和idle_in_transaction_session_timeout参数等方式,定期释放长连接。 检查应用程序框架,避免应用程序自动begin事务,但不做任何操作。
  • 稳定性 对于两阶段提交的事务,要及时提交或回滚,防止导致数据库膨胀。 选择业务低峰期变更表结构,如添加字段,索引操作。 业务高峰期创建索引时,建议使用CONCURRENTLY语法,并行创建索引,不堵塞表的DML。 业务高峰期修改表结构,要提前进行测试,防止表的REWRITE。 DDL操作需要设置锁等待超时时间,防止阻塞相关表的操作。 单个数据库库容量超过2T,需要考虑分库。 频繁访问的表,单表记录过2000万,或超过10GB,需要考虑分表或创建分区。 PostgreSQL的备库、只读库单进程回放WAL日志,最大回放速度为50 MB/s~70 MB/s,因此需要控制主库数据写入压力在50 MB/s以下,避免备机、只读复制异常。
  • 数据库年龄 数据库年龄的概念: 数据库年龄是PostgreSQL特有的概念,指的是数据库中最旧和最新两个事务ID的差值。 由于RDS for PostgreSQL的MVCC机制,数据库年龄最大为20亿,当年龄耗尽,数据库会强制关闭,只能联系技术支持来执行清理操作。 可以通过以下SQL查看当前数据库年龄: select datname, age(datfrozenxid) from pg_database; 建议通过“db_max_age” CES 指标来监控数据库年龄,告警阈值设置为10亿。
  • 可靠性、可用性 生产数据库的实例类型务必选择主备类型。 生产数据库的CPU、内存、磁盘要有一定的冗余,正常使用保持在85%以下,防止出现OOM、磁盘满等异常问题。 将主、备机部署在不同可用区内,增加可用性。 将周期性备份设置到业务低峰期,并且不要关闭全量备份。 建议将主备的复制模式设置为“异步”,防止备机故障阻塞主机业务。 业务上需要关注临时文件大小与生成速率指标。若临时文件生成过多,会对性能产生影响,并且会拖慢数据库启动,造成业务不可用。 业务上应避免在单个实例创建大量对象。一般而言单个实例表个数不宜超过2万,单个数据库中表个数不宜超过4千。防止在数据库启动时,由于扫描表文件耗时过久,导致业务不可用。
  • 日常运维 在实例管理界面下载慢SQL,及时关注并解决性能问题。 定期关注数据库的资源使用情况,若业务压力存在较大波动,建议配置资源告警,必要时扩充规格。业务写入压力过大会导致数据库重启恢复过程缓慢,影响业务可用性。 删除和修改记录时,需要先执行SELECT,确认无误才能提交执行。 大批量数据删除、更新后,应对被操作表执行VACUUM。 关注可用复制槽数以及创建的复制槽,请始终保持至少有一个空余的复制槽可供数据库备份使用,否则数据库备份会失败。 及时清理不再使用的复制槽,防止复制槽阻塞日志回收。 不要使用不记录日志的表(UN LOG GED TABLE),因为该表的数据会在数据库异常(如OOM、底层故障等)或发生主备倒换后丢失。 尽量避免对系统表做vacuum full操作,若有必要建议使用vacuum;否则执行vacuum full,并重启数据库后,可能导致数据库长时间无法连接。
  • 逻辑复制 创建的逻辑复制槽名需要在40个字节长度以下,否则可能导致全量备份失败。 使用逻辑复制时,注意删除不再使用的复制槽,防止数据库膨胀。 使用普通逻辑复制槽时,注意主备倒换(规格变更、小版本升级或主机故障等场景可能发生主备倒换)后复制槽会丢失,需要再次创建复制槽。 RDS for PostgreSQL 12.6及以上的小版本、13和14的所有小版本使用具备故障转移功能复制槽,避免主备倒换或数据库重启后复制槽丢失。 使用逻辑复制时,业务尽量避免长事务,废弃的两阶段事务需要及时提交,防止WAL日志积压,占用过高磁盘空间。 使用逻辑复制时,尽量避免大量使用子事务(事务内使用savepoint、exception等),防止造成过高的内存占用。 使用DRS等服务进行数据同步、迁移时,对于长期无业务的库,建议删除其中包含的逻辑复制槽,或添加心跳表来定期推进复制槽位点,避免WAL日志积压。
  • SQL设计 查询时指定返回需要的字段,不要返回用不到的字段。 查询或比较字段是否为NULL时,只能使用IS NULL或IS NOT NULL条件。 查询条件中,尽量使用NOT EXISTS替代NOT IN。 聚合数据时,尽量使用UNION ALL代替UNION。 删除数据时,尽量使用TRUNCATE代替全表DELETE。 分批提交大事务中对数据的修改,防止事务提交或回滚时压力集中。 创建函数时,应该定义函数易变性分类为对它们合法的分类中最严格的种类,而不是选择默认的VOLATILE。VOLATILE类函数调用并发过高可能导致新连接无法接入。
  • 索引设计规范 使用逻辑复制时,对需要进行逻辑复制的表设计主键或者唯一键。 使用外键时,一定要设置外键被删除或更新的动作,例如ON DELETE CASCADE。 在使用频繁(如查询、排序)的字段上创建索引。 对于固定条件的查询,建议创建并使用部分索引。 对于经常使用表达式作为查询条件的查询,建议创建并使用表达式索引。 索引也会占用存储,单表索引数量不宜太多,比如单列索引个数小于5,复合索引个数小于3。
  • 命名规范 对象名(如库、表、索引等)长度应小于等于63字节,注意某些字符(如中文)可能占用多个字节。 对象名不要使用数据库保留关键字,不能以“pg”和数字开头。 数据库名称长度可在1~63个字符之间,由字母、数字、或下划线组成,不能包含其他特殊字符,不能以“pg”和数字开头,且不能和RDS for PostgreSQL模板库重名。RDS for PostgreSQL模板库包括postgres、template0、template1。
  • 指定时间点回放 在只读实例“概览”页面,暂停wal日志回放。 图2 暂停回放 打开回放开关,选择“回放至指定时间”,表示回放到指定时间点后暂停回放。 图3 回放至指定时间 选择“自动回放”,表示恢复至正常回放状态,只读会连续回放接收到的wal日志。 选择“可回放时间范围”内的某个时间点,单击“确定”,设置回放目标时间点。 只读将回放wal日志到离目标时间点最近且在目标时间点之前的事务提交点。 单击“重启实例”,开始恢复到设置的时间点。 图4 重启实例 查看回放状态。 图5 回放中 图6 回放完成 指定时间点回放结束后,需要重置回放时间并重启实例,才能恢复正常回放。 单击“重置回放时间”,在弹框中,单击“确定”。 重启实例后仍会存在延迟回放,延迟时间取决于参数“recovery_min_apply_delay”的取值。如果想立刻回放到指定时间,需要将该参数设置为0。 图7 重置回放时间 单击“重启实例”。 图8 重启实例 查看回放状态恢复正常。 图9 恢复正常回放
  • 客户端SSL加密相关参数配置 PostgreSQL数据库开启SSL加密后,表示允许客户端通过SSL连接数据库。 在客户端连接数据库时,可根据不同场景选择“sslmode”参数取值。 客户端使用SSL连接时,“sslmode”选择“allow”、“prefer”、“Require”、“Verify-CA”或“Verify-Full”。默认值是“prefer”。 客户端不使用SSL连接时,“sslmode”选择“Disable”。 当“sslmode”取值为“Verify-CA”或“Verify-Full”时,需要配置“Root certificate”参数,表示数据库CA证书的路径,CA证书可在界面上下载。 表2 sslmode参数值说明 sslmode参数值 说明 disable 客户端不使用SSL连接。 allow 客户端将尝试建立SSL/TLS连接,但如果服务器不支持SSL/TLS连接,客户端将以普通文本方式连接。 prefer 默认模式,客户端将首先尝试建立SSL连接,如果服务器不支持SSL连接,则以普通文本方式连接。 require 客户端只尝试SSL连接,只对数据链路加密,并不验证服务器证书的有效性。 verify-ca 客户端使用SSL加密连接到服务器,并验证服务器证书的有效性。 verify-full 客户端使用SSL加密连接到服务器,并验证服务器证书的有效性,同时比对证书内的CN或DNS与连接时配置的数据库连接地址是否一致。
  • 服务端SSL加密相关参数配置 表1 服务端SSL加密相关参数 参数名称 值 描述 ssl on 默认启用SSL连接,不可修改。 ssl_cert_file /CA/server.pem SSL服务器证书文件的位置,不可修改。 ssl_ciphers ALL:!ADH:!LOW:!EXP:!MD5:!3DES:!DES:@STRENGTH; 指定一个SSL密码列表,用于安全连接。用户可根据安全要求进行修改。推荐使用 EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EDH+aRSA+AESGCM:EDH+aDSS+AESGCM:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!SRP:!RC4 ssl_key_file /CA/server.key SSL服务器私钥文件的位置,不可修改。 ssl_min_protocol_version TLSv1.2 设置要使用的最小SSL/TLS协议版本,用户可根据安全要求进行修改,推荐使用TLSv1.2及以上版本。
  • 客户端查看是否开启SSL加密 客户端是否使用SSL加密,可通过以下方式查看: 使用psql连接数据库时,连接成功后出现如下信息: SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) protocol表示SSL连接协议是TLSv1.2。 cipher表示使用SSL连接的加密算法为ECDHE-RSA-AES256-GCM-SHA384。 bits表示密钥长度为256位。 可以通过查询“pg_stat_ssl”视图来查看客户端连接是否使用SSL。如果客户端使用SSL连接,则该视图中会显示相应的连接信息。 SELECT * FROM pg_stat_ssl; 该查询将返回所有当前SSL连接的统计信息,包括连接的进程ID、客户端IP地址、SSL协议版本、SSL加密算法、客户端证书的有效性和到期时间等。如果客户端连接使用SSL,则可以在该视图中看到相关信息。
  • 准备工作 准备弹性云服务器或可访问云数据库RDS实例的设备。 通过内网地址连接云数据库RDS实例,需具备以下条件。 创建并登录弹性云服务器,请参见《弹性云服务器用户指南》中“购买弹性云服务器”和“登录弹性云服务器”。 该弹性云服务器与目标实例必须处于同一VPC内。 该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。 通过公网地址连接云数据库RDS实例,需具备以下条件。 先对关系型数据库实例绑定公网地址,如何绑定公网地址,请参见绑定和解绑弹性公网IP。 保证本地设备可以访问云数据库RDS实例绑定的公网地址。 在1中的弹性云服务器或可访问云数据库RDS的设备上,安装pgAdmin客户端。
  • 功能限制 如果主实例和只读实例的计费模式同为包年/包月,则只允许通过云数据库RDS的管理控制台退订。 如果主实例和只读实例的计费模式同为包年/包月,退订时请优先退订只读实例,否则将导致只读实例退费异常,无法正常退费。 包周期主实例到期时,在保留期后会被删除,如果包周期主实例存在只读实例,则只读实例无法正常退费。 不支持单独购买只读实例,需要购买主实例后才能购买只读实例。 1个主实例最多可以创建5个只读实例。
  • 产品简介 目前,云数据库 RDS for PostgreSQL的实例支持只读实例。 在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法抵抗读取压力,甚至对主业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,您可以在某个区域中创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,以此增加应用的吞吐量。您需要在应用程序中分别配置主实例和每个只读实例的连接地址,才能实现将写请求发往主实例而将读请求发往只读实例。 只读实例为单个节点的架构(没有备节点),采用PostgreSQL的原生复制功能将主实例的更改同步到所有只读实例,主节点网络延时很高会影响主实例和只读实例之间的数据同步。只读实例跟主实例在同一区域,但可以在不同的可用区。
  • 功能特点 只读实例规格可以与主实例不一致,只读实例规格必须大于等于主实例规格,否则易导致只读实例延迟高、负载高等现象。 支持按需计费,购买方式灵活,按实际使用时长计费;也支持包年/包月计费,相对于按需计费提供更大的折扣,对于长期使用者,推荐该方式。 不需要维护账号与数据库,全部通过主实例同步。 提供系统性能监控。云数据库RDS提供近20个系统性能的监控视图,如磁盘容量、IOPS、连接数、CPU利用率、网络流量等,用户可以轻松查看实例的负载。 支持绑定和解绑弹性公网IP。 备份设置:不支持自动备份设置以及手动备份。 实例恢复:不支持通过备份文件或任意时间点创建只读实例,不支持通过备份集覆盖只读实例。 数据迁移:不支持将数据迁移至只读实例。 数据库管理:不支持创建和删除数据库。 账号管理:只读实例不提供创建账号权限。 性能规格设置:创建只读实例所选规格,必须大于等于当前主实例的规格。
共100000条