华为云用户手册

  • 操作场景 云数据库RDS支持将备份文件存放到另一个区域存储,某一区域的实例故障后,可以在异地区域使用备份文件在异地恢复到新的RDS实例,用来恢复业务。 实例开启跨区域备份策略后,会自动将该实例的备份文件备份到目标区域。您可以在RDS“备份管理”页面,对跨区域的备份文件进行管理。未开启跨区域备份策略,默认是在本区域存放备份。 实例关闭跨区域备份策略后,目标区域的备份文件会被清理。 每个租户默认最多支持150个实例设置跨区域备份策略。
  • 准备工作 查看待升级的云数据库 RDS for PostgreSQ L实例 信息。 在“实例管理”页面,单击待升级实例名称,进入待升级实例概览页面。 在“概览”页面中,可以查看到实例所属区域、可用区、虚拟私有云、子网、安全组。 准备弹性云服务器。 通过弹性云服务器连接云数据库RDS实例,需要创建一台弹性云服务器。 该弹性云服务器的区域、可用区、虚拟私有云、子网、安全组与待升级RDS for PostgreSQL实例相同。 在2中的弹性云服务器上,安装PostgreSQL客户端。 请参见如何安装PostgreSQL客户端。 该弹性云服务器需要安装和RDS for PostgreSQL数据库服务端相同版本的数据库客户端,PostgreSQL数据库或客户端会自带pg_dump、pg_restore和psql工具。 通过psql连接源数据库,在每一个数据库上执行如下sql,获取已使用列表。 select extname from pg_extension; 根据查看的已使用列表,选择一个包含当前所有插件的目标升级版本。 RDS for PostgreSQL各版本支持的插件,参考支持的插件列表。 参考创建参数模板,创建一个兼容待升级实例参数的目标版本参数模板。 创建目标版本RDS for PostgreSQL实例。 创建RDS for PostgreSQL实例,请参见购买实例。 目标版本RDS for PostgreSQL实例所属区域、可用区、虚拟私有云、子网、安全组与源实例相同。 在2中的弹性云服务器上,通过psql连接目标数据库,确认目标实例连接正常。
  • 操作步骤 以下操作均在已准备的弹性云服务器上执行。 使用psql连接源数据库,执行以下sql,获取数据库列表。 postgres=# \l 使用psql连接目标数据库,执行以下sql,确认1中的所有数据库在目标数据库中是否均存在。 postgres=# \l 存在,执行3。 不存在,执行以下sql创建缺失的数据库,然后执行3。 postgres=# create database my_target_db; 模板库template0、template1不需要迁移。 默认创建的数据库postgres,一般不会存放业务数据,也不需要迁移。但是如果存放了业务数据,也需要迁移。 使用pg_dump转储源数据库,并使用pg_restore恢复到目标数据库。针对每一个业务库,重复执行3~4。 对于除RDS for PostgreSQL 11外的其他版本,转储命令如下: pg_dump -Fc -v --host=source_IP --port=source_port --username=my_user --dbname=my_source_db | pg_restore -v --no-owner --host=target_IP --port=target_port --username=my_user --dbname=my_target_db 对于RDS for PostgreSQL 11版本,转储命令如下: pg_dump -Fc -v --host=source_IP --port=source_port -Ndbms_lob -Ndbms_output -Ndbms_random -Nsys -Nutl_raw -Npg_catalog --username=my_user --dbname=my_source_db | pg_restore -v --no-owner --host=target_IP --port=target_port --username=my_user --dbname=my_target_db pg_dump所使用的登录用户需要拥有访问该数据库所有对象的权限。 pg_restore所使用的登录用户需要拥有该数据库的所有操作权限。 授权操作请参考grant。 若pg_dump命令使用-N参数,blob对象不会被导出。 若pg_dump命令使用-Fc参数,则导出的文件格式为二进制格式,如果需要导出sql类型的文件请使用-Fp参数。 每迁移完一个数据库,就可以通过目标数据库测试相应业务,保证业务在目标数据库中运行正常。 请务必确保验证业务可以在目标库正常运行后,再将业务切换到目标数据库,然后删除源数据库。
  • 操作场景 升级RDS for PostgreSQL引擎大版本,能让您享受到RDS for PostgreSQL新版本带来的功能、性能、安全的提升。但大版本升级可能存在向后不兼容的数据变更,可能导致现有业务运行不兼容。因此需要用户使用目标版本测试确保业务能够正常运行后,再执行大版本升级。 本章节中“源数据库”表示待升级的低版本RDS for PostgreSQL数据库,“目标数据库”表示待升级到的高版本RDS for PostgreSQL数据库。
  • RDS for PostgreSQL版本号说明 RDS for PostgreSQL v10及其以上版本的版本号由major.minor组成。其中,major表示大版本号,minor表示小版本号。大版本升级是指major部分增加,比如:11.x升级到12.x。 RDS for PostgreSQL v10之前的版本号由major.major.minor组成。其中,major.major表示大版本号,minor表示小版本号。大版本升级是指如major.major部分增加,比如:从9.5.x升级到9.6.x或者从9.x.x升级到10.x。
  • 收缩数据库 执行以下命令,进行数据库收缩。 EXEC [master].[dbo].[rds_shrink_database] @DBName='myDbName'; 表1 参数说明 参数 说明 myDbName 收缩指定数据库的数据库名称。如果未指定,默认收缩所有数据库。 执行成功后,系统会显示执行进度,并最终进行如下提示: HW_RDS_Process_Successful: Shrink Database Done.
  • 常见问题 如果执行存储过程发生报错,报错信息为“文件正在使用中”,则请稍后再执行存储过程。 如果执行存储过程后,日志文件大小未改变,请在目标数据库环境下,执行以下SQL,验证文件是否有足够的可用空间。 SELECT name, size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB FROM sys.database_files WHERE type_desc=' LOG ';
  • 示例 执行以下命令,对dbtest2数据库进行收缩。 EXEC [master].[dbo].[rds_shrink_database] @DBName = 'dbtest2'; 执行结果如下图所示: 执行以下命令,对所有数据库进行收缩。 EXEC [master].[dbo].[rds_shrink_database]; 执行以下命令,收缩数据库testdb的日志文件。 EXEC [master].[dbo].[rds_shrink_database_log]@dbname='dbtest3';
  • 报告示例 报告由三部分组成,包含标题、目录和报表。 标题 报告标题包含以下内容:报告起止样本ID、pg_profile_pro内核版本、服务名称、报告起止时间。 图1 报告标题 目录 每层目录分别链接一个报表,用户可以通过目录总览报告中所有报表,也可通过单击链接查看报表内容。 如下图所示: 报表 报告呈现丰富的报表,从不同的维度、关注点来展现数据库的性能情况。 在每个报表后方会针对该报表关注点的提出建议。 图2 报表及建议 在报表中,将鼠标悬停在列标题上,可以看到对列标题的注解(中英文)。 图3 列标题注解
  • 参数配置 表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版本的默认值,其他版本可能会有不同。
  • 操作场景 pg_profile_pro是一款用于监测RDS for PostgreSQL实例性能及运行状况的插件,针对SQL语句、表、索引、函数、事务、vacuum等,pg_profile_pro提供了监测数据报表,能够尽可能发现数据库存在的或潜在的性能问题。 该插件基于PostgreSQL的pg_stat_statements视图,会在用户的实例中创建历史统计,并生成统计样本,定期的统计样本用于生成监测报告,帮助识别最耗费资源的活动等。 因发现插件存在缺陷,现暂时关闭支持,我们会在缺陷修复后重新开放,给您造成不便敬请谅解。
  • 插件说明 postgis 创建postgis_topology和postgis_tiger_geocoder插件,会更改search_path。search_path对已经建立的连接不会更新,如果需要使用这两个插件功能,需要重新建立连接更新search_path设置。 plpgsql plpgsql 1.0插件支持提供SQL过程语言,默认内置安装,无需手动创建该插件。 earthdistance 安装earthdistance插件前,请先安装cube插件。 cube 如果已安装earthdistance插件,删除cube插件会导致earthdistance插件不可用。 timescaledb RDS for PostgreSQL的timescaledb插件只支持Apache协议的特性,不支持tsl协议的特性,具体请参见timescaledb插件不支持的接口。 wal2json 该插件是逻辑复制插件,您可以直接使用该插件,不需要通过control_extension安装。 该插件不能通过pg_available_extensions查询,查看是否支持wal2json插件可通过如下语句确认,执行不报错说明支持wal2json插件。 select pg_create_logical_replication_slot('tst_wal2json', 'wal2json'); 该条语句执行成功后,需要删除slot,否则会导致wal日志积压。 select pg_drop_replication_slot('tst_wal2json'); pg_profile_pro 因发现插件存在缺陷,现暂时关闭支持,我们会在缺陷修复后重新开放,给您造成不便敬请谅解。 pg_sql_history 该插件是DBSS服务中RDS for PostgreSQL数据库进行SQL审计的插件。该插件目前查询到的SQL语句会有截断,因为为每条记录分配的空间固定,为4KB。这4KB除了存储SQL语句,还会存储数据库名、用户名、SQL类型等信息。
  • 常见报错 场景一 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运维库,禁止创建插件。
  • 账户说明 您在创建RDS for PostgreSQL数据库实例时,系统会自动为实例创建如下系统账户(用户不可使用),用于给数据库实例提供完善的后台运维管理服务。 如果试图删掉、重命名、修改这些账户的密码和权限,会导致出错,请谨慎操作。 rdsAdmin:管理账户,拥有最高的superuser权限,用于查询和修改实例信息、故障排查、迁移、恢复等操作。 pg_execute_server_program:允许用运行该数据库的用户执行数据库服务器上的程序来配合COPY和其他允许执行服务器端程序的函数。 pg_read_all_settings:读取所有配置变量,甚至是那些通常只对超级用户可见的变量。 pg_read_all_stats:读取所有的pg_stat_*视图并且使用与扩展相关的各种统计信息,甚至是那些通常只对超级用户可见的信息。 pg_stat_scan_tables:执行可能会在表上取得AC CES S 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采集数据库状态数据。 __rds_pg_profile_user_:指标监控账户,用于pg_profile_pro采集数据库状态数据,创建pg_profile_pro插件后会自动创建该用户,仅存在于RDS for PostgreSQL 12的最新版本。 因发现pg_profile_pro插件存在缺陷,现暂时关闭支持,因此新创建的实例不会自动创建该用户。
  • 操作场景 您可以复制您创建的自定义数据库参数模板。当您已创建一个数据库参数模板,并且想在新的数据库参数模板中包含该组中的大部分自定义参数和值时,复制参数模板是一个方便的解决方案。您还可以导出某数据库实例应用的参数列表,生成一个新的参数模板,供您后期使用。 复制数据库参数模板之后,新参数模板可能不会立即显示,建议您等待5分钟再使用。 您无法复制默认参数模板。不过,您可以创建基于默认参数模板的新参数模板。
  • 限制条件 账户余额大于等于0元,才可恢复到新实例。新实例将作为用户新创建的实例进行收费。 RDS for PostgreSQL支持将备份恢复到原实例,如需使用该功能请联系客服申请。 恢复到已有实例的限制: 如需恢复到已有实例,请提交工单联系客服人员开通权限。 如果目标数据库实例已被删除,则不可恢复到已有实例。 恢复到已有实例会导致实例数据被覆盖,且恢复过程中实例将不可用。 只可选择与原实例相同VPC,相同引擎,相同版本或高版本的实例。 请确保目标实例的存储空间大于或等于当前实例的存储空间,否则会导致任务下发失败。
  • 限制条件 账户余额大于等于0元,才可恢复到新实例。新实例将作为用户新创建的实例进行收费。 RDS for PostgreSQL不支持将备份恢复到原实例,如有需要,请先将备份恢复到新实例,然后将该实例的IP修改为原实例的IP。 恢复到已有实例的限制: 如需恢复到已有实例,请提交工单联系客服人员开通权限。 恢复到已有实例会导致实例数据被覆盖,且恢复过程中实例将不可用。 只可选择与原实例相同VPC,相同引擎,相同版本或高版本的实例。 请确保目标实例的存储空间大于或等于当前实例的存储空间,否则会导致任务下发失败。
  • 操作场景 创建云数据库RDS实例时,系统默认开启自动备份策略,安全考虑,实例创建成功后不可关闭,您可根据业务需要设置自动备份策略,云数据库RDS服务按照您设置的自动备份策略对数据库进行备份。 云数据库RDS服务的备份操作是实例级的,而不是数据库级的。当数据库故障或数据损坏时,可以通过备份恢复数据库,从而保证数据可靠性。备份以压缩包的形式存储在 对象存储服务 上,以保证用户数据的机密性和持久性。由于开启备份会损耗数据库读写性能,建议您选择业务低峰时间段设置自动备份。 设置自动备份策略后,会按照策略中的备份时间段和备份周期进行全量备份。实例在执行备份时,按照策略中的保留天数进行存放,备份时长和实例的数据量有关。 在进行全量备份的同时系统每5分钟会自动生成增量备份,用户不需要设置。生成的增量备份可以用来将数据恢复到指定时间点。
  • 约束限制 正在执行操作的实例不能手动删除,只有在实例操作完成后,才可删除实例。 如果实例的备份文件正在执行数据恢复操作,该实例不允许删除。 实例停止后,不支持通过控制台删除实例。 “按需计费”类型的实例删除后将不再产生费用,实例生成的自动备份会被同步删除,保留的手动备份会继续收取费用。 删除主实例时,会同步删除其对应的备实例和只读实例,请您谨慎操作。 创建失败的实例不会收费。 实例删除后,资源立即释放,请谨慎操作。如需保留数据,请务必确认完成创建手动备份后再删除实例。 通过数据库回收站中重建实例功能,可以恢复1~7天内删除的实例。 通过保留的手动备份,可以恢复实例数据,具体请参见通过备份文件恢复RDS for PostgreSQL实例数据。
  • 准备工作 准备弹性云服务器或可公网访问云数据库RDS。 通过弹性云服务器连接云数据库RDS实例,需要创建一台弹性云服务器。 通过公网地址连接云数据库RDS实例,需具备以下条件。 先对云数据库RDS实例绑定公网地址,如何绑定公网地址,请参见绑定弹性公网IP。 保证本地设备可以访问云数据库RDS绑定的公网地址。 在1中的弹性云服务器或可访问云数据库RDS的设备上,安装PostgreSQL客户端。 如何安装PostgreSQL客户端,请参见5。 该弹性云服务器或可访问云数据库RDS的设备上需要安装和RDS for PostgreSQL数据库服务端相同版本的数据库客户端,PostgreSQL数据库或客户端会自带pg_dump和psql工具。
  • 操作步骤 执行以下命令,默认对所有库更新统计信息。 EXEC rdsadmin.dbo.rds_updatestats ; 执行以下命令,更新指定库的统计信息。 EXEC rdsadmin.dbo.rds_updatestats ‘@DBname' ; 其中,“@DBname”为需要更新统计信息的库名; 示例如下: EXEC rdsadmin.dbo.rds_updatestats ‘MyTestDb' ; 统计信息更新成功后,系统将会如下提示:
  • 操作步骤 执行以下命令,进行限制子账户查看数据库权限。 EXEC rdsadmin.dbo.rds_AUTHORIZATION_DatabaseForLogin ‘@DBName’, ‘@Login’; @ DBName:要授予权限的数据库。 @ Login:要授予权限的账户。 为“user_1”账户授予数据库“testDB_1”的权限,示例如下: EXEC rdsadmin.dbo.rds_AUTHORIZATION_DatabaseForLogin ‘testDB_1’, ‘user_1’; 授权成功之后,user_1将具备testDB_1的权限,对其可见并可对其进行操作;并且对其余无权限数据库保持不可见且不可操作。
  • 操作步骤 执行以下命令,进行数据库复制。 EXEC msdb.dbo.rds_copy_database '@DBName_Source', '@DBName_Target'; @ DBName_Source:源数据库,指定要备份的数据库名。 @ DBName_Target:目标数据库,指定要恢复的数据库名。 将数据库testDB_1复制出一个新的数据库testDB_2,示例如下: EXEC msdb.dbo.rds_copy_database 'testDB_1', 'testDB_2'; 数据库版本为RDS for SQL Server 2012(标准版、企业版、Web版)的用户,请使用名称为msdb.dbo.rds_copy_database_2012的存储过程进行数据库备份。 数据库版本为RDS for SQL Server 2016(标准版、企业版、Web版)的用户,请使用名称为msdb.dbo.rds_copy_database_2016的存储过程进行数据库备份。 数据库版本为RDS for SQL Server 2017企业版的用户,请使用名称为msdb.dbo.rds_copy_database_2017的存储过程进行数据库备份。
  • 前提条件 成功连接RDS for SQL Server实例。关于连接华为云关系型数据库实例,请参考连接实例。 执行此存储过程的必须是拥有[CREATE ANY DATABASE]权限的用户。如果不具备此权限的用户尝试执行该存储过程,系统将会如下提示: Database restores can only be performed by database logins with [CREATE ANY DATABASE] permissions. 对自定义数据库进行备份,执行账户必须是该数据库的“db_owner”或“db_backupoperator”角色组成员。如不具备相应权限的用户对数据库进行备份,系统将会有如下提示: Database backups can only be performed by members of db_owner or db_backupoperator roles in the source database
  • 前提条件 成功连接RDS for SQL Server实例。关于连接华为云关系型数据库实例,请参考连接实例。 执行此存储过程的必须是拥有[CREATE ANY DATABASE]权限的用户。如果不具备此权限的用户尝试执行该存储过程,系统将会如下提示: Database restores can only be performed by database logins with [CREATE ANY DATABASE] permissions.
  • 操作步骤 执行以下命令,进行跟踪标记。 EXEC msdb.dbo.rds_dbcc_trace @Trace_Flag, @Trace_Action; @ Trace_Flag:指定跟踪标记序号,当前仅支持 1117, 1118, 1204, 1211, 1222, 1224, 3604。 @ Trace_Action:指定跟踪标记操作,1为打开跟踪标记,0为关闭跟踪标记,-1为查看跟踪标记。 打开跟踪标记1117,示例如下: EXEC msdb.dbo.rds_dbcc_trace 1117, 1;
  • 操作步骤 执行以下命令,查看错误日志。 EXEC master.dbo.rds_read_errorlog @FileID, @LogType, '@FilterText', '@FilterBeginTime', '@FilterEndTime'; @FileID:指定日志序号,可选值为 0, 1, 2, ... @LogType:日志类型,1为错误日志,2为Agent日志。 @FilterText:指定过滤字符串。 @FilterBeginTime:指定所读取日志开始时间。 @FilterEndTime:指定所读取日志额结束时间。 获取 09/25/2018-09/30/2018的Agent日志,并指定过滤字符串为recovery,示例如下: EXEC master.dbo.rds_read_errorlog 0, 1, 'recovery', '2018-09-25', '2018-09-30';
  • 约束限制 本章节仅使用从华为云RDS for MySQL 5.6、5.7、8.0版本实例下载的全量备份文件在本地恢复到对应版本自建数据库,不包括增量备份的恢复操作。 自建MySQL数据库内核小版本需与华为云RDS for MySQL版本号一致。 通过mysql -V或mysqld --version命令,可以查看MySQL内核版本。 仅支持恢复到本地为Linux操作系统的数据库。 由于开源备份工具目前仅支持x86包,不支持ARM,因此,不支持ARM的E CS 自建库使用本章操作进行备份文件恢复。您可以使用DRS迁移或数据导出导入的方式,具体请参见数据迁移。 全量备份文件恢复到自建数据库将使用以下三个软件: MySQL数据库 qpress工具 Percona XtraBackup工具 请使用对应版本工具,否则将无法恢复成功。 表1 版本对应关系 数据库 qpress Percona XtraBackup MySQL 8.0 qpress 7 XtraBackup 8.0.0及以上版本 MySQL 5.7、MySQL 5.6 qpress 7 XtraBackup 2.4.9及以上版本 在进行恢复阶段请勿在本地自建数据库运行其他业务。
  • 备份触发过程 单机实例 采用单个数据库节点部署架构。与主流的主备实例相比,它只包含一个节点,但具有高性价比。备份触发后,从主库备份数据并以压缩包的形式存储在对象存储服务上,不会占用实例的磁盘空间。 主备实例 采用一主一备的经典高可用架构,主备实例的每个节点的规格保持一致。备份触发后,从备库备份数据并以压缩包的形式存储在对象存储服务上(当主备复制延迟较高时会切换到主机备份),不会占用实例的磁盘空间。 当数据库或表被恶意或误删除,虽然RDS支持主备高可用,但备机数据库会被同步删除且无法还原。因此,数据被删除后只能依赖于实例的备份保障数据安全。
  • 备份机制 RDS for MySQL默认开启自动备份,且不支持关闭。RDS for MySQL自动全备按照备份策略中的备份时间段和备份周期进行全量备份。Binlog备份为实例每5分钟或一定数据量时对上一次自动全备,或Binlog备份后更新的数据会进行备份,以保证数据库可靠性。实例恢复到指定时间点,会从OBS备份空间中选择一个该时间点最近的全量备份下载到实例上进行全量恢复,再重放Binlog备份到指定时间点。 图1 备份原理
共100000条