华为云用户手册

  • 参数解析 表1 慢日志相关的参数解析 参数名称 说明 log_min_duration_statement 设置最小执行时间,执行时间大于等于这个值的语句都将被记录。 参数值变小会导致日志记录增加,进而增加磁盘I/O消耗,降低SQL性能。 log_statement 记录SQL语句的类型。该参数默认值为“ddl”,且不支持修改。 cron.log_statement 执行任务前,是否将SQL打印到日志。该参数默认值为“on”。
  • 查看日志明细 在实例列表,选择目标实例,单击实例名称。 选择“日志”,在“慢日志”页签下,查看慢SQL语句的详细信息。 慢日志功能支持查看指定执行语句类型或时间段的慢日志记录。 针对当前的慢日志功能, 阈值参数“log_min_duration_statement”可以控制SQL响应时间为多少而生成一条慢日志记录,只会影响新增的部分。比如慢日志阈值参数为1000毫秒时,上报了超过1000毫秒的慢日志记录,后续调整为100毫秒,原有上报的日志仍然会展示。 目前支持查询2000条慢日志明细。
  • 操作场景 慢日志用来记录执行时间超过当前慢日志阈值“log_min_duration_statement”的语句,您可以通过慢日志的日志明细,查找出执行效率低的语句,进行优化。您也可以下载慢日志进行业务分析。 目前支持查看近30天的慢日志。 FlexusRDS for PostgreSQL支持以下执行语句类型: 全部 SELECT INSERT UPDATE DELETE CREATE DROP ALTER DO CALL COPY WITH OTHER
  • FlexusRDS怎么扩CPU/内存规格 Flexus云数据库RDS提升了客户使用效率,简化了业务管理,节省的成本给客户进行让利,不提供规格变更直接服务。 建议客户购买前做好业务规划,可以提交工单,联系客服获取专业性建议。规划好业务后直接按套餐化购买,购买后按套餐的配置使用,不提供直接进行规格变更的功能。 针对客户CPU/内存不够使用的场景,我们通过备份恢复功能提供了灵活的解决方案。 例如,通过备份恢复到新实例,在新实例的选择过程中,您可以选择新的符合业务需要的规格。
  • 查看日志明细 在实例列表,选择目标实例,单击实例名称。 选择“日志”,在“错误日志”页签下,查看错误日志的详细信息。 您可单击页面右上角的级别筛选框查看不同级别的日志记录。 Flexus云数据库RDS实例支持查看以下级别的错误日志: All log levels ERROR FATAL PANIC 错误日志通过日志加载的方式展示,在查询时间范围内日志条数没有上限,不显示日志总条数。 您还可单击右上角的选择时间区域,查看不同时间段内的错误日志。 对于无法完全显示的“描述”,鼠标悬停查看完整信息。
  • 下载错误日志 在实例列表,选择目标实例,单击实例名称。 选择“日志”,在右侧单击“日志下载”。 对状态为“准备完成”的日志文件,单击操作列中的“下载”,下载错误日志。 图1 下载错误日志 系统会自动加载下载准备任务,加载时长受日志文件大小及网络环境影响。 下载准备过程中,日志文件状态显示为“准备中...”。 下载准备完成,日志文件状态显示为“准备完成”。 下载准备工作失败,日志文件状态显示为“异常”。 “准备中...”和“异常”状态的日志文件不支持下载。 支持下载40MB~100MB的日志文件。 下载链接有效期为5分钟。如果超时,提示用户下载链接已失效,是否重新下载。如果需要重新下载,单击“确定”,否则单击“取消”。 下载的日志仅包含主节点的日志。
  • 设置告警规则 在监控指标卡片上,单击“+”,跳转到设置告警规则页面。 图2 选择监控指标 在“创建告警规则”页面,填选相关信息。 名称:系统会随机产生一个名称,用户也可以进行修改。 描述:告警规则描述。 告警策略:触发告警规则的告警策略。是否触发告警取决于连续周期的数据是否达到阈值。 发送通知:配置是否发送邮件、短信、HTTP和HTTPS通知用户。 关于告警通知的配置,请参见《 云监控 用户指南》。 单击“立即创建”,告警规则创建完成。
  • 查看监控指标 在实例列表,选择目标实例,单击实例名称。 选择“监控”,查看实例的监控指标。 图1 监控指标 表1 支持的监控指标 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) 非活跃逻辑复制槽数量 该指标用于统计当前数据库中存在的非活跃逻辑复制槽数量。 ≥ 0 FlexusRDS for PostgreSQ L实例 1分钟 CPU使用率 该指标用于统计测量对象的CPU使用率,以比率为单位。 0-100% FlexusRDS for PostgreSQL实例 1分钟 每分钟临时文件生成数量 该指标为获取临时文件在1分钟内生成的数量。 ≥ 0 Count/min FlexusRDS for PostgreSQL实例 1分钟 内存使用率 该指标用于统计测量对象的内存使用率,以比率为单位。 0-100% FlexusRDS for PostgreSQL实例 1分钟 每分钟临时文件生成大小 该指标为获取临时文件在1分钟内生成的大小。 ≥ 0 Byte/min FlexusRDS for PostgreSQL实例 1分钟 IOPS 该指标用于统计当前实例,单位时间内系统处理的I/O请求数量(平均值)。 ≥ 0 counts/s FlexusRDS for PostgreSQL实例 1分钟 同步复制阻塞时间 该指标为获取同步复制主备机间复制阻塞的时长。 ≥ 0 s FlexusRDS for PostgreSQL实例 1分钟 网络输入吞吐量 该指标用于统计平均每秒从测量对象的所有网络适配器输入的流量,以字节/秒为单位。 ≥ 0 bytes/s FlexusRDS for PostgreSQL实例 1分钟 备机(只读)流复制状态 该指标为获取备机(只读)流复制状态,0:备机(只读)异常,1:备机(只读)正常,2:该实例为主机。 Count FlexusRDS for PostgreSQL实例 1分钟 网络输出吞吐量 该指标用于统计平均每秒从测量对象的所有网络适配器输出的流量,以字节/秒为单位。 ≥ 0 bytes/s FlexusRDS for PostgreSQL实例 1分钟 inode数 数据盘已使用的inode数。 ≥ 0 Counts FlexusRDS for PostgreSQL实例 5分钟 磁盘利用率 该指标用于统计测量对象的磁盘利用率,以比率为单位。 0-100% FlexusRDS for PostgreSQL实例 1分钟 事务日志使用量 事务日志所占用的磁盘容量。 ≥ 0 MB FlexusRDS for PostgreSQL实例 1分钟 复制插槽使用量 复制插槽文件所占磁盘容量。 ≥ 0 MB FlexusRDS for PostgreSQL实例 1分钟 数据库连接数 当前连接到数据库的后端量。 ≥ 0 counts FlexusRDS for PostgreSQL实例 1分钟 事务最大已使用ID数 事务最大已使用ID。 ≥ 0 counts FlexusRDS for PostgreSQL实例 1分钟 事务日志生成速率 平均每秒生成的事务日志大小。 ≥ 0 MB/s FlexusRDS for PostgreSQL实例 1分钟 最滞后副本滞后量 多个副本中最滞后副本(依据接收到的WAL数据)滞后量。 ≥ 0 MB FlexusRDS for PostgreSQL实例 1分钟 复制时延 副本滞后时延。 ≥ 0 ms FlexusRDS for PostgreSQL实例 1分钟 用户使用连接数 该指标为统计用户实际使用的连接数(不包括监控运维使用的内置连接)。 ≥ 0 Counts FlexusRDS for PostgreSQL实例 1分钟 用户活跃连接数 该指标为统计用户实际使用的活跃连接数(不包括监控运维使用的内置活跃连接)。 ≥ 0 Counts FlexusRDS for PostgreSQL实例 1分钟 TPS 该指标用于统计每秒事务执行次数,含提交和回退的次数。 ≥ 0 次/秒 FlexusRDS for PostgreSQL实例 1分钟 连接数使用率 该指标用于统计当前已用的PgSQL连接数占总连接数的百分比。 0-100% FlexusRDS for PostgreSQL实例 1分钟 活跃连接数 该指标为统计数据库当前活跃连接数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 事务空闲连接数 该指标为统计数据库当前空闲连接数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 操作行数 实例每秒增删改查操作的行数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 最长事务存活时长 该指标为统计当前数据库中存在的最长事务存活时长。 ≥ 0 ms FlexusRDS for PostgreSQL实例 1分钟 最长未决事务存活时长 该指标为统计当前数据库存在的最长未决事务存活时长。 ≥ 0 ms FlexusRDS for PostgreSQL实例 1分钟 磁盘IO使用率 该指标为统计磁盘IO使用率。磁盘IO使用率是指磁盘正在处理IO请求的时间与总时间的百分比。 说明: 当磁盘IO使用率达到100%,只能说明在统计时间段内,磁盘一直有数据写入,磁盘性能还需要结合IOPS、磁盘的吞吐量、读写时延等多个指标共同决定。 0-100% FlexusRDS for PostgreSQL实例 1分钟 等待锁的会话数 该指标为统计当前处于阻塞状态的会话个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 swap in速率 该指标为统计每秒从交换区写到内存的大小。 ≥ 0 KB/s FlexusRDS for PostgreSQL实例 1分钟 swap out速率 该指标为统计每秒写入交换区的内存的大小。 ≥ 0 KB/s FlexusRDS for PostgreSQL实例 1分钟 交换区总容量大小 该指标为统计交换区总量。 ≥ 0 MB FlexusRDS for PostgreSQL实例 1分钟 交换区容量使用率 该指标为统计交换区使用率。 0-100% FlexusRDS for PostgreSQL实例 1分钟 最大数据库年龄 该指标为统计当前数据库的最大数据库年龄(获取表pg_database中max(age(datfrozenxid))值)。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 用户态CPU时间占比 该指标为统计用户态CPU时间占比。 0-100% FlexusRDS for PostgreSQL实例 1分钟 内核态CPU时间占比 该指标为统计内核态CPU时间占比。 0-100% FlexusRDS for PostgreSQL实例 1分钟 硬盘IO等待时间占比 该指标为统计硬盘IO等待时间占比。 0-100% FlexusRDS for PostgreSQL实例 1分钟 IO读响应延迟 该指标为统计磁盘读响应平均延迟(以毫秒为单位)。 ≥ 0 ms FlexusRDS for PostgreSQL实例 1分钟 IO写响应延迟 该指标为统计磁盘写响应平均延迟(以毫秒为单位)。 ≥ 0 ms FlexusRDS for PostgreSQL实例 1分钟 读IOPS 该指标用于统计当前实例,单位时间内系统处理的读I/O请求数量(平均值)。 ≥ 0 counts/s FlexusRDS for PostgreSQL实例 1分钟 写IOPS 该指标用于统计当前实例,单位时间内系统处理的写I/O请求数量(平均值)。 ≥ 0 counts/s FlexusRDS for PostgreSQL实例 1分钟 已执行1s的SQL数 该指标为统计数据库执行时长1秒以上的慢SQL个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已执行3s的SQL数 该指标为统计数据库执行时长3秒以上的慢SQL个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已执行5s的SQL数 该指标为统计数据库执行时长5秒以上的慢SQL个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已执行log_min_duration_statement时长的SQL数 该指标为统计数据库执行时长比参数log_min_duration_statement大的慢SQL个数,该参数大小可根据业务需要进行更改。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 WAL日志占用空间大小 该指标为获取当前WAL日志所占空间大小。 ≥ 0 GB FlexusRDS for PostgreSQL实例 5分钟 审计日志大小 该指标为获取当前审计日志的大小。 ≥ 0 GB FlexusRDS for PostgreSQL实例 5分钟 内存命中率 内存命中率 ≥ 0 % FlexusRDS for PostgreSQL实例 1分钟 已开启1s的事务数 该指标为统计数据库开启时长1秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已开启3s的事务数 该指标为统计数据库开启时长3秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已开启5s的事务数 该指标为统计数据库开启时长5秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已空闲1s的事务数 该指标为统计数据库空闲时长1秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已空闲3s的事务数 该指标为统计数据库空闲时长3秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已空闲5s的事务数 该指标为统计数据库空闲时长5秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已执行1s的两阶段事务 该指标为统计数据库两阶段执行时长1秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已执行3s的两阶段事务 该指标为统计数据库两阶段执行时长3秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟 已执行5s的两阶段事务 该指标为统计数据库两阶段执行时长5秒以上的长事务个数。 ≥ 0 FlexusRDS for PostgreSQL实例 1分钟
  • 批量修改参数 在实例列表,选择指定的实例,单击实例名称。 选择“参数设置”。 打开批量修改开关,一次最多可以修改30个参数。 根据参数列表中“是否需要重启”提示,进行相应操作: 是:在实例列表中,查看“运行状态”,如果显示“参数变更,等待重启”,则需重启实例使之生效。 修改主实例的某些参数(如果是主备实例,备实例的参数也会被同步修改),需重启主实例使之生效。 否:无需重启,立即生效。 单击“保存”,在弹框中单击“是”,保存修改。 单击“取消”,在弹框中单击“是”,放弃本次设置。 参数修改完成后,您可以单击“参数修改历史”,查看参数的修改详情。当前仅显示7天之内的参数修改历史。
  • 修改单个参数 在实例列表,选择指定的实例,单击实例名称。 选择“参数设置”。 在参数列表的“操作”列,单击“修改”,修改参数值。 根据参数列表中“是否需要重启”提示,进行相应操作: 是:在实例列表中,查看“运行状态”,如果显示“参数变更,等待重启”,则需重启实例使之生效。 修改主实例的某些参数(如果是主备实例,备实例的参数也会被同步修改),需重启主实例使之生效。 否:无需重启,立即生效。 图1 参数修改 单击“确认”,在弹框中单击“是”,保存修改。 单击“取消”,放弃本次设置。 参数修改完成后,您可以单击“参数修改历史”,查看参数的修改详情。当前仅显示7天之内的参数修改历史。
  • 修改敏感参数 若干参数相关说明如下: 参数“search_path”值,必须配置为以逗号分隔的模式名序列,并需确保该模式名存在,否则会影响数据库的使用。 开启参数“log_duration”,可能会在日志中记录带有敏感信息的SQL语句,建议关闭该配置。 参数“log_min_duration_statement”用于设置最小执行时间,执行时间大于等于这个值的语句都将被记录,单位为毫秒。 值为0,表示记录所有语句,值为-1,表示不记录语句。具体请参见查看或下载FlexusRDS for PostgreSQL实例慢日志。 参数“temp_file_limit”是指在一个会话中触发临时文件写盘操作时,所有临时文件的总空间大小,单位为KB。取值范围为-1~2,147,483,647,值为-1,表示临时文件空间大小没有限制。 支持PostgreSQL 12、13、14、15版本。 通常避免设置值为-1,防止临时文件占用过多的磁盘空间,导致用户业务异常。 如果将参数值修改为较大值供临时使用,使用完成后没有将参数修改为原来的值,可能会导致误用临时空间导致占满磁盘停止用户业务,且用户实例变为异常。 “max_pred_locks_per_transaction”和“max_locks_per_transaction”参数的配置与“max_connections”、“max_prepared_transactions”的参数值有关,请结合实际业务需要进行配置,如果配置的参数值过大,可能会导致实例异常。
  • 修改性能参数 若干参数相关说明如下: 参数“log_statement”配置为“ddl”、“mod”或“all”,会记录创建及删除数据库用户的操作,包含数据库用户的密码等敏感信息,同时也会影响数据库的性能,请确认后进行配置。 开启参数“log_hostname”、“log_duration”、“log_connections”和“log_disconnections”会影响数据库的性能,请确认后进行配置。 “shared_buffers”参数配置的合理范围是系统内存的25%~40%,参数可配置的最大值为系统内存的80%,参数值过大会影响数据库的性能,请确认后进行配置。 “max_worker_processes”参数配置与“max_parallel_workers”、“max_parallel_workers_per_gather”参数值有关,建议根据业务需求进行配置,配置过大会影响数据库性能,请确认后进行配置。
  • 操作步骤 在实例列表,选择指定的实例,单击实例名称。 选择“备份恢复”。 在备份列表上方,单击“一键恢复”。 选择恢复日期和该日期下可恢复的时间区间,并输入要恢复到的时间点,选择恢复方式,单击“确定”。 恢复到新实例 跳转到“恢复到新实例”的服务选型页面: 新实例的数据库引擎版本,自动与原实例相同。 新实例的规格套餐可以重新选择,并且新实例磁盘大小必须大于或等于原实例的磁盘。 关于购买页各配置项说明,请参见购买FlexusRDS for PostgreSQL实例。 在恢复到新实例的页面,重新选择新套餐,即可实现规格变更。 查看恢复结果。 恢复到新实例 为用户重新创建一个和该时间点数据相同的实例。可看到实例由“创建中”变为“正常”,说明恢复成功。 恢复成功的新实例是一个独立的实例,与原有实例没有关联。实例创建完成后,系统会自动执行一次全量备份。
  • 操作步骤 在实例列表,选择指定的实例,单击实例名称。 选择“备份恢复”。 选择需要恢复的可用备份,单击操作列中的“恢复”。 选择需要的恢复方式,单击“确定”。 新实例:将备份恢复到新创建的实例上。 选择恢复到“新实例”,单击“确定”,跳转到“恢复到新实例”的服务选型页面: 新实例的数据库引擎版本,自动与原实例相同。 新实例的规格套餐可以重新选择,并且新实例磁盘大小必须大于或等于原实例的磁盘。 关于购买页各配置项说明,请参见购买FlexusRDS for PostgreSQL实例。 在恢复到新实例的页面,重新选择新套餐,即可实现规格变更。 查看恢复结果。 恢复到新实例 为用户重新创建一个和该备份数据相同的实例。可看到实例由“创建中”变为“正常”,说明恢复成功。 恢复成功的新实例是一个独立的实例,与原有实例没有关联。新实例创建成功后,系统会自动执行一次全量备份。
  • 方式3:按地址下载 在实例列表,选择指定的实例,单击实例名称。 选择“备份恢复”。 选择需要下载的可用备份,单击操作列中的“下载”。 在弹出框中,选择“按地址下载”,单击复制地址,通过下载地址下载备份文件。 图7 按地址下载 您还可以使用wget命令下载备份文件: wget -O FILE_NAME --no-check-certificate "DOWNLOAD_URL" 命令中的参数解释如下: FILE_NAME:下载成功后的备份文件名称,由于原始文件名称较长,可能会超出客户端文件系统的限制,建议下载备份文件时使用“-O”进行重命名。 DOWNLOAD_URL:需下载的备份文件所在路径,如果包含特殊字符则需要转义。
  • 方式1:使用OBS Browser+下载 在实例列表,选择指定的实例,单击实例名称。 选择“备份恢复”。 选择需要下载的可用备份,单击操作列中的“下载”。 在弹出框中,单击“OBS Browser+下载”,单击“确定”,通过OBS Browser+客户端下载备份文件。 图1 OBS Browser+下载 图2 下载指导页面 单击下载指导页面步骤1的“OBS Browser+”,下载客户端工具OBS Browser+。 解压并安装OBS Browser+。 使用下载指导页面步骤2的用户名,登录客户端工具OBS Browser+。 图3 登录OBS Browser+ 使用下载指导页面步骤2的桶名,挂载外部桶。 图4 挂载外部桶 如果需要跨账号访问 对象存储服务 的外部桶,需要添加访问权限,请参见对其他账号下的 IAM 用户授予桶和桶内资源的访问权限。 下载备份文件。 在OBS Browser+界面,单击添加成功的外部桶桶名,进入对象列表页面,在右侧搜索栏,输入下载指导页面步骤3的文件名称并检索,单击,下载备份文件。 图5 下载备份文件
  • 操作步骤 在实例列表,单击实例名称,进入“概览”页面。 单击自动扩容处的“设置”。 在弹框中,单击,设置如下参数: 图1 自动扩容 表1 参数说明 类别 说明 自动扩容 存储空间自动扩容开关。 可用最小存储空间 当可使用存储空间百分比小于等于该阈值时(10%、15%、20%),会触发自动扩容。 每次扩容大小 每次自动扩容的容量百分比,默认取值:5%~50%。 存储自动扩容上限 自动扩容上限,取值:120~4000,单位:GB。需要大于等于实例当前存储空间总大小。 单击“确定”。
  • 操作步骤 在实例列表,选择指定的实例,单击“重置密码”。 在“重置密码”弹框,输入新密码及确认密码。 图1 重置密码 请妥善管理您的密码,因为系统将无法获取您的密码信息。 所设置的密码长度为8~32个字符,至少包含大写字母、小写字母、数字、特殊字符三种字符的组合,其中允许输入 ~ ! @ # $ % ^ * - _ = + ? , 特殊字符。请您输入高强度密码并定期修改,以提高安全性,防止出现密码被暴力破解等安全风险。 单击“确定”,提交重置。 单击“取消”,取消本次重置。
  • 操作步骤 在实例列表,单击目标实例名称后的,编辑实例名称,单击“确认”,即可修改实例名称。 您也可以单击目标实例名称,进入实例的“概览”页面,在实例名称处单击,修改实例名称。 实例名称长度最小为4字符,最大为64个字符,如果名称包含中文,则不超过64字节(注意:一个中文字符占用3个字节),必须以字母或中文开头,区分大小写,可以包含字母、数字、中划线、下划线、英文句号或中文,不能包含其他特殊字符。 单击,提交修改。 单击,取消修改。 在实例列表,查看修改结果。
  • 迁移准备 FlexusRDS for PostgreSQL支持开启公网访问功能,通过弹性公网IP进行访问。您也可以通过Flexus云服务器X实例的内网访问FlexusRDS for PostgreSQL。 准备Flexus云服务器X实例或可通过公网访问FlexusRDS for PostgreSQL实例的设备。 通过公网地址连接FlexusRDS for PostgreSQL实例,需要对实例绑定弹性公网IP。 在准备Flexus云服务器X实例或可访问FlexusRDS for PostgreSQL的设备上,安装和FlexusRDS for PostgreSQL相同版本的PostgreSQL客户端。 PostgreSQL数据库或客户端会自带pg_dump和psql工具。
  • 索引设计规范 使用逻辑复制时,对需要进行逻辑复制的表设计主键或者唯一键。 使用外键时,一定要设置外键被删除或更新的动作,例如ON DELETE CASCADE。 在使用频繁(如查询、排序)的字段上创建索引。 对于固定条件的查询,建议创建并使用部分索引。 对于经常使用表达式作为查询条件的查询,建议创建并使用表达式索引。 索引也会占用存储,单表索引数量不宜太多,比如单列索引个数小于5,复合索引个数小于3。
  • 命名规范 对象名(如库、表、索引等)长度应小于等于63字节,注意某些字符(如中文)可能占用多个字节。 对象名不要使用数据库保留关键字,不能以“pg”和数字开头。 数据库名称长度可在1~63个字符之间,由字母、数字、或下划线组成,不能包含其他特殊字符,不能以“pg”和数字开头,且不能和PostgreSQL模板库重名。PostgreSQL模板库包括postgres、template0、template1。
  • SQL设计 查询时指定返回需要的字段,不要返回用不到的字段。 查询或比较字段是否为NULL时,只能使用IS NULL或IS NOT NULL条件。 查询条件中,尽量使用NOT EXISTS替代NOT IN。 聚合数据时,尽量使用UNION ALL代替UNION。 删除数据时,尽量使用TRUNCATE代替全表DELETE。 分批提交大事务中对数据的修改,防止事务提交或回滚时压力集中。 创建函数时,应该定义函数易变性分类为对它们合法的分类中最严格的种类,而不是选择默认的VOLATILE。VOLATILE类函数调用并发过高可能导致新连接无法接入。
  • 数据库年龄 数据库年龄的概念: 数据库年龄是PostgreSQL特有的概念,指的是数据库中最旧和最新两个事务ID的差值。 由于PostgreSQL的MVCC机制,数据库年龄最大为20亿,当年龄耗尽,数据库会强制关闭,只能联系技术支持来执行清理操作。 可以通过以下SQL查看当前数据库年龄: select datname, age(datfrozenxid) from pg_database; 建议通过“db_max_age” CES 指标来监控数据库年龄,告警阈值设置为10亿。
  • 稳定性 对于两阶段提交的事务,要及时提交或回滚,防止导致数据库膨胀。 选择业务低峰期变更表结构,如添加字段,索引操作。 业务高峰期创建索引时,建议使用CONCURRENTLY语法,并行创建索引,不堵塞表的DML。 业务高峰期修改表结构,要提前进行测试,防止表的REWRITE。 DDL操作需要设置锁等待超时时间,防止阻塞相关表的操作。 单个数据库库容量超过2T,需要考虑分库。 频繁访问的表,单表记录过2000万,或超过10GB,需要考虑分表或创建分区。 PostgreSQL的备库、只读库单进程回放WAL日志,最大回放速度为50 MB/s~70 MB/s,因此需要控制主库数据写入压力在50 MB/s以下,避免备机、只读复制异常。
  • 逻辑复制 创建的逻辑复制槽名需要在40个字节长度以下,否则可能导致全量备份失败。 使用逻辑复制时,注意删除不再使用的复制槽,防止数据库膨胀。 使用普通逻辑复制槽时,注意主备倒换(规格变更、小版本升级或主机故障等场景可能发生主备倒换)后复制槽会丢失,需要再次创建复制槽。 PostgreSQL 12.6及以上的小版本、13和14的所有小版本使用具备故障转移功能复制槽,避免主备倒换或数据库重启后复制槽丢失。 使用逻辑复制时,业务尽量避免长事务,废弃的两阶段事务需要及时提交,防止WAL日志积压,占用过高磁盘空间。 使用逻辑复制时,尽量避免大量使用子事务(事务内使用savepoint、exception等),防止造成过高的内存占用。 使用DRS等服务进行数据同步、迁移时,对于长期无业务的库,建议删除其中包含的逻辑复制槽,或添加心跳表来定期推进复制槽位点,避免WAL日志积压。
  • 日常运维 在实例管理界面下载慢SQL,及时关注并解决性能问题。 定期关注数据库的资源使用情况,若业务压力存在较大波动,建议配置资源告警,必要时扩充规格。业务写入压力过大会导致数据库重启恢复过程缓慢,影响业务可用性。 删除和修改记录时,需要先执行SELECT,确认无误才能提交执行。 大批量数据删除、更新后,应对被操作表执行VACUUM。 关注可用复制槽数以及创建的复制槽,请始终保持至少有一个空余的复制槽可供数据库备份使用,否则数据库备份会失败。 及时清理不再使用的复制槽,防止复制槽阻塞日志回收。 不要使用不记录日志的表(UN LOG GED TABLE),因为该表的数据会在数据库异常(如OOM、底层故障等)或发生主备倒换后丢失。 尽量避免对系统表做vacuum full操作,若有必要建议使用vacuum;否则执行vacuum full,并重启数据库后,可能导致数据库长时间无法连接。
  • 数据库连接 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事务,但不做任何操作。
  • 可靠性、可用性 生产数据库的实例类型务必选择主备类型。 生产数据库的CPU、内存、磁盘要有一定的冗余,正常使用保持在85%以下,防止出现OOM、磁盘满等异常问题。 将主、备机部署在不同可用区内,增加可用性。 将周期性备份设置到业务低峰期,并且不要关闭全量备份。 建议将主备的复制模式设置为“异步”,防止备机故障阻塞主机业务。 业务上需要关注临时文件大小与生成速率指标。若临时文件生成过多,会对性能产生影响,并且会拖慢数据库启动,造成业务不可用。 业务上应避免在单个实例创建大量对象。一般而言单个实例表个数不宜超过2万,单个数据库中表个数不宜超过4千。防止在数据库启动时,由于扫描表文件耗时过久,导致业务不可用。
  • 操作步骤 进入Flexus云数据库RDS控制台。 首次创建实例,单击“立即购买”,进入购买页面。 填选实例信息后,单击“立即购买”。 图1 选择规格 图2 选择购买时长 表1 基本信息 参数 描述 区域 资源所在的区域。 说明: 中国站支持的区域:华北-北京四、华东-上海一、华南-广州 不同区域内的产品内网不互通,且创建后不能更换,请谨慎选择。 数据库引擎 PostgreSQL 16、15、14、13、12。 性能规格 FlexusRDS for PostgreSQL实例的性能规格包括vCPU个数和内存、数据盘大小,以及实例类型。 数据盘:购买的存储空间大小,购买完成后支持设置自动扩容,最大可扩容至4000GB,详见自动扩容FlexusRDS for PostgreSQL实例存储空间。 实例类型 主备:一主一备的经典高可用架构。备机提高了实例的可靠性,创建主机的过程中,同步创建备机,备机创建成功后,用户不可见。 单机:采用单个数据库节点部署架构,与主备实例相比,它只包含一个节点,但具有高性价比。 网络 FlexusRDS for PostgreSQL实例默认网络为vpc-default-smb、subnet-default-smb。 虚拟私有云及子网为实例所在的虚拟网络环境,可以对不同业务进行网络隔离。您需要创建或选择所需的虚拟私有云。如何创建虚拟私有云,请参见创建虚拟私有云和子网。 开启选择网络的功能后,实例购买完成支持变更实例所属的虚拟私有云及子网。 实例名称 实例名称长度最小为4字符,最大为64个字符,如果名称包含中文,则不超过64字节(注意:一个中文字符占用3个字节),必须以字母或中文开头,区分大小写,可以包含字母、数字、中划线、下划线、英文句号或中文,不能包含其他特殊字符。 购买多个数据库实例时,名称自动按序增加4位数字后缀。例如输入instance,从instance-0001开始命名;如果已有instance-0010,从instance-0011开始命名。 购买时长 选择所需的时长,系统会自动计算对应的配置费用,时间越长,折扣越大。 自动续费 默认不勾选,不进行自动续费。 勾选后实例自动续费,自动续费周期与原订单周期一致。 购买数量 单次最多可批量申请50个数据库实例。如果您选择创建主备实例,数量选择为1,那么会同步创建一个主实例和一个备实例。 进行订单确认。 图3 订单确认 如果需要重新选择实例规格,单击“上一步”,回到上个页面修改实例信息。 如果订单确认无误,单击“去支付”,进入“付款”页面。 选择付费方式,完成付费。 FlexusRDS for PostgreSQL实例创建成功后,用户可以在实例列表对其进行查看和管理。 创建实例过程中,状态显示为“创建中”,创建完成的实例状态显示为“正常”。 创建实例时,系统默认开启自动备份策略,且不支持关闭。实例创建成功后,系统会自动创建一个全量备份。 数据库实例的管理员账号默认root。 创建实例时,系统会随机设置管理员账号的密码,连接数据库实例之前,需要先重置密码,否则无法连接数据库实例。详见重置FlexusRDS for PostgreSQL实例管理员密码。 数据库端口默认5432,不支持修改。
共100000条