云服务器内容精选

  • 操作场景 RDS for PostgreSQL支持通过界面升级引擎大版本,目前支持以下两种升级方式: 不割接模式:用于新版本业务兼容性测试。大版本升级可能导致业务兼容性问题,强烈建议业务进行充分兼容性测试,测试通过后,再进行割接模式升级。使用不割接模式升级,不会影响原实例。 割接模式:割接升级过程中,原实例会设置为只读,并存在业务分钟级闪断。升级完成后,会自动交换实例VIP,业务无需更改,即可完成升级。
  • 注意事项 割接模式下,大版本升级完成后,若发现业务不兼容,需要回退。请联系客服为您解除原实例只读状态后,您可继续使用原实例。 升级完成后新增的数据,原实例不会进行自动同步。 大版本升级完成后,会新建一个实例,原有实例依然保留并计费,在业务稳定后您可以选择释放原有实例。 大版本升级后,原实例的审计日志、错误日志、慢日志仍保留在原实例,新实例只能查看该实例后续生成的日志记录。 只读实例无法进行大版本升级。若当前实例存在只读实例,大版本升级完成后,只读实例不会同步升级,需要重新创建,请参见创建只读实例。 若当前实例存在灾备实例,大版本升级完成后,灾备实例不会同步升级,灾备关系会断开,需要使用同版本实例重新搭建灾备关系。 大版本升级会有以下影响: 使用割接方式升级,升级过程中,原实例会设置为只读,并造成业务分钟级闪断,请在业务低峰期进行升级。使用不割接方式升级时,没有任何影响。 只读设置通过参数“default_transaction_read_only”控制,请检查业务中是否存在修改参数“default_transaction_read_only”的情况,如果存在,则会导致在割接期间实例插入的数据在升级完成后丢失。 大版本升级完成后,参数有以下变化: 原实例中修改的参数,自动同步修改到新版本;没有修改的参数将使用新版本默认参数值。 如果原实例使用了新版本不支持的参数,新版本会自动删除。 如果原实例中参数取值不在新版本对应参数的合法区间,新版本中使用参数模板默认值。 大版本升级不会升级插件版本,参考支持的插件列表,若新版本支持更高版本的插件,您可使用命令ALTER EXTENSION extension_name UPDATE TO 'new_version';更新插件,或者卸载并重新安装最新版本插件。 当数据库进行大版本升级时,部分已安装的插件会导致升级任务失败,请先卸载相关插件后再进行大版本升级。 不支持大版本升级的插件包括:postgis
  • 功能约束限制 如需使用大版本升级功能,请联系客服申请。 以下版本的实例支持进行大版本升级: 对于PostgreSQL 9.5版本,小版本为9.5.25及以上。 对于PostgreSQL 9.6版本,小版本为9.6.24及以上。 对于PostgreSQL 10版本,小版本为10.21及以上。 对于PostgreSQL 12版本,小版本为12.7及以上。 对于PostgreSQL 13版本,小版本为13.3及以上。 对于PostgreSQL 14版本,小版本为14.4及以上。 对于PostgreSQL 15版本,小版本为15.4及以上。 对于PostgreSQL 11版本和增强版,不支持大版本升级。 由于操作系统限制,部分实例暂不支持进行大版本升级,具体可升级版本查看界面可升级列表。 灾备实例不支持大版本升级。 大版本升级前,需要先进行升级检查,如果在有效期内没有检查成功的报告,则不允许进行大版本升级。
  • 升级插件限制说明 在大版本升级检查成功后,如果大版本升级路径中,实例安装有表1中的插件,需要提前卸载,在大版本升级完成后再重新安装。否则,会导致实例升级失败,或者实例升级后由于插件无法升级导致插件不能正常使用。 表1 插件限制说明 源版本 目标版本 导致实例升级失败的插件 实例升级后无法正常使用的插件 12 13 orafce, postgis_sfcgal address_standardizer_data_us, pgaudit 14 orafce, postgis_sfcgal anon, pgaudit 15 orafce, postgis_sfcgal anon, pgaudit 16 orafce, postgis_sfcgal, pgl_ddl_deploy anon, pgaudit 13 14 - anon, pgaudit,pg_stat_kcache 15 - anon, pgaudit,pg_stat_kcache 16 pgl_ddl_deploy anon, pgaudit,pg_stat_kcache 14 15 - pgaudit,pg_stat_kcache 16 pgl_ddl_deploy pgaudit,pg_stat_kcache 15 16 pgl_ddl_deploy pgaudit
  • 查看升级检查报告和升级报告 当升级检查失败或升级失败时,可通过升级检查报告或升级报告来分析失败的原因,步骤如下: 查看“pg_upgrade_internal.log”。 “pg_upgrade_internal.log”为升级检查报告或升级报告的主要日志文件,当升级失败时,首先查看该文件内容,查看相关报错。常见的报错如下: A list of problem libraries is in the file: loadable_libraries.txt 存在高版本不兼容的插件,插件列表记录在“loadable_libraries.txt”文件中。 A list of tables with the problem is in the file: tables_with_oids.txt 建表时声明了WITH OIDS,该声明在PostgreSQL 12或以上版本不支持,相关表被记录在“tables_with_oids.txt”文件中。 Consult the last few lines of "pg_upgrade_server.log" for the probable cause of failure. 升级检查时,高版本启动失败,具体原因在“pg_upgrade_server.log”报告项中查看。 Consult the last few lines of "pg_upgrade_dump_xxxx.log" for the probable cause of failure. 升级过程中,pg_dump失败,具体原因在“pg_upgrade_dump_xxxx.log”报告项中查看。 根据“pg_upgrade_internal.log”中的信息,在对应的报告项中分析原因。 loadable_libraries.txt 展示不兼容的library,通常对应了不兼容的插件。排查“loadable_libraries.txt”中列出的插件,根据实际需要进行评估是否删除,建议在不影响业务稳定的情况下删除后升级。 tables_with_oids.txt 展示声明了WITH OIDS的表清单。排查“tables_with_oids.txt”中列出的表,评估业务代码中是否对OID有依赖,确认不影响业务之后,执行以下SQL: ALTER TABLE {table_name} SET WITHOUT OIDS; pg_upgrade_server.log 查看“pg_upgrade_server.log”的最后几行信息,如果存在如下报错,则说明高版本中不存在xxx插件,根据实际业务,评估可删除xxx插件,并在shared_preload_libraries中删除xxx,建议在不影响业务稳定的情况下删除后升级。 FATLA: could not access file "xxx": No such file or directory. 示例: FATLA: could not access file "pg_pathman": No such file or directory. pg_upgrade_dump_xxxx.log 查看“pg_upgrade_dump_xxxx.log”最后几行信息,如果存在如下报错,则说明当前实例中表的数量过多,按照提示需适当增加max_logcks_per_transaction参数值,并重新升级。 pg_dump: error: query failed: ERROR: out of shared memory HINT: You might need to increase max_locks_per_transaction. pg_dump:error: query was: LOCK TABLE "xxx"."xxx" IN AC CES SSHARE MODE 查看“pg_upgrade_dump_xxxx.log”最后几行信息,如果存在如下报错,是因为当前实例中存在插件pgl_ddl_deploy,该插件高低版本不兼容,导致升级失败。请根据升级插件限制说明排查实例中是否存在其他不兼容的三方插件(部分三方插件的兼容性无法通过升级检查识别出来),根据实际需要进行评估是否删除,建议在不影响业务稳定的情况下删除后升级。 pg_restore: error: could not execute query: ERROR: could not find function "xxx" in file xxx Commond was: CREATE FUNCTION "pgl_ddl_deploy"."xxx"
  • 操作步骤 以下操作均在已准备的弹性云服务器上执行。 使用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。
  • 准备工作 查看待升级的云数据库 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连接目标数据库,确认目标实例连接正常。
  • 请求消息 请求参数 表2 参数说明 名称 参数类型 是否必选 说明 target_version String 是 目标版本。 URI样例 https://{Endpoint}/v3/0483b6b16e954cb88930a360d2c4e663/instances/3aa441c4c98a4b36b100a7e3e87d17cein03/major-version/inspection { "target_version": "14.9.0" }