pg_basebackup基础备份多表空间

墨墨导读:本文详述PostgreSQL基础备份tar格式多表空间备份恢复的操作过程,希望对大家有帮助。

数据技术嘉年华,十周年盛大开启,点我立即报名!大会以“自研·智能·新基建——云和数据促创新 生态融合新十年” 为主题,相邀数据英雄,总结过往十年历程与成绩,展望未来十年趋势与目标!近60场演讲,大咖云集,李飞飞、苏光牛、林晓斌、黄东旭...,快来pick你喜欢的嘉宾主题吧!

1. 基础备份pg_basebackup的两种格式

pg_basebackup --help|grep F -F, --format=p|t output format (plain (default), tar) Fp 文本格式 Ft tar包可压缩格式

出于节省磁盘空间考虑可使用tar包格式

2. 多表空间文本方式备份

多表空间基础备份需要使用–tablespace-mapping进行映射,特别是在同一机器对cluster做备份时

2.1 准备wal目录及新建表空间目录

mkdir /home/postgres/mypg_walmkdir /home/postgres/tbl_1 /home/postgres/tbl_2

2.2 初始化环境

/opt/pg124/bin/initdb \--waldir=/home/postgres/mypg_wal \--pgdata=/home/postgres/data5412
vi /home/postgres/data5412/postgresql.confport=5412max_wal_senders=10wal_level=logical

2.3 启动数据库服务

/opt/pg124/bin/pg_ctl start -D /home/postgres/data5412

2.4 新建两个表空间并写入数据

/opt/pg124/bin/psql -p 5412 CREATE TABLESPACE tb1 OWNER postgres LOCATION '/home/postgres/tbl_1'; CREATE TABLESPACE tb2 OWNER postgres LOCATION '/home/postgres/tbl_2'; create database test1 tablespace tb1; create database test2 tablespace tb2; \c test1 create table t1(id int); insert into t1 values(100); \c test2 create table t2(id int); insert into t2 values(100);

2.5 使用文本方式做基础备份(注意表空间映射参数)

/opt/pg124/bin/pg_basebackup --pgdata=/home/postgres/databackup \--host=/tmp --port=5412 --username=postgres \--tablespace-mapping=/home/postgres/tbl_1=/home/postgres/tbsp1 \--tablespace-mapping=/home/postgres/tbl_2=/home/postgres/tbsp2 \--format=p \--wal-method=stream \--verbose --progress

文本格式的基础备份,多表空间可通过tablespace-mapping参数自动映射,恢复非常方便,直接使用pg_ctl start即可

3. 多表空间tar包方式备份

tar包方式备份可压缩,除了默认表空间数据备份为base.tar.gz,每个新建的表空间会单独形成一个tar文件

3.1 备份命令

/opt/pg124/bin/pg_basebackup \--pgdata=/home/postgres/databackup \--host=/tmp --port=5412 --username=postgres \--format=t --gzip --compress=9 \--wal-method=fetch \--verbose --progresspg_basebackup: initiating base backup, waiting for checkpoint to completepg_basebackup: checkpoint completedpg_basebackup: write-ahead log start point: 0/2000060 on timeline 156914/56914 kB (100%), 3/3 tablespaces pg_basebackup: write-ahead log end point: 0/2000138pg_basebackup: syncing data to disk ...pg_basebackup: base backup completed

可以看到备份了三个表空间,一个默认表空间和两个新建表空间

3.2 查看备份文件

ll databackup/total 4724-rw------- 1 postgres postgres 960670 Oct 21 16:36 16384.tar.gz-rw------- 1 postgres postgres 960647 Oct 21 16:37 16385.tar.gz-rw------- 1 postgres postgres 2908387 Oct 21 16:37 base.tar.gz

16384.tar.gz和16385.tar.gz是我们上面创建的表空间

3.3 恢复

3.3.1 提取默认表空间文件

mkdir -p /opt/data5412chmod 700 /opt/data5412tar xzf /home/postgres/databackup/base.tar.gz -C /opt/data5412

3.3.2 查看backup_label文件

cat /opt/data5412/backup_label START WAL LOCATION: 0/2000060 (file 000000010000000000000002)CHECKPOINT LOCATION: 0/2000098BACKUP METHOD: streamedBACKUP FROM: masterSTART TIME: 2020-10-21 16:57:06 CSTLABEL: pg_basebackup base backupSTART TIMELINE: 1

