华为云用户手册

  • 如何提高RDS数据库的查询速度 可以参考如下建议: 如果产生了慢日志,可以通过查看慢日志来确定是否存在运行缓慢的SQL查询,以及各个查询的性能特征,从而定位查询运行缓慢的原因。查询RDS for MariaDB日志,请参见查看或下载慢日志。 查看云数据库RDS实例的CPU使用率指标,协助定位问题。具体请参见查看监控指标。 可以创建只读实例专门负责查询,减轻主实例负载,分担数据库压力。 如果是实例规格较小但负载过高,您可以提高CPU/内存规格,具体请参见变更实例的CPU和内存规格。 多表关联查询时,关联字段要加上索引。 可以指定字段或者添加where条件进行查询,避免用select*语句进行全表扫描。 父主题: 性能调优
  • 连接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证书连接通过了加密功能,具有更高的安全性。 父主题: 连接实例
  • 操作系统更新 云数据库 RDS for MySQL实例需要适时进行操作系统更新,以提高数据库性能和数据库的整体安全状况。 实例内核版本升级时,云数据库 RDS for MySQL会根据操作系统的实际情况,决定是否更新以及更新适合的操作系统冷补丁版本。 操作系统更新不会更改数据库实例的版本或数据库实例信息。 此外,云数据库 RDS for MySQL会在用户设置的运维时间段内,通过热补丁方式及时修复影响重大的操作系统漏洞。 父主题: 变更实例
  • 操作场景 对于“包年/包月”模式的数据库实例,您需要退订订单,从而删除数据库实例资源。您可以参考退订单个实例(方法一)和退订单个实例(方法二)退订单个实例订单,也可以批量退订数据库实例订单。关于退订费用,请参见退订规则说明。 退订主实例订单时,会同步删除该主实例及其对应的只读实例。由于只读实例的为单独的订单,因此只读实例的订单不会被同步删除,需要您手动退订,否则系统会继续收取费用。退订只读实例的操作方法同主实例。 对于“按需计费”模式的主实例或只读实例,您需要在关系型数据库的“实例管理”页面对其进行删除,更多操作请参见删除按需实例。
  • 操作背景 mysqlbinlog工具用于解析Binlog备份文件,包含在MySQL软件包中。您可在MySQL官网下载对应版本的MySQL软件包,解压并获取解压包中的mysqlbinlog工具(MySQL 5.6和5.7对应的mysqlbinlog版本均为3.4)。由于存在部分用户使用的mysqlbinlog工具版本太旧,无法正确解析Binlog备份文件,因此,为您整理了本文,指导您获取最新的mysqlbinlog工具。 RDS for MySQL也支持使用第三方工具解析Binlog。
  • 操作方法 下载MySQL软件包。 软件包版本最好与当前您使用的MySQL大版本保持一致。 例如,您本地的MySQL版本为5.7.27,则下载如下版本和系统的软件包: Product Version:5.7.27 Operating System:Linux-Generic 下载完成后的MySQL软件包名为:mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz。 图1 下载 解压软件包,找到mysqlbinlog工具。 执行如下命令,查看mysqlbinlog工具的版本信息。 [root@ecs]# tar -zxf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz[root@ecs]# cd mysql-5.7.27-linux-glibc2.12-x86_64/bin[root@ecs]# ll mysqlbinlog-rwxr-xr-x 1 7161 31415 11310886 Jun 10 2019 mysqlbinlog[root@ecs]# ./mysqlbinlog -V./mysqlbinlog Ver 3.4 for linux-glibc2.12 at x86_64 使用mysqlbinlog工具解析binlog。 以解析“mysql-bin.000001”为例: [root@ecs]# ./mysqlbinlog --no-defaults -vv /root/mysql-bin.000001/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;DELIMITER /*!*/;# at 4#200316 17:54:14 server id 1 end_log_pos 126 CRC32 0x92b3f2ca Start: binlog v4, server v 5.7.27-5-debug-log created 200316 17:54:14 at startupROLLBACK/*!*/;BINLOG 'xkxvXg8BAAAAegAAAH4AAAAAAAQANS43LjI3LTUtZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGTG9eEzgNAAgAEgAEBAQEEgAAYgAEGggAAAAICAgCAAAACgoKKioAEjQAXz0AAcrys5I='/*!*/;# at 126#200316 17:54:14 server id 1 end_log_pos 157 CRC32 0xfcc47ad6 Previous-GTIDs# [empty]# at 157#200316 17:54:27 server id 1 end_log_pos 204 CRC32 0xa7febd1f Rotate to mysqlbin.000002 pos: 4SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;DELIMITER ;# End of log file/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  • 事件监控支持的事件说明 表1 资源异常事件 事件来源 事件名称 事件ID 事件级别 事件说明 处理建议 事件影响 RDS 创建实例业务失败 createInstanceFailed 重要 创建实例失败产生的事件,一般是磁盘个数,配额大小不足,底层资源耗尽导致。 检查磁盘个数、配额大小,释放资源后重新创建。 无法创建数据库实例。 实例全量备份失败 fullBackupFailed 重要 单次全量备份失败产生的事件,不影响以前成功备份的文件,但会对“恢复到指定时间点”的功能有一些影响,导致“恢复到指定时间点”时增量备份的恢复时间延长。 重新执行一次手工备份。 备份失败。 主备切换异常 activeStandBySwitchFailed 重要 主备切换异常是由于网络、物理机有某种故障导致备机没有接管主机的业务,短时间内会恢复到原主机继续提供服务。 检查应用和数据库之间的连接是否重新建立了连接。 无 复制状态异常 abnormalReplicationStatus 重要 出现”复制状态异常“事件通常有两种情况: 1、主备之间复制时延太大(一般在写入大量数据或执行大事务的时候出现),在业务高峰期容易出现阻塞。 2、主备间的网络中断,导致主备复制异常。 提交工单。 但不会导致原来单实例的读写中断,客户的应用是无感知的。 复制状态异常已恢复 replicationStatusRecovered 重要 即复制时延已回到正常范围内,或者主备之间的网络通信恢复。 不需要处理。 无 实例运行状态异常 faultyDBInstance 重要 由于灾难或者物理机故障导致单机或者主实例故障时会上报本事件,属于关键告警事件。 检查是否有设置自动备份策略,并且提交工单。 可能导致数据库服务不可用。 实例运行状态异常已恢复 DBInstanceRecovered 重要 针对灾难性的故障,RDS有高可用工具会自动进行备机重建,重建完成之后即会上报本事件。 不需要处理。 无 单实例转主备实例失败 singleToHaFailed 重要 创建备机时或备机创建完成后主备机之间配置同步发生故障时会产生此事件,一般是由于备节点所在数据中心资源不足导致。 提交工单。 “单实例转主备实例失败”不会导致原来单实例的读写中断,客户的应用是无感知的。 数据库进程重新启动 DatabaseProcessRestarted 重要 一般是内存不足、负载过高导致数据库进程停止 通过云监控的数据,查看是否有内存飙升、cpu长期过高、磁盘满使用率不足等的情况,可以选择提升CPU内存规格或者优化业务逻辑 进程挂掉的时候,业务中断。RDS服务会自动拉起进程,尝试恢复业务。 实例磁盘满 instanceDiskFull 重要 一般是由于数据空间占用过大导致。 对实例进行扩容操作。 实例由于磁盘空间满将会变成只读实例,数据库不可进行写入操作。 实例磁盘满恢复 instanceDiskFullRecovered 重要 实例磁盘状态恢复正常。 不需要处理。 实例解除只读状态,恢复写操作。 kafka连接失败 kafkaConnectionFailed 重要 一般是由于网络波动或kafka服务端出现异常等原因导致。 检查网络状况和kafka服务端状态。 审计日志无法发送到kafka服务端。 表2 操作类事件 事件来源 事件名称 事件ID 事件级别 事件说明 RDS 重置数据库管理员密码 resetPassword 重要 重置数据库管理员密码 集群扩容等操作 instanceAction 重要 磁盘扩容、规格变更 删除集群下的实例 deleteInstance 次要 删除集群下的实例 修改备份策略 setBackupPolicy 次要 修改备份策略 修改参数组 updateParameterGroup 次要 修改参数组 删除参数组 deleteParameterGroup 次要 删除参数组 重置参数组 resetParameterGroup 次要 重置参数组 修改数据库端口号 changeInstancePort 重要 修改数据库端口号 实例主备切换 PrimaryStandbySwitched 重要 实例主备切换 父主题: 事件监控
  • 事件监控简介 事件监控提供了事件类型数据上报、查询和告警的功能。方便您将业务中的各类重要事件或对云资源的操作事件收集到云监控服务,并在事件发生时进行告警。 事件即云监控服务保存并监控的RDS资源的关键操作,您可以通过“事件”了解到谁在什么时间对系统哪些资源做了什么操作,如重置数据库管理员密码、修改备份策略等。 事件监控为您提供上报自定义事件的接口,方便您将业务产生的异常事件或重要变更事件采集上报到云监控服务。 事件监控默认开通,您可以在事件监控中查看系统事件和自定义事件的监控详情,目前支持的系统事件请参见事件监控支持的事件说明。 父主题: 事件监控
  • 操作场景 对于“包年/包月”模式的数据库实例,您需要退订订单,从而删除数据库实例资源。您可以参考退订单个实例(方法一)和退订单个实例(方法二)退订单个实例订单,也可以批量退订数据库实例订单。关于退订费用,请参见退订规则说明。 退订主实例订单时,会同步删除该主实例及其对应的只读实例。由于只读实例的为单独的订单,因此只读实例的订单不会被同步删除,需要您手动退订,否则系统会继续收取费用。退订只读实例的操作方法同主实例。 对于“按需计费”模式的主实例或只读实例,您需要在关系型数据库的“实例管理”页面对其进行删除,更多操作请参见删除按需实例。
  • 操作场景 事件定时器Event Scheduler是事件(event)调度任务的总开关。由于原生事件定时器不能保证主、备库的event状态一致,一旦进行主备切换会导致event调度失败。云数据库 RDS for MariaDB提供了event状态同步功能,确保相关的event正常调度。该功能依赖在console上开启、关闭事件定时器来实现。 创建实例时,事件定时器默认不开启。 主、备实例切换后,事件状态同步是否开启保持不变,依然保持主库“event_scheduler”为“on”,备库为“off”。 恢复到新实例时,事件状态与原实例保持一致。 单机实例转为主备实例,事件状态与主实例保持一致。
  • 支持审计的关键操作列表 通过云审计服务,您可以记录与华为云云数据库RDS实例相关的操作事件,便于日后的查询、审计和回溯。 表1 云审计服务支持的RDS操作列表 操作名称 资源类型 事件名称 创建实例、创建只读、恢复到新实例 instance createInstance 扩容、规格变更 instance instanceAction 实例重启 instance instanceRestart 恢复到原有实例 instance instanceRestore 实例重命名 instance instanceRename 重置密码 instance resetPassword 设置数据库版本配置参数 instance setDBParameters 重置实例的数据库版本配置参数 instance resetDBParameters 设置备份策略-打开,关闭,修改 instance setBackupPolicy 修改数据库端口号 instance changeInstancePort 绑定解绑EIP instance setOrResetPublicIP 修改安全组 instance modifySecurityGroup 创建标签 instance createTag 删除标签 instance deleteTag 修改标签 instance modifyTag 删除实例 instance deleteInstance 主备倒换 instance instanceFailOver 修改主备同步模式 instance instanceFailOverMode 修改主备倒换策略 instance instanceFailOverStrategy 创建快照 backup createManualSnapshot 复制快照 backup copySnapshot 下载备份(通过OBS下载) backup downLoadSnapshot 下载备份(通过浏览器下载) backup backupsDownLoad 删除快照 backup deleteManualSnapshot 合并下载binlog backup packBackupsDownLoad 创建参数模板 parameterGroup createParameterGroup 修改参数模板 parameterGroup updateParameterGroup 删除参数模板 parameterGroup deleteParameterGroup 复制参数模板 parameterGroup copyParameterGroup 重置参数模板 parameterGroup resetParameterGroup 应用参数模板 parameterGroup applyParameterGroup 保存参数模板 parameterGroup saveParameterGroup 冻结删除 all rdsUnsubscribeInstance 实例冻结 all rdsfreezeInstance 父主题: CTS审计
  • 事件监控简介 事件监控提供了事件类型数据上报、查询和告警的功能。方便您将业务中的各类重要事件或对云资源的操作事件收集到云监控服务,并在事件发生时进行告警。 事件即云监控服务保存并监控的RDS资源的关键操作,您可以通过“事件”了解到谁在什么时间对系统哪些资源做了什么操作,如重置数据库管理员密码、修改备份策略等。 事件监控为您提供上报自定义事件的接口,方便您将业务产生的异常事件或重要变更事件采集上报到云监控服务。 事件监控默认开通,您可以在事件监控中查看系统事件和自定义事件的监控详情,目前支持的系统事件请参见事件监控支持的事件说明。 父主题: 事件监控
  • 事件监控支持的事件说明 表1 资源异常事件 事件来源 事件名称 事件ID 事件级别 事件说明 处理建议 事件影响 RDS 创建实例业务失败 createInstanceFailed 重要 创建实例失败产生的事件,一般是磁盘个数,配额大小不足,底层资源耗尽导致。 检查磁盘个数、配额大小,释放资源后重新创建。 无法创建数据库实例。 实例全量备份失败 fullBackupFailed 重要 单次全量备份失败产生的事件,不影响以前成功备份的文件,但会对“恢复到指定时间点”的功能有一些影响,导致“恢复到指定时间点”时增量备份的恢复时间延长。 重新执行一次手工备份。 备份失败。 主备切换异常 activeStandBySwitchFailed 重要 主备切换异常是由于网络、物理机有某种故障导致备机没有接管主机的业务,短时间内会恢复到原主机继续提供服务。 检查应用和数据库之间的连接是否重新建立了连接。 无 复制状态异常 abnormalReplicationStatus 重要 出现”复制状态异常“事件通常有两种情况: 1、主备之间复制时延太大(一般在写入大量数据或执行大事务的时候出现),在业务高峰期容易出现阻塞。 2、主备间的网络中断,导致主备复制异常。 提交工单。 但不会导致原来单实例的读写中断,客户的应用是无感知的。 复制状态异常已恢复 replicationStatusRecovered 重要 即复制时延已回到正常范围内,或者主备之间的网络通信恢复。 不需要处理。 无 实例运行状态异常 faultyDBInstance 重要 由于灾难或者物理机故障导致单机或者主实例故障时会上报本事件,属于关键告警事件。 检查是否有设置自动备份策略,并且提交工单。 可能导致数据库服务不可用。 实例运行状态异常已恢复 DBInstanceRecovered 重要 针对灾难性的故障,RDS有高可用工具会自动进行备机重建,重建完成之后即会上报本事件。 不需要处理。 无 单实例转主备实例失败 singleToHaFailed 重要 创建备机时或备机创建完成后主备机之间配置同步发生故障时会产生此事件,一般是由于备节点所在数据中心资源不足导致。 提交工单。 “单实例转主备实例失败”不会导致原来单实例的读写中断,客户的应用是无感知的。 数据库进程重新启动 DatabaseProcessRestarted 重要 一般是内存不足、负载过高导致数据库进程停止 通过云监控的数据,查看是否有内存飙升、cpu长期过高、磁盘满使用率不足等的情况,可以选择提升CPU内存规格或者优化业务逻辑 进程挂掉的时候,业务中断。RDS服务会自动拉起进程,尝试恢复业务。 实例磁盘满 instanceDiskFull 重要 一般是由于数据空间占用过大导致。 对实例进行扩容操作。 实例由于磁盘空间满将会变成只读实例,数据库不可进行写入操作。 实例磁盘满恢复 instanceDiskFullRecovered 重要 实例磁盘状态恢复正常。 不需要处理。 实例解除只读状态,恢复写操作。 kafka连接失败 kafkaConnectionFailed 重要 一般是由于网络波动或kafka服务端出现异常等原因导致。 检查网络状况和kafka服务端状态。 审计日志无法发送到kafka服务端。 表2 操作类事件 事件来源 事件名称 事件ID 事件级别 事件说明 RDS 重置数据库管理员密码 resetPassword 重要 重置数据库管理员密码 集群扩容等操作 instanceAction 重要 磁盘扩容、规格变更 删除集群下的实例 deleteInstance 次要 删除集群下的实例 修改备份策略 setBackupPolicy 次要 修改备份策略 修改参数组 updateParameterGroup 次要 修改参数组 删除参数组 deleteParameterGroup 次要 删除参数组 重置参数组 resetParameterGroup 次要 重置参数组 修改数据库端口号 changeInstancePort 重要 修改数据库端口号 实例主备切换 PrimaryStandbySwitched 重要 实例主备切换 父主题: 事件监控
  • 系统视图 本章节介绍了在PostgreSQL11开源版本的基础上,RDS for PostgreSQL增强版支持的系统视图。 表1 系统视图 超级管理员 DBA USER ALL_ALL_TABLES DBA_ALL_TABLES - ALL_COL_COMMENTS - USER_COL_COMMENTS - DBA_DATA_FILES - ALL_DIRECTORIES DBA_DIRECTORIES - ALL_INDEXES DBA_INDEXES USER_INDEXES ALL_JOBS DBA_JOBS USER_JOBS ALL_OBJECTS - USER_OBJECTS ALL_PROCEDURES DBA_PROCEDURES USER_PROCEDURES ALL_SOURCE DBA_SOURCE USER_SOURCE ALL_SEQUENCES DBA_SEQUENCES USER_SEQUENCES ALL_TABLES DBA_TABLES USER_TABLES - DBA_TABLESPACES USER_TABLESPACE ALL_TAB_COLUMNS DBA_TAB_COLUMNS USER_TAB_COLUMNS - DBA_TRIGGERS USER_TRIGGERS ALL_USERS DBA_USERS - ALL_VIEWS DBA_VIEWS USER_VIEWS ALL_IND_COLUMNS DBA_IND_COLUMNS USER_IND_COLUMNS ALL_TAB_PARTITIONS DBA_TAB_PARTITIONS USER_TAB_PARTITIONS ALL_PART_TABLES DBA_PART_TABLES USER_PART_TABLES ALL_PART_KEY_COLUMNS DBA_PART_KEY_COLUMNS USER_PART_KEY_COLUMNS ALL_PART_INDEXES DBA_PART_INDEXES USER_PART_INDEXES ALL_TAB_SUBPARTITIONS DBA_TAB_SUBPARTITIONS USER_TAB_SUBPARTITIONS ALL_SUBPART_KEY_COLUMNS DBA_SUBPART_KEY_COLUMNS USER_SUBPART_KEY_COLUMNS 表2 普通视图 视图名称 说明 V$SESSION 展示了与当前会话相关的信息,如SID,username等。 NLS_SESSION_PARAMETERS 展示了当前会话的NLS参数及取值。 V$SESSION_LONGOPS 显示运行时间超过6秒的数据库操作的状态。 父主题: RDS for PostgreSQL增强版
  • 函数 本章节介绍了在PostgreSQL11开源版本的基础上,RDS for PostgreSQL增强版支持的内置函数和高级函数包。 表1 内置函数 内置函数 说明 add_months(date,integer) 返回date加上integer的值,返回值为DATE类型。 appendchildxml(XMLType_instance, XPath_string, value_expr[, namespace_string]) 在XMLType类型数据XMLType_instance指定位置XPath_string处追加value_expr节点,其中namespace_string用于描述XPath_string的命名空间信息。 asciistr(string) 返回给定字符串string对应的ASCII值,不支持非ASCII字符。 bin_to_num(expr_list) 将expr_list中的二进制串转换为对应的十进制数,返回值类型为NUMBER。 bitand(number1,number2) 返回number1和number2按位与的值,返回值为BIT类型。 convert(char, dest_char_set[, source_char_set]) 将source_char_set字符集编码格式的输入字符串char,转换为dest_char_set字符集编码格式,该函数只在服务端生效。 cosh(n) 返回参数n的双曲余弦值; decode(expr,search1, result1[[,search2, result2],......][, default]) 将expr表达式值依次与所有search表达式(search1,search2......)进行比较,如果与searchn进行匹配,则返回resultn,否则返回default。如果没有default,返回null。 empty_blob() 返回一个空BLOB类型。 hextoraw(char) 将十六进制字符串转换为RAW类型的值。 instrb(string, substring[, position[, occurrence]]) 返回从字符string的第position位置开始,第occurrence次出现的子串substring起始位置,默认从字符串string首部开始第一次出现的位置。 last_day(date) 返回date所在月的最后一天。 lengthb(char) 返回char字符的字节长度,char支持的类型为所有字符串类型(如CHAR, VARCHAR2, NCHAR, NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。 listagg(measure_expr[, 'delimiter']) within group(order_by_clause) [over query_partition_clause] 将query_partition_clause分组中的每个列表达式measure_expr值按order_by_clause规则排序后,再合并成一行,值之间使用delimiter分隔符进行分割。 lnnvl(condition) 返回条件表达式condition的取反值,返回类型为BOOLEAN。 mod(n2, n1) 支持除数为0的情况,即当n1为0时,直接返回n2。 months_between(date1, date2) 返回date1与date2之间相差的月数,当date2早于date1,返回值为负数。 nanvl(n2, n1) 当单精度或双精度浮点数n2的值为NAN,则返回n1,否则返回n2。 nchr(number) 返回本地字符集中二进制与number相等的字符。 new_time(date, timezone1, timezone2) 返回timezone1的date时间对应的timezone2的时间,返回值类型为DATE。 next_day(date, char) 返回date后的第一个自然日(包括工作日、休息日和节假日),返回值为DATE类型。 numtodsinterval(n, interval_unit) 根据INTERVAL数据类型单元interval_unit(取值范围:'DAY'、'HOUR'、'MINUTE'、'SECOND'),将数字n转换为数据类型INTERVAL DAY TO SECOND。 numtoyminterval(n, 'interval_unit') 将数字n按照指定单位interval_unit转为数据类型INTERVAL YEAR TO MONTH,其中interval_unit取值为:YEAR、MONTH。 nlssort(char[, nlsparam]) 按照nlsparam指定的排序字符集对字符串char进行排序,默认使用char字符串字符集排序; nls_upper(char[, nlsparam]) 根据nlsparam指定的排序规则将字符串char中的字母转换为大写,其中char字符串类型为CHAR, VARCHAR2, NCHAR, NVARCHAR2,CLOB或NCLOB,nlsparam的取值为'NLS_SORT = sort'。 nls_lower(char[, nlsparam]) 根据nlsparam指定的排序规则将字符串char中的字母转换为小写,其中char字符串类型为CHAR, VARCHAR2, NCHAR, NVARCHAR2,CLOB或NCLOB,nlsparam的取值为'NLS_SORT = sort'。 nvl(expr1, expr2) 返回expr1, expr2中第一个非空值。 rawtohex(raw) 将RAW类型的值转换为十六进制字符串。 regexp_count(source_char, pattern, position, match_param) 返回指定字符串source_char中的指定位置position开始,匹配正则表达式模式pattern的次数。其中,match_param参数会影响正则表达式匹配规则,比如match_param='i'忽略大小写等。 regexp_instr(source_char, pattern[, position[, occurrence[, return_opt[, match_param[, subexpr]]]]]) 该函数拓展了INSTR函数的功能,允许使用正则表达式匹配,返回值类型为INTEGER。 position表示查找起始位置。 occurrence表示查找pattern在source_char的第几次出现。 return_opt: 取值为0表示返回模式匹配的起始位置。 取值为1表示返回模式匹配的结束位置。 match_param表示正则表达式模式匹配控制参数,如区分大小写等。 subexpr表示正则表达式分组匹配的组号。 regexp_like(source_char, pattern[,match_param]) source_char为字符串表达式,pattern为正则表达式,match_param为正则表达式控制参数,返回字符串source_char是否可按照正则表达式pattern进行匹配。 regexp_substr(source_char, pattern[,position[,occurrence[,match_param[,subexpr]]]]) 按正则表达式在source_char字符串中匹配子字符串。 source_char为查找的输入字符串,支持所有字符串类型(如CHAR, VARCHAR2, NCHAR, NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。 pattern为子字符串匹配的正则表达式。 position为指定匹配的起始字符位置。 occurrence为pattern在source_char出现的次数。 match_parameter为正则表达式控制参数。 subexpr为pattern的第几个子表达式,范围为0~9。 raise_application_error(errnum, errmsg) 将错误码errnum与错误消息errmsg输出到客户端。 remainder(n2, n1) 返回n2/n1的余数,类似于mod,区别在于,mod取余时用了floor处理,而remainder使用round处理。返回值类型为NUMERIC或双精度浮点数(由入参类型决定)。 round(n,precision) 返回n的四舍五入值,precision为精度值。 scn_to_timestamp(number) 返回SCN号number产生的最近时间戳; sinh(n) 返回数字n的双曲正弦值,当n类型为BINARY_FLOAT,返回类型BINARY_DOUBLE,否则返回值类型为NUMERIC。 substr(char,position[,substring_length]) 返回char字符串中第position个字符开始,长度为substring_length的子字符串。若不指定substring_length,则截取到字符串结尾。 substrb(char, position[, substring_length]) 返回char字符串中第position个字节开始,长度为substring_length字节的子字符串。若不指定substring_length,则截取到字符串结尾。 sys_context(namespace, parameter) 返回指定参数parameter在命名空间namespace下的值,返回值类型为VARCHAR2。 sys_guid() 返回RAW类型的全局唯一标识。 sys_connect_by_path(column, char) 仅适用于CONNECT BY查询,返回column列的根节点; tanh(n) 返回参数n的双曲正切值; to_blob(char) 将char字符串转换为BLOB类型,char支持的类型为所有字符串类型(如CHAR, VARCHAR2, NCHAR, NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。 to_binary_float(expr) 将数字字符串expr转换为单精度float类型。 to_binary_double(expr) 将数字字符串expr转换为双精度float类型。 to_clob(char) 将char字符串转换为CLOB数据类型。 to_char(char) 增加char支持的类型:char、character、varchar。 to_date(char[,fmt]) 将char时间字符串按照fmt格式转换为date数据类型,char支持的类型有CHAR、VARCHAR2、NCHAR、 NVARCHAR2、TIMESTAMP。如果省略fmt,则char必须采用DATE数据类型的默认格式。 to_dsinterval('sql_format' | 'ds_iso_format') 将SQL标准(如'100 00:00:00')或ISO标准(如'P100DT05H')的时间字符串转换为数据类型INTERVAL DAY TO SECOND。 to_multi_byte(char) 将单字节字符char转换成对应的多字节字符。 to_number(expr) 将expr表达式值转换为number类型。 to_number(expr, fmt, 'nlsparam') 按照指定格式fmt转换expr字符串为数字,返回类型为NUMBER,其中nlsparam为国际化语言参数,支持的参数分别为:NLS_NUMERIC_CHARACTERS、NLS_CURRENCY、NLS_ISO_CURRENCY。 to_timestamp(char[,fmt]) 将char时间字符串按照fmt格式转换为timestamp数据类型,char支持的类型有CHAR、VARCHAR2、NCHAR、 NVARCHAR2、TIMESTAMP。如果省略fmt,则char必须采用TIMESTAMP数据类型的默认格式。 to_single_byte(char) 将多字节输入字符串转换为单字节字符串。 to_yminterval('sql_format' | 'ym_iso_format') 将SQL标准(如'01-02')或ISO标准(如'P1Y2M')的时间字符串转换为数据类型INTERVAL MONTH TO YEAR。 timestamp_to_scn(timestamp) 根据时间戳timestamp返回系统变更号SCN; trunc(date[, fmt]) 按照fmt指定的日期格式对date进行截断处理,返回值类型为DATE。如果省略fmt,则默认日期格式为'DDD'。 tz_offset({time_zone_name | '{+|-}hh:mi'}) 返回指定时区的偏移量,返回值类型VARCHAR2,参数可以是时区名time_zone_name或者'{+|-}hh:mi'格式字符串。 value(correlation_variable) 以对象表的方式返回correlation_variable所关联标的记录行,返回类型为correlation_variable所关联的对象表。 表2 高级函数包 高级函数包 说明 DBMS_OUTPUT.PUT(item) 将item字符串放入本地缓冲区;item为所有可以转换为字符串的类型。 DBMS_OUTPUT.PUT_LINE(item) 将item字符串放入本地缓冲区,然后将整个本地缓冲区的内容整体输出;item为所有可以转换为字符串的类型。 DBMS_RANDOM.SEED(val) val为生成随机数的种子,可为字符串和数字类型。 DBMS_RANDOM.VALUE([low,high]) 返回low和high之间长度为16位的随机数,如果不指定low和high的范围,则默认范围为0~1。 dbms_lob.getlength(lob_loc {clob|blob}) 返回lob_loc指定的LOB对象长度; dbms_lob.read(lob_loc, amount, offset, buffer) 从指定偏移offset读取LOB对象lob_loc指定长度amount的内容写入缓冲区buffer; dbms_lob.write(lob_loc, amount, offset, buffer) 将buffer缓冲器的内容写入大对象lob_loc缓冲区(并不影响所引用的大对象),从offset开始写入长度为amount。 utl_raw.cast_to_raw(char) 将VARCHAR2类型字符串char转换为RAW类型,返回值类型为RAW。 utl_raw.length(raw) 返回raw数据类型的字节长度,返回值类型为NUMBER。 utl_raw.cast_from_binary_integer(n, endianess) 按照endianess指定的内存对齐方式将整数n转换为RAW类型,其中endianess取值分别为: 1,大端对齐; 2,小端对齐; 3,按机器对齐方式; 父主题: RDS for PostgreSQL增强版
  • 隐式类型转换 本章节介绍了在PostgreSQL11开源版本的基础上,RDS for PostgreSQL增强版支持的隐式类型转换。 定长字符串类型CHARACTER与NUMERIC,INT4,INT8,FLOAT4,FLOAT8之间相互转换。 变长字符串类型VARCHAR与NUMERIC,INT4,INT8,FLOAT4,FLOAT8之间相互转换。 文本类型TEXT与NUMERIC,INT2,INT4,INT8,FLOAT4,FLOAT8之间相互转换。 短整形INT2转换为CHARACTER,VARCHAR。 二进制大对象BLOB与二进制RAW之间相互转换。 父主题: RDS for PostgreSQL增强版
  • 数据类型 本章节介绍了在PostgreSQL11开源版本的基础上,RDS for PostgreSQL增强版支持的数据类型。 表1 数据类型 数据类型名称 数据类型 变长字符串类型 VARCHAR2,NVARCHAR2 十进制浮点数类型 DECIMAL 双精度二进制浮点类型 BINARY_DOUBLE 二进制数据类型 RAW 二进制大对象类型 BLOB 字符大对象类型 CLOB 字节字符大对象类型 NCLOB 数字类型 NUMBER 变长字符串类型 NVARACHAR Unicode字符数据类型 NCHAR 三十二位浮点型数据类型 BINARY_FLOAT 长整型 LONG XML数据类型 XMLType 本地时间戳数据类型 TIMESTAMP WITH LOCAL TIME ZONE PL/SQL整型溢出翻转数据类型 BINARY_INTEGER PL/SQL整型溢出错误数据类型 PLS_INTEGER 父主题: RDS for PostgreSQL增强版
  • 预定义参数 本章节介绍了在PostgreSQL11开源版本的基础上,RDS for PostgreSQL增强版支持的预定义参数。 表1 预定义参数 预定义参数 说明 NLS_DATE_FORMAT 日期格式定义参数。 NLS_DATE_LANGUAGE 日期语言定义参数。 NLS_DUAL_CURRENCY 区域名称定义参数,影响本地货币符号显示格式; NLS_CURRENCY 货币符号定义参数。 NLS_TIME_FORMAT 不带时区的时间格式定义参数。 NLS_TIME_TZ_FORMAT 带时区的时间格式定义参数。 NLS_TIMESTAMP_FORMAT 不带时区的时间戳格式定义参数。 NLS_TIMESTAMP_TZ_FORMAT 带时区的时间戳格式定义参数。 NLS_NUMERIC_CHARACTERS 十进制数分组分割符定义参数。 NLS_ISO_CURRENCY 区域名称定义参数,影响ISO货币符号显示格式。 NLS_TERRITORY 区域名称定义参数,会根据区域货币与数字显示格式重置NLS_CURRENCY、NLS_ISO_CURRENCY、NLS_NUMERIC_CHARACTERS参数值。 NLS_LANGUAGE 区域语言定义参数。 NLS_LENGTH_SEMANTICS 指定字符串字段定义时的默认长度单位,取值范围:BYTE,CHAR; NLS_SORT 指定本地字符集排序规则。 NLS_COMP 指定会话级范围查找或排序操作的排序规则。 父主题: RDS for PostgreSQL增强版
  • 恢复方案 云数据库RDS提供了多种方式恢复实例的数据,用以满足不同的使用场景,如数据故障或损坏,实例被误删除。 表1 MySQL恢复方案 场景 恢复方案 恢复到云数据库RDS for MySQL 通过全量备份文件恢复云数据库RDS for MySQL实例数据 将云数据库RDS for MySQL实例的数据恢复到指定时间点 将云数据库RDS for MySQL的表数据恢复到指定时间点 跨区域备份恢复到云数据库RDS for MySQL 通过DRS实时迁移功能恢复数据 父主题: 数据恢复
  • 支持审计的关键操作列表 通过云审计服务,您可以记录与华为云云数据库RDS实例相关的操作事件,便于日后的查询、审计和回溯。 表1 云审计服务支持的RDS操作列表 操作名称 资源类型 事件名称 创建实例、创建只读、恢复到新实例 instance createInstance 扩容、规格变更 instance instanceAction 实例重启 instance instanceRestart 恢复到原有实例 instance instanceRestore 实例重命名 instance instanceRename 重置密码 instance resetPassword 设置数据库版本配置参数 instance setDBParameters 重置实例的数据库版本配置参数 instance resetDBParameters 设置备份策略-打开,关闭,修改 instance setBackupPolicy 修改数据库端口号 instance changeInstancePort 绑定解绑EIP instance setOrResetPublicIP 修改安全组 instance modifySecurityGroup 创建标签 instance createTag 删除标签 instance deleteTag 修改标签 instance modifyTag 删除实例 instance deleteInstance 主备倒换 instance instanceFailOver 修改主备同步模式 instance instanceFailOverMode 修改主备倒换策略 instance instanceFailOverStrategy 单机转主备实例 instance modifySingleToHaInstance 创建快照 backup createManualSnapshot 复制快照 backup copySnapshot 下载备份(通过OBS下载) backup downLoadSnapshot 下载备份(通过浏览器下载) backup backupsDownLoad 删除快照 backup deleteManualSnapshot 合并下载binlog backup packBackupsDownLoad 创建参数模板 parameterGroup createParameterGroup 修改参数模板 parameterGroup updateParameterGroup 删除参数模板 parameterGroup deleteParameterGroup 复制参数模板 parameterGroup copyParameterGroup 重置参数模板 parameterGroup resetParameterGroup 应用参数模板 parameterGroup applyParameterGroup 保存参数模板 parameterGroup saveParameterGroup 冻结删除 all rdsUnsubscribeInstance 实例冻结 all rdsfreezeInstance 按需转包周期、续费 all bssUpdateMetadata 父主题: CTS审计
  • 常见报错 场景一 ERROR: permission denied for function control_extension 解决方法:未使用root用户执行control_extension函数,需更改连接用户为root。 场景二 ERROR: function control_extension(unknown, unknown) is not unique 解决方法:在不指定schema时,可能存在同名函数,导致函数不唯一无法运行,可选择添加schema参数重试。 场景三 ERROR: function control_extension(unknown, unknown) does not exist 解决方法:control_extension函数在postgres库不存在,postgres库作为RDS运维库,禁止创建插件。
  • 参数配置 表4 影响采样报告的参数 参数名称 默认值 是否需要重启 功能描述 备注 pg_profile_pro.topn 20 否 控制每个排序报表中需要上报对象(语句、关系等)的数量。 该参数会影响样本的大小,如果您想在报表中显示更多的对象,样本中需要保留的对象也会越多。 pg_profile_pro.max_sample_age 3 否 样本的保留时间(单位:天)。保留时间超过参数时间的样本将在下一次采样时自动删除。 参数最小粒度为天。 pg_profile_pro.track_sample_timings off 否 启用此参数后,pg_profile_pro将跟踪详细的采样时间。 开启后,会记录每一细分采样的耗时,会增加空间占用。 pg_profile_pro.period 3600 否 采样周期(单位:秒)。 用于控制样本的采样周期。 该参数会影响样本的大小,采样周期越短,单位时间内的样本越多,插件表中保留的对象也会越多。 pg_profile_pro.enable on 否 采样开关,用于控制插件是否采样。 on:是。 off:否。 插件生成的报告依赖于样本,关闭了采样那么就无法生成最新的报告,但是可以查看历史采样的报告。 表格中参数默认值为最新RDS版本的默认值,其他版本可能会有不同。
  • 报告示例 报告由三部分组成,包含标题、目录和报表。 标题 报告标题包含以下内容:报告起止样本ID、pg_profile_pro内核版本、服务名称、报告起止时间。 图1 报告标题 目录 每层目录分别链接一个报表,用户可以通过目录总览报告中所有报表,也可通过单击链接查看报表内容。 如下图所示: 报表 报告呈现丰富的报表,从不同的维度、关注点来展现数据库的性能情况。 在每个报表后方会针对该报表关注点的提出建议。 图2 报表及建议 在报表中,将鼠标悬停在列标题上,可以看到对列标题的注解(中英文)。 图3 列标题注解
  • 操作场景 pg_profile_pro是一款用于监测RDS for PostgreSQL实例性能及运行状况的插件,针对SQL语句、表、索引、函数、事务、vacuum等,pg_profile_pro提供了监测数据报表,能够尽可能发现数据库存在的或潜在的性能问题。 该插件基于PostgreSQL的pg_stat_statements视图,会在用户的实例中创建历史统计,并生成统计样本,定期的统计样本用于生成监测报告,帮助识别最耗费资源的活动等。 因发现插件存在缺陷,现暂时关闭支持,我们会在缺陷修复后重新开放,给您造成不便敬请谅解。
  • 简介 有很多的数据库处于各种目的需要将数据复制到其他数据库,其中移动数据最有用的数据库技术之一被称为“逻辑复制”,但是数据库中有两类SQL语句,DML和DDL,出于很多原因,必须单独处理DDL,在迁移过程中需要让DBA以正确的顺序为所有涉及的数据库集群手动部署SQL,管理锁的争抢,并在必要时将新表添加到复制中。pgl_ddl_deplpy建立在pglogical之上,能够使得任何DDL SQL语句都可以直接传播给订阅者,解决了pglogical不能够同步DDL语句的问题。 更多信息,请参见pgl_ddl_deploy官方文档。
  • 不支持的命令 CREATE TABLE AS和SELECT INTO由于事务的一致性,不支持复制DDL,如果表是根据提供者的上一组数据创建的,那么在订阅者上运行相同的SQL将无法保证数据的一致性。例如: CREATE TABLE foo ASSELECT field_1, field_2, now() AS refreshed_atFROM table_1; SELECT INTO和CREATE TABLE AS类似,会出现提示: WARNING: Unhandled deployment logged in pgl_ddl_deploy.unhandled
  • 支持的版本 PostgreSQL 12、PostgreSQL 13、PostgreSQL 14最新的小版本支持该插件。可通过以下SQL语句查询当前实例是否支持该插件: SELECT * FROM pg_available_extension_versions WHERE name = 'vector'; 如果不支持,可通过升级内核小版本或者使用转储与还原升级大版本使用该插件。 RDS PostgreSQL实例支持的插件,具体请参见支持的插件列表。
  • 多语句客户端SQL限制 当客户端将所有SQL语句作为一个字符串发送到PostgreSQL时,就会出现复杂性和局限性,例如如下语句: CREATE TABLE foo (id serial primary key, bla text);INSERT INTO foo (bla) VALUES ('hello world'); 如果是通过psql调用的文件中,它将作为两个单独的SQL命令字符串运行。但是如果在Python或Ruby的ActiveRecord中创建了一个如上的字符串并执行了它,那么它将作为1个SQL命令字符串发送到Postgres。这种情况下根据allow_multi_statements有所不同: 如果是false,将只自动复制包含1个与事件触发命令标签匹配的命令标签的客户端SQL语句。这是安全的,但是可能会有未处理的部署。 如果是true,将只自动复制包含要传播的安全命令标签的DDL。比如,DDL和DML混合是被禁止的;如果在一个命令中有两个以上的DDL语句,作用在复制和不复制的表上,会出现涉及多个表的DDL问题。 基于以上情景的不能够自动同步到订阅者的SQL会记录为WARNING,并记录到unhandled表中,需要进行手动处理。 更多细节信息和解决复制中出现的问题请参阅pgl_ddl_deploy官方文档。
  • 基本使用 插件涉及到发布订阅和依赖于pglogical,需要添加和配置参数。 wal_level = 'logical'shared_preload_libraries = 'pglogical' shared_preload_libraries参数的修改可以参考修改shared_preload_libraries参数。 -- 发布端配置SELECT control_extension ('create', 'pglogical');SELECT control_extension ('create', 'pgl_ddl_deploy');CREATE TABLE foo (id INT PRIMARY KEY);-- 创建发布CREATE PUBLICATION testpub FOR TABLE foo;-- 配置复制集INSERT INTO pgl_ddl_deploy.set_configs (set_name, include_schema_regex, driver) VALUES ('testpub', '.*', 'native'::pgl_ddl_deploy.driver);-- 部署这个发布SELECT pgl_ddl_deploy.deploy('testpub');-- 添加用户权限SELECT pgl_ddl_deploy.add_role(oid) FROM pg_roles WHERE rolname='root';-- 订阅端配置SELECT control_extension ('create', 'pglogical');SELECT control_extension ('create', 'pgl_ddl_deploy');CREATE TABLE foo (id INT PRIMARY KEY);-- 创建订阅CREATE SUBSCRIPTION testsub CONNECTION conninfo PUBLICATION testpub;ALTER SUBSCRIPTION testsub REFRESH PUBLICATION; 配置完之后在发布端执行DDL语句: ALTET TABLE foo ADD COLUMN bla INT;CREATE TABLE bra (id INT PRIMARY KEY); 可以在订阅端验证: \d foo Table "public.foo" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | not null | bla | integer | | | Indexes: "foo_pkey" PRIMARY KEY, btree (id)​\dt List of relations Schema | Name | Type | Owner --------+---------+-------+---------- public | bar | table | root public | foo | table | root(2 rows)
  • 涉及多个表的DDL 不支持同时更改复制表和非复制表的单个DDL SQL语句,例如:将参数include_schema_regex配置成'^replicated.*' DROP TABLE replicated.foo, notreplicated.bar; 此时发布端会出现提示: WARNING: Unhandled deployment logged in pgl_ddl_deploy.unhandledDROP TABLE 订阅端查询存在表replicated.foo: \d replicated.foo Table "replicated.foo" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | not null | Indexes: "foo_pkey" PRIMARY KEY, btree (id) 同样,如果使用过滤复制,以下内容可能会出现问题: ALTER TABLE replicated.foo ADD COLUMN bar_id INT REFERENCES notreplicated.bar (id); 订阅端查看是不同步的: \d replicated.foo Table "replicated.foo" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | not null | Indexes: "foo_pkey" PRIMARY KEY, btree (id)
共100000条