PostgreSQL 大版本升级方法之一 - 不落地并行导出导入

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 标签PostgreSQL , 大版本升级 , rds_dbsync , pg_dump , pg_restore背景尽量快的大版本升级的方法。一、9.4以下版本,使用pg_dump并行导出,pg_restore并行导入,迁移(导出使用源版本pg_dump,导入使用目标版本pg_restore。

标签

PostgreSQL , 大版本升级 , rds_dbsync , pg_dump , pg_restore


背景

尽量快的大版本升级的方法。

一、9.4以下版本,使用pg_dump并行导出,pg_restore并行导入,迁移

(导出使用源版本pg_dump,导入使用目标版本pg_restore。如果是ppas请使用enterprisedb对应版本。)

1、(源库)全局元数据(用户、表空间)导出

需要superuser权限(如果你没有这个权限,跳过此步,但是务必在执行下一步时,人为在目标实例中创建所有与对象权限相关的用户)。

pg_dumpall -g -h IP地址 -p 端口 -U 用户 -W -l 数据库名  

2、(目标库)全局元数据导入

导入以上元数据,在目标库执行即可(通常包括创建用户,修改用户密码,创建表空间等。)  

执行第2步的目的是保证导入时,执行grant, alter set owner等操作时,目标用户已存在,否则缺失用户会导致pg_restore报错。

3、(目标库)建库

postgres=# create database newdb;  
CREATE DATABASE  

4、(目标库)插件

安装postgresql软件时,打包源库已使用的的插件。  
  
略  

5、(源库)导出

mkdir /data01/pg/backup  
pg_dump -j 32 -f /data01/pg/backup -F d -h IP地址 -p 端口 -U 用户 -W newdb   

6、(目标实例)关闭autovacuum,加速导入(可选)

使用超级用户执行SQL  
  
alter system set autovacuum=off;  
select pg_reload_conf();  

7、(目标库)导入

pg_restore -d newdb -F d -j 32 -h IP地址 -p 端口 -U 用户 /data01/pg/backup  

8、(目标实例)开启autovacuum(如果执行了6)

使用超级用户执行SQL  
  
alter system set autovacuum=on;  
select pg_reload_conf();  

9、(目标实例)收集统计信息(如果执行了6)

使用超级用户执行SQL,收集统计信息  
\c newdb 超级用户  
analyze;  

使用以上方法,60GB的数据库迁移,耗时约10分钟。

多机玩法

https://momjian.us/main/blogs/pgblog/2018.html#September_12_2018

Where this gets interesting is with multiple hosts. You can:

$ # dump a remote database to your local machine
$ pg_dump -h remotedb.mydomain.com -f /home/postgres/dump.sql test
 
$ # dump a local database and write to a remote machine
$ pg_dump -h remotedb.mydomain.com test | ssh postgres@remotedb.mydomain.com 'cat > dump.sql'
 
$ # dump a remote database and write to the same remote machine
$ pg_dump -h remotedb.mydomain.com test | ssh postgres@remotedb.mydomain.com 'cat > dump.sql'
 
$ # or a different remote machine
$ pg_dump -h remotedb1.mydomain.com test | ssh postgres@remotedb2.mydomain.com 'cat > dump.sql'
 




You also have similar restore options. I will use psql below but pg_restore works the same:

$ # dump a remote database and restore to your local machine
$ pg_dump -h remotedb.mydomain.com test1 | psql test2
 
$ # dump a local database and restore to a remote machine
$ pg_dump -h remotedb.mydomain.com test | ssh postgres@remotedb.mydomain.com 'psql test'
 
$ # dump a remote database and restore to the same remote machine
$ pg_dump -h remotedb.mydomain.com test1 | ssh postgres@remotedb.mydomain.com 'psql test2'
 
$ # or a different remote machine
$ pg_dump -h remotedb1.mydomain.com test | ssh postgres@remotedb2.mydomain.com 'psql test'

二、9.4及以上版本,使用rds_dbsync不落地并行迁移

三、9.4及以上版本,使用pg_logical,增量迁移

四、10及以上版本,使用逻辑订阅,增量迁移

五、任何版本,都可以使用pg_upgrade升级

详见

《PostgreSQL 快速大版本升级多种方案 - 含重点介绍fast & safe upgrade to PostgreSQL 9.4 use pg_upgrade & zfs》

《PostgreSQL pg_upgrade 9.3 improve and example》

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
22天前
|
SQL 关系型数据库 PostgreSQL
把PostgreSQL的表导入SQLite
把PostgreSQL的表导入SQLite
15 0
|
3月前
|
人工智能 运维 关系型数据库
媒体声音|PolarDB再升级:欢迎来到云数据库 x AI新时代
让个人开发者和企业用户都可以像“搭积木”一样开发和管理数据库
媒体声音|PolarDB再升级:欢迎来到云数据库 x AI新时代
|
5月前
|
消息中间件 存储 关系型数据库
PostgreSQL技术大讲堂 - 第33讲:并行查询管理
PostgreSQL从小白到专家,技术大讲堂 - 第33讲:并行查询管理
289 1
|
4月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL版并行查询技术探索与实践
PolarDB MySQL版并行查询技术探索与实践 PolarDB MySQL版在企业级查询加速特性上进行了深度技术探索,其中并行查询作为其重要组成部分,已经在线稳定运行多年,持续演进。本文将详细介绍并行查询的背景、挑战、方案、特性以及实践。
107 2
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
富友支付 x PolarDB:助力金融支付数字化升级
富友支付与阿里云瑶池数据库团队深度合作,不断的推进支付系统的升级迭代,逐步替代传统商业数据库,全面拥抱云原生PolarDB,与阿里云一同为支付行业赋能。
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL企业版与标准版功能对比:如何选择适合您的版本?
随着数字化时代的到来,企业对于数据处理的需求越来越高,而数据库作为数据处理的核心,其性能和成本成为了企业关注的焦点。阿里云全新推出的PolarDB MySQL企业版和标准版,以全新的架构和优化,为企业提供了高性能、低成本的数据库解决方案。但在功能上,这两个版本有很多差异,我们该如何选择呢?
56 2
|
4月前
|
SQL 关系型数据库 分布式数据库
深度解析PolarDB数据库并行查询技术
深度解析PolarDB数据库并行查询技术:加速SQL执行的关键问题和核心技术 随着数据规模的不断扩大,用户SQL的执行时间越来越长,这不仅对数据库的优化能力提出更高的要求,并且对数据库的执行模式也提出了新的挑战。为了解决这个问题,许多数据库系统,包括Oracle、SQL Server等,都开始提供并行查询引擎的支持,以充分利用系统资源,达到加速SQL执行的效果。本文将深入探讨基于代价进行并行优化、并行执行的云数据库的并行查询引擎的关键问题和核心技术。
122 2
|
4月前
|
安全 关系型数据库 数据库
上新|阿里云RDS PostgreSQL支持PG 16版本,AliPG提供丰富自研能力
AliPG在社区版16.0的基础上,在安全、成本、可运维性等多个方面做了提升,丰富的内核/插件特性支持,满足业务场景的需求
|
5月前
|
SQL 关系型数据库 PostgreSQL
PostgreSQL查看版本
PostgreSQL查看版本

相关产品

  • 云原生数据库 PolarDB