如果做pitr可参考此文件信息

3.3.3 查看tablespace_map文件

cat /opt/data5412/tablespace_map 16384 /home/postgres/tbl_116385 /home/postgres/tbl_2

同一机器进行恢复,修改原始表空间映射目录可先修改此文件

3.3.4 提取自定义表空间文件

同一机器进行恢复,修改表空间映射文件

vi /opt/data5412/tablespace_map16384 /home/postgres/mytbl116385 /home/postgres/mytbl2
mkdir /home/postgres/mytbl1 /home/postgres/mytbl2chmod 700 /home/postgres/mytbl1 /home/postgres/mytbl2
tar xzf databackup/16384.tar.gz -C /home/postgres/mytbl1tar xzf databackup/16385.tar.gz -C /home/postgres/mytbl2

3.3.5 先停原来的库

/opt/pg124/bin/pg_ctl stop -D data5412

3.3.6 可配置PITR恢复参数

注意:12及以后版本恢复参数合并到主配置文件postgresql.conf

$ vi /opt/data5412/postgresql.conf

3.3.7 启动服务

$ /opt/pg124/bin/pg_ctl -D /opt/data5412 start

3.3.8 查看恢复后变化的文件

backup_label --> backup_label.oldtablespace_map --> tablespace_map.old

墨天轮原文链接:https://www.modb.pro/db/34112(复制到浏览器中打开或者点击“阅读原文”立即前往)

数据技术嘉年华,汇聚业内多种数据库最佳实践和顶级技术专家,只为总结 2020 ,与您尽享技术前沿,领先一步卓立变革潮头!

2020 数据技术嘉年华,现在加入,尽享超低票价优惠:

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

(0)

相关推荐

  • PG_备份还原系列之pg_rman

    前言安装前期准备创建备份和归档目录修改PG归档配置初始化设置备份策略全库备份策略增量备份策略还原操作后续操作操作指令大全exitcode概念和配置参数FAQ前言PG_RMAN是Postgresql的一 ...

  • win10怎么备份注册表

    注册表是一个重要的数据库,用于存储系统和应用程序的设置信息,备份注册表可以在不小心修改注册表导致注册表出错的时候来解决该问题.那win10怎么备份注册表呢?有使用win10正式版的用户就跟小编提出了该 ...

  • win10系统下怎样备份注册表?windows10系统备份注册表教程-系统城

    Win10系统的注册表非常强大,它包含了与软硬件有关的配置和状态信息,及用户相关的各种设置.有时候用户会碰到需要修改注册表的情况,为了防止数据丢失,我们需要在修改前先对注册表先进行备份.下面,小编就给 ...

  • Power Pivot数据建模基础:数据表间的4种基本关系类型

    小勤:在前面<表间关系一线牵,何须大量公式拼数据>的文章里提到,如果产品表的产品名称重复的话,是不能建立表间关系的,这具体是什么情况? 大海:在数据处理的时候,我们经常需要对2张相关的表格 ...

  • 解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程

    昨天开发人员跟我说,执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段.这种 ...

  • 如何快速xp系统备份注册表

    注册表里面管理者非常多的东西,很多软件包括电脑程序错误或者无法运行都可以从注册表里面解决,今天给大家介绍一下,如何快速的备份xp系统注册表!方法很简单只有简单的4个步骤! 1.按快捷键CTRL+R唤出 ...

  • 【总结】Oracle数据库 查看表空间和增加表空间

    一.Oracle查看 表空间 的名称及其大小 查看 表空间的名称及其大小的SQL语句: ? 1 2 3 4 select t1.tablespace_name,round(sum(bytes/(102 ...

  • oracle 创建表空间、用户 4个步骤

    /*分为四步 */ /*第1步:创建临时表空间(注意:D:\Project\OracleTableSpace\FHADMIN\ 手动创建路径)  */ create temporary tablesp ...

  • 初中物理电学部分基础知识总结表

    初中物理电学部分基础知识总结表

  • MySQL 8.0 表空间机制

    墨墨导读:数据是以表空间来维护和存放的.在表空间中包含数据,结构,索引等信息,如何有效使用表空间对于MySQL来说非常重要. 数据库的表空间是用来存储数据的逻辑空间,也是存储数据的最大逻辑单元,其下还 ...