华为云云数据库rds通过SQL命令转储与还原升级大版本_云淘科技

操作场景

升级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 PostgreSQL实例信息。

在“实例管理”页面,单击待升级实例名称,进入待升级实例基本信息页面。
在“基本信息”页面中,可以查看到实例所属区域、可用区、虚拟私有云、子网、安全组。

准备弹性云服务器。

通过弹性云服务器连接云数据库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参数。

每迁移完一个数据库,就可以通过目标数据库测试相应业务,保证业务在目标数据库中运行正常。
请务必确保验证业务可以在目标库正常运行后,再将业务切换到目标数据库,然后删除源数据库。

父主题: 大版本升级

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家