云数据库 RDS-通过SQL命令转储与还原升级大版本:操作步骤

时间:2024-11-15 14:53:01

操作步骤

以下操作均在已准备的弹性云服务器上执行。

  1. 使用psql连接源数据库,执行以下sql,获取数据库列表。

    postgres=# \l

  2. 使用psql连接目标数据库,执行以下sql,确认1中的所有数据库在目标数据库中是否均存在。

    postgres=# \l

    • 存在,执行3
    • 不存在,执行以下sql创建缺失的数据库,然后执行3

      postgres=# create database my_target_db;

      • 模板库template0、template1不需要迁移。
      • 默认创建的数据库postgres,一般不会存放业务数据,也不需要迁移。但是如果存放了业务数据,也需要迁移。

  3. 使用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参数。

  4. 每迁移完一个数据库,就可以通过目标数据库测试相应业务,保证业务在目标数据库中运行正常。
  5. 请务必确保验证业务可以在目标库正常运行后,再将业务切换到目标数据库,然后删除源数据库。
support.huaweicloud.com/usermanual-rds/rds_09_0053.html