华为云用户手册

  • 支持审计的关键操作列表 通过 云审计 服务,您可以记录与华为云关系型数据库实例相关的操作事件,便于日后的查询、审计和回溯。 表1 云审计服务支持的RDS操作列表 操作名称 资源类型 事件名称 创建实例、创建只读、恢复到新实例(Console、OPENAPI、TROVEAPI) instance createInstance 扩容、规格变更(Console、OPENAPI 、TROVEAPI) instance instanceAction 实例重启(Console、OPENAPI 、TROVEAPI) instance instanceRestart 恢复到原有实例(Console、OPENAPI 、TROVEAPI) instance instanceRestore 实例重命名(Console) instance instanceRename 重置密码(Console) instance resetPassword 设置数据库版本配置参数(OPENAPI) instance setDBParameters 重置实例的数据库版本配置参数(OPENAPI) instance resetDBParameters 设置备份策略-打开,关闭,修改(Console、OPENAPI) instance setBackupPolicy 修改数据库端口号(Console) instance changeInstancePort 绑定解绑EIP(Console) instance setOrResetPublicIP 修改安全组(Console) instance modifySecurityGroup 创建标签(Console、OPENAPI) instance createTag 删除标签(Console、OPENAPI) instance deleteTag 修改标签(Console、OPENAPI) instance modifyTag 删除实例(Console、OPENAPI、TROVEAPI) instance deleteInstance 开启SQL ServerTDE功能(Console) instance sqlserverOpenTDE 主备倒换(Console) instance instanceFailOver 修改主备同步模式(Console) instance instanceFailOverMode 修改主备倒换策略(Console) instance instanceFailOverStrategy 单机转主备实例(Console、OPENAPI、TROVEAPI) instance modifySingleToHaInstance 创建快照(Console、OPENAPI) backup createManualSnapshot 复制快照(Console) backup copySnapshot 下载快照(Console、OPENAPI) backup downLoadSnapshot 删除快照(Console、OPENAPI) backup deleteManualSnapshot 创建参数模板(Console、TROVEAPI) parameterGroup createParameterGroup 修改参数模板(Console、TROVEAPI) parameterGroup updateParameterGroup 删除参数模板(Console、TROVEAPI) parameterGroup deleteParameterGroup 复制参数模板(Console) parameterGroup copyParameterGroup 重置参数模板(Console) parameterGroup resetParameterGroup 比较参数模板(Console) parameterGroup compareParameterGroup 应用参数模板(Console) parameterGroup applyParameterGroup 保存参数模板(Console) parameterGroup saveParameterGroup 冻结删除(Console) all deleteInstance 实例冻结(Console) all rdsfreezeInstance 按需转包周期、续费(Console) all bssUpdateMetadata 父主题: CTS 审计
  • 步骤1:购买E CS 登录管理控制台,查看是否有弹性云服务器。 有Linux弹性云服务器,执行3。 无Linux弹性云服务器,执行2。 图1 ECS实例 购买弹性云服务器时,选择Linux操作系统,例如CentOS。 由于需要在ECS下载PostgreSQL客户端,因此需要为ECS绑定弹性公网IP(EIP),并且选择与RDS for PostgreSQ L实例 相同的区域、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,请参见切换虚拟私有云。
  • 步骤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 客户端安装完成
  • 注意事项 您可以修改用户创建的数据库参数模板中的参数值,但不能更改默认数据库参数模板中的参数值。 在配置数据库参数模板中的参数时需要注意以下几点: 当您修改当前实例的参数模板并保存后,仅应用于当前实例,不会对其他实例造成影响。 如果您单击实例名称,在“参数修改”页面修改当前实例的参数模板,更改动态参数并保存数据库参数模板时,系统将立即应用更改,而不管“应用”设置如何。当您更改静态参数并保存数据库参数模板时,参数更改将在您手动重启该数据库实例后生效。 当您在“参数管理”页面,修改自定义参数模板时,需执行“应用”操作,才会对实例生效。当您更改静态参数并保存数据库参数模板时,参数更改将在您应用到实例后,手动重启与数据库参数模板关联的数据库实例后生效。应用参数模板到数据库实例,请参见应用参数模板。 在数据库参数模板内设置参数不恰当可能会产生意外的不利影响,包括性能降低和系统不稳定。修改数据库参数时应始终保持谨慎,且修改数据库参数模板前要备份数据。将参数模板更改应用于生产数据库实例前,您应当在测试数据库实例上试用这些参数模板设置更改。 全局参数必须通过控制台修改,会话级参数可通过SQL修改。如果您更改一个参数值,则所做更改的应用时间将由该参数的类型决定。 云数据库RDS服务的管理控制台显示与数据库参数模板关联的数据库实例状态。例如,如果数据库实例未使用对其关联的数据库参数模板所做的最新更改,则云数据库RDS服务的管理控制台将显示状态为“等待重启”的数据库实例。您将需要手动重启数据库实例,以使最新的参数更改对该数据库实例生效。 系统提供的默认参数模板不允许修改,只可单击参数模板名进行查看。当用户参数设置不合理导致数据库无法启动时,可参考默认参数模板重新配置。
  • 操作背景 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 v 4, server v 5.7.27-5-debug-log created 200316 17:54:14 at startup ROLLBACK/*!*/; BIN LOG ' xkxvXg8BAAAAegAAAH4AAAAAAAQANS43LjI3LTUtZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAADGTG9eEzgNAAgAEgAEBAQEEgAAYgAEGggAAAAICAgCAAAACgoKKioAEjQA Xz0AAcrys5I= '/*!*/; # 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: 4 SET @@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*/;
  • 注意事项 pg_cron需要后台守护进程,因此启动数据库前,需要将pg_cron放到shared_preload_libraries中。 定时任务不会在备机上运行,但当备机升主后,定时任务会自动启动。 定时任务会以任务创建者的权限执行。 定时任务使用GMT时间执行。 一个实例可以并行运行多个任务,但同一时间某个任务仅能运行一个。 某个任务,需要等待前一个定时任务结束,那么该任务会进入等待队列,且会在前一个任务结束后尽快启动。 使用前,需要将cron.database_name修改为创建定时任务的数据库,并且只能设为单个数据库,不支持设置多个数据库。
  • 支持的版本说明 PostgreSQL 12及以上版本的最新小版本支持该插件。可通过以下SQL语句查询当前实例支持该插件的版本: SELECT * FROM pg_available_extension_versions WHERE name = 'pg_cron'; 如果不支持,可通过升级内核小版本或者使用转储与还原升级大版本使用该插件。 RDS for PostgreSQL实例支持的插件,具体请参见支持的插件列表。
  • 插件介绍 标准cron语法,*表示每个时间段运行,特定数字表示仅在此时间。 ┌───────────── min (0 - 59) │ ┌────────────── hour (0 - 23) │ │ ┌─────────────── day of month (1 - 31) │ │ │ ┌──────────────── month (1 - 12) │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to │ │ │ │ │ Saturday, or use names; 7 is also Sunday) │ │ │ │ │ │ │ │ │ │ 例如每周六9:30 AM(GMT)的语法为: 30 9 * * 6
  • 语法限制 读写分离请求路由原理:客户的前端请求会根据当前数据库节点权重的配置,随机路由到后端任一数据库节点。 因此,一些SQL语句多次执行的结果可能存在差异,部分语句列举如下: 使用读写分离地址连接proxy和直连后端数据库执行show processlist结果返回有差异,因为proxy的show processlist是逻辑的,仅仅将通过proxy节点下发的业务展示出来,所以和直连后端数据库有差异。 当某一个代理节点处于异常状态时,通过读写分离地址连接proxy执行show processlist或者kill时,有可能会出现命令执行时间稍微变长或卡顿的情况,此时无需关注,业务不会受到影响。 当数据库代理节点缩容后,通过代理执行show processlist命令时,可能会将被缩容的节点上的业务展示出来。 通过数据库代理进行kill时,可能会出现超时等报错信息,此时可以通过再次执行show processlist查看业务是否真正被kill成功。 通过数据库代理的请求只能通过代理进行kill操作。 使用读写分离的连接地址时,不支持使用show errors和show warnings命令。 使用读写分离的连接地址时,如果存储过程(procedure)和函数(function)中依赖了用户变量,即@variable,则运行结果可能不正确。
  • 功能限制 rdsProxy是数据库代理账户,属于RDS数据库内置账号,建议您不要创建同名账户,避免影响读写分离功能正常运行。 开启读写分离功能后,删除RDS for MySQL主实例,会同步删除只读实例,并关闭读写分离功能。 读写分离不支持RDS for MySQL8.0的caching_sha2_password身份认证插件。 开启读写分离功能后,主实例和只读实例均不允许修改数据库端口和内网地址。 读写分离功能不支持压缩协议。 读写分离不支持事务隔离级别READ-UNCOMMITTED。 如果执行了Multi-Statements,默认当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离,目前支持多种Multi-Statements处理模式,详情参考设置Multi-Statements处理模式。 如果执行了临时表的相关操作,默认当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能复读写分离。 如果执行了Handler语句,默认后续请求全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。 使用读写分离的连接地址时,事务请求都会路由到主实例(可以使用事务拆分功能对事务中写之前的读请求进行拆分),不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中。 使用读写分离的连接地址时,LAST_INSERT_ID()函数仅支持在事务中使用。 使用用户自定义变量时,包含用户自定义变量的语句会路由到主节点。 当使用数据库代理时,多语句拼接的SQL大小不超过100MB,避免数据库代理解析SQL消耗过多的资源。 当使用.net客户端连接数据库代理时,需要客户端的MySQL.Data驱动版本不低于8.0.19,低版本MySQL.Data与数据库代理存在兼容性风险。 当使用事务拆分功能时,需要将代理升级至最新版。 数据库代理不支持SQL_MODE参数PAD_CHAR_TO_FULL_LENGTH。
  • 参数修改限制 “innodb_adaptive_hash_index”和“innodb_buffer_pool_size”参数同时修改时,“innodb_adaptive_hash_index”的值由“OFF”改为“ON”会失败。 “innodb_buffer_pool_size”参数值必须是“innodb_buffer_pool_instances”和“innodb_buffer_pool_chunk_size”参数值乘积的整数倍。 “innodb_buffer_pool_instances”参数值设置为“2”时,“innodb_buffer_pool_size”值必须大于等于1GB。 “max_prepared_stmt_count”:对于MySQL 8.0版本,如果内核版本低于8.0.18,参数取值上限为1048576,超过会修改失败。
  • 联动参数 “character_set_server”:修改该参数的值, 系统会联动调整“collation_server”、“character_set_database”,和“collation_database”的取值。 其中,“character_set_server”跟“collation_server”存在对应关系,“collation_server”的取值为以“character_set_server”值开头的字符序。例如:“character_set_server”为“latin1”时,“collation_server”的取值为以“latin1”开头的字符序。 “innodb_io_capacity”:该参数的取值必须小于等于“innodb_io_capacity_max”的取值。 比如“innodb_io_capacity_max”为“2000”, 则“innodb_io_capacity”最大设置为“2000”。 “innodb_buffer_pool_size”: 该参数受“innodb_buffer_pool_chunk_size ”* “innodb_buffer_pool_instances”的影响,为两参数乘积的整数倍向上取值。 比如“innodb_buffer_pool_chunk_size”为“134217728”,“ innodb_buffer_pool_instances”为“1”,那“innodb_buffer_pool_size”必须大于等于“134217728”。
  • 其他参数 “max_prepared_stmt_count”:准备大量的语句会消耗服务器的内存资源,参数设置较小,会带来潜在的“拒绝服务”的风险,建议您根据业务情况,调整该参数的值。 如下参数的输入会根据内核规则对取值进行对应的调整。调整的规则如下所示: “key_cache_age_threshold”会自动调整为100的倍数。 “join_buffer_size”和“key_cache_block_size”会自动调整为128的倍数。 “query_cache_size”、“query_prealloc_size”、“innodb_log_buffer_size”和“max_allowed_packet ”、“thread_stack ”会自动调整为1024的倍数。 “read_buffer_size”、“read_rnd_buffer_size”、“binlog_cache_size ”、“binlog_stmt_cache_size ”会自动调整为4096的倍数。 “data_buffer_size”、“log_buffer_size”、“shared_pool_size”、“temp_buffer_size ”会自动调整为1048576的倍数。 “binlog_format”:默认设置为row,表示将binlog记录成每一行数据被修改的形式,包括修改前和修改后的数据。建议不要对该参数进行修改,否则可能影响您的正常使用。 “log_timestamps”:控制错误日志消息的时间戳时区,以及写入文件的一般查询日志消息和慢日志消息的时间戳时区。默认设置为系统时区,且无法修改。 “skip_name_resolve”:默认值为“ON”,表示跳过 域名 解析从白名单的IP中判断是否可以建立连接。 “innodb_strict_mode”:用于限制InnoDB的检查策略,默认值为“OFF”。 “binlog_rows_query_log_events”:该参数控制原始SQL是否记录到Binlog。开启时在特定大量数据更新等场景可能存在一定的性能劣化,修改该值应该考虑Otter等工具的兼容性。
  • 修改敏感参数 若干参数相关说明如下: “lower_case_table_names” 云数据库默认值:“1”。 作用:该参数表示创建数据库及表时,表存储是否大小写敏感。默认值“1”,表示创建数据库及表时,默认小写,不区分大小写。 RDS for MySQL 8.0版本不支持修改该参数。 影响:修改该参数可能会导致主从复制异常,请谨慎修改。如果必须要修改,请根据以下场景设置数据库参数: 参数值从1变为0的设置顺序:先修改和重启只读库,后修改和重启主库。 参数值从0变为1的设置顺序:先修改和重启主库,在主库执行SELECT @@GLOBAL.GTID_EXECUTED。然后在只读库执行SELECT @@GLOBAL.GTID_EXECUTED,直到结果集合大于或者等于主库的SELECT @@GLOBAL.GTID_EXECUTED的结果集合,再修改和重启只读库。 “innodb_flush_log_at_trx_commit” 云数据库默认值:“1”。 作用:该参数控制提交操作在严格遵守ACID合规性和高性能之间的平衡。设置为默认值“1”,是为了保证完整的ACID,每次提交事务时,把事务日志从缓存区写到日志文件中,并刷新日志文件的数据到磁盘上;当设为“0”时,每秒把事务日志缓存区的数据写入日志文件,并刷新到磁盘;如果设为“2”,每次提交事务都会把事务日志从缓存区写入日志文件,每隔一秒左右会刷新到磁盘。 影响:参数设置为非默认值“1”时,降低了数据安全性,在系统崩溃的情况下,可能导致数据丢失。 POC建议值:“2”。 “sync_binlog” 云数据库默认值:“1”。 作用:该参数控制MySQL服务器将二进制日志同步到磁盘的频率。设置为默认值“1”,表示MySQL每次事务提交,binlog同步写入磁盘,是最安全的设置;设置为“0”时,表示MySQL不控制binlog的刷新,由文件系统自己控制其缓存的刷新。此时的性能最好,但风险最大,因为一旦断电或操作系统崩溃,在“binlog_cache”中的所有binlog信息都会被丢失。 影响:参数设置为非默认值“1”时,降低了数据安全性,在系统崩溃的情况下,可能导致binlog丢失。 POC建议值:“1000”。 “innodb_large_prefix” 云数据库默认值:“OFF”。 作用:InnoDB表允许单列索引的最大长度。 仅RDS for MySQL 5.6版本支持该参数。 影响:在DDL执行时修改该参数,有可能会导致主从复制异常,请谨慎修改。如果必须要修改,请根据以下场景设置数据库参数: 参数值从OFF变为ON的设置顺序:先修改只读库,后修改主库。 参数值从ON变为OFF的设置顺序:先修改主库,后修改只读库。 “innodb_buffer_pool_size” 云数据库默认值:“规格参数,不同实例规格默认值也不同”。 作用:该参数为Innodb缓冲池大小,用来缓存表和索引数据的内存区域,增加该值可减少磁盘I/O。 影响:过大的buffer pool可能导致系统崩溃,请谨慎修改。 POC建议值:32G及以上规格可将其调整至内存的70%~75%。
  • 修改性能参数 若干参数相关说明如下: “innodb_spin_wait_delay”和“query_alloc_block_size”依赖于实例的规格,设置过大时,可能会影响数据库的使用。 “max_connections”参数值设置较小,将影响数据库访问。 “innodb_buffer_pool_size”、“max_connections”和“back_log”参数依赖于实例的规格,实例规格不同对应其默认值也不同。因此,这些参数在用户未设置前显示为“default”。 “innodb_io_capacity_max”、“innodb_io_capacity”参数依赖于磁盘类型,用户未设置前显示为“default”。
  • 备份原理 单机实例 采用单个数据库节点部署架构。与主流的主备实例相比,它只包含一个节点,但具有高性价比。备份触发后,从主库备份数据并以压缩包的形式存储在 对象存储服务 上,不会占用实例的磁盘空间。 主备实例 采用一主一备的经典高可用架构,主备实例的每个节点的规格保持一致。备份触发后,从备库备份数据并以压缩包的形式存储在对象存储服务上(当主备复制延迟较高时会切换到主机备份),不会占用实例的磁盘空间。 当数据库或表被恶意或误删除,虽然RDS支持HA高可用,但备机数据库会被同步删除且无法还原。因此,数据被删除后只能依赖于实例的备份保障数据安全。 图1 备份原理
  • 备份清理 备份文件清理分为两种场景:手动备份清理和自动备份清理。 手动备份是由用户触发产生的全量备份,需要用户手动删除,否则会一直保存。 自动备份的备份文件不支持手动删除,可通过设置自动备份策略调整备份保留天数,超出备份保留天数的已有备份文件会被自动删除。 Binlog本地日志清理: 清理Binlog日志时,即使设置保留时长为0,RDS也会保证主节点的Binlog同步到备节点、只读节点全部完成,并且备份到OBS成功以后才会执行清理。 如果选择的保留时长大于0,例如设置1天,那么在Binlog同步及备份成功后,本地Binlog日志将会继续保留1天,到期后自动删除。
  • 约束限制 正在执行操作的实例不能手动删除,只有在实例操作完成后,才可删除实例。 如果实例的备份文件正在执行数据恢复操作,该实例不允许删除。 支持批量删除按需计费的实例,最多可以删除50个。 “按需计费”类型的实例删除后将不再产生费用,实例生成的自动备份会被同步删除,保留的手动备份会继续收取费用。 删除主实例时,会同步删除其对应的备实例和只读实例,请您谨慎操作。 创建失败的实例不会收费。 实例删除后,资源立即释放,请谨慎操作。如需保留数据,请务必确认完成数据备份后再删除实例。 通过数据库回收站中重建实例功能,可以恢复1~7天内删除的实例。 通过保留的手动备份,可以恢复实例数据,具体请参见全量数据恢复:按备份文件恢复。
  • 服务端加密简介 云数据库RDS服务的管理控制台目前支持 数据加密 服务(Data Encryption Workshop,简称DEW)托管密钥的服务端加密,即使用数据加密服务提供的密钥进行服务端加密。 数据加密服务通过使用硬件安全模块 (Hardware Security Module,简称HSM) 保护密钥安全的托管,帮助用户轻松创建和控制加密密钥。用户密钥不会明文出现在硬件安全模块之外,避免密钥泄露。对密钥的所有操作都会进行访问控制及日志跟踪,提供所有密钥的使用记录,满足监督和合规性要求。 当启用服务端加密功能后,用户创建实例和扩容磁盘时,磁盘数据会在服务端加密成密文后存储。用户下载加密对象时,存储的密文会先在服务端解密为明文,再提供给用户。
  • 约束限制 账户余额大于等于0元,才可设置自动扩容。 实例状态为“正常”和“存储空间满”时可以进行扩容。 如需开通存储空间自动扩容的权限,请联系客服申请。 云数据库 RDS for SQL Server实例最大可自动扩容至10000GB,具体以实际购买磁盘类型为准。 如果是主备实例,针对主实例设置自动扩容时,会同时对其备实例生效。 实例在进行规格变更、重启时,不能进行此操作。 包周期实例存在未完成订单时,不会自动扩容。 目前RDS for SQL Server实例暂不支持缩容,请谨慎开启。 目前自动扩容有限流保护,例如短时间内实例进行了多次扩容,可能是临时数据库或日志文件暴涨引发,可通过收缩操作来降低磁盘使用量。
  • 操作场景 RDS for SQL Server云盘实例支持存储空间自动扩容,在实例存储空间达到阈值时,会触发自动扩容。 只读实例设置自动扩容与主实例自动扩容互不影响,因此,您需要单独为只读实例设置扩容,以满足业务需求。对只读实例设置自动扩容时,您可选择大于或等于主实例的存储空间。 设置存储空间自动扩容有两种方式: 创建实例时设置存储空间自动扩容。详情请参见购买RDS for SQL Server实例。 创建实例后设置存储空间自动扩容。本章节介绍创建实例后如何设置存储空间自动扩容。
  • 实例概览模块 实例概览从多个模块为用户展示实例运行情况,各模块的详细说明请参见表1。 表1 概览模块说明 模块项 说明 告警统计 查看实例运行中最近七天不同等级告警条数。单击不同告警等级的触发条数,可以跳转至告警规则页面,显示该告警等级的所有告警规则。 资源使用情况 查看实例的CPU利用率、内存利用率、磁盘空间利用率和磁盘IOPS指标数。 重点性能指标 查看实例的近一小时的重点性能指标,包括CPU和慢SQL数、连接数、内存使用率、硬盘读写吞吐量。 健康智能诊断 基于运行数据结合智能算法对实例进行整体诊断,帮助您所见即所得了解实例的健康情况。
  • 数据库连接 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以下,避免备机、只读复制异常。
  • 日常运维 在实例管理界面下载慢SQL,及时关注并解决性能问题。 定期关注数据库的资源使用情况,若业务压力存在较大波动,建议配置资源告警,必要时扩充规格。业务写入压力过大会导致数据库重启恢复过程缓慢,影响业务可用性。 删除和修改记录时,需要先执行SELECT,确认无误才能提交执行。 大批量数据删除、更新后,应对被操作表执行VACUUM。 关注可用复制槽数以及创建的复制槽,请始终保持至少有一个空余的复制槽可供数据库备份使用,否则数据库备份会失败。 及时清理不再使用的复制槽,防止复制槽阻塞日志回收。 不要使用不记录日志的表(UNLOGGED TABLE),因为该表的数据会在数据库异常(如OOM、底层故障等)或发生主备倒换后丢失。 尽量避免对系统表做vacuum full操作,若有必要建议使用vacuum;否则执行vacuum full,并重启数据库后,可能导致数据库长时间无法连接。
  • 数据库年龄 数据库年龄的概念: 数据库年龄是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千。防止在数据库启动时,由于扫描表文件耗时过久,导致业务不可用。
  • 逻辑复制 创建的逻辑复制槽名需要在40个字节长度以下,否则可能导致全量备份失败。 使用逻辑复制时,注意删除不再使用的复制槽,防止数据库膨胀。 使用普通逻辑复制槽时,注意主备倒换(规格变更、小版本升级或主机故障等场景可能发生主备倒换)后复制槽会丢失,需要再次创建复制槽。 RDS for PostgreSQL 12.6及以上的小版本、13和14的所有小版本使用具备故障转移功能复制槽,避免主备倒换或数据库重启后复制槽丢失。 使用逻辑复制时,业务尽量避免长事务,废弃的两阶段事务需要及时提交,防止WAL日志积压,占用过高磁盘空间。 使用逻辑复制时,尽量避免大量使用子事务(事务内使用savepoint、exception等),防止造成过高的内存占用。 使用DRS等服务进行数据同步、迁移时,对于长期无业务的库,建议删除其中包含的逻辑复制槽,或添加心跳表来定期推进复制槽位点,避免WAL日志积压。
  • 设置数据库级别的TDE加密功能 在开启数据库级别的TDE加密功能之前,请确保已成功开启实例级别的TDE加密功能。 连接目标实例。 请参考通过公网连接RDS for SQL Server实例、通过内网连接RDS for SQL Server实例及通过DAS连接RDS for SQL Server实例。 通过rds_tde存储过程开启、关闭或查询TDE加密功能。 exec master.dbo.rds_tde DatabaseName,TDE_Action DatabaseName:目标数据库名,取值可为null。 TDE_Action: 取值为“-1”,表示查询目标库加密信息。 如果“DatabaseName”取值为null,则返回所有库的加密状态。 取值为“0”,表示关闭目标库TDE加密功能。 取值为“1”,表示开启目标库TDE加密功能。 开启数据库db1的TDE加密功能: exec master.dbo.rds_tde db1, 1 图2 开启数据库TDE加密 关闭数据库db1的TDE加密功能: exec master.dbo.rds_tde db1, 0 图3 关闭数据库TDE加密 查询数据库db1的TDE加密状态: exec master.dbo.rds_tde db1, -1 图4 开启状态 图5 关闭状态 查询所有数据库的TDE加密状态: exec master.dbo.rds_tde null, -1 图6 查询所有库状态
共100000条