pg_basebackup基础备份多表空间

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_wal
mkdir /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.conf
port=5412
wal_level=replica

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 --progress
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/2000060 on timeline 1
56914/56914 kB (100%), 3/3 tablespaces                                         
pg_basebackup: write-ahead log end point: 0/2000138
pg_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/data5412
chmod 700 /opt/data5412
tar 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/2000098
BACKUP METHOD: streamed
BACKUP FROM: master
START TIME: 2020-10-21 16:57:06 CST
LABEL: pg_basebackup base backup
START TIMELINE: 1

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

3.3.3 查看tablespace_map文件

cat /opt/data5412/tablespace_map 
16384 /home/postgres/tbl_1
16385 /home/postgres/tbl_2

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

3.3.4 提取自定义表空间文件

同一机器进行恢复,修改表空间映射文件
vi /opt/data5412/tablespace_map
16384 /home/postgres/mytbl1
16385 /home/postgres/mytbl2

mkdir /home/postgres/mytbl1 /home/postgres/mytbl2
chmod 700 /home/postgres/mytbl1 /home/postgres/mytbl2

tar xzf databackup/16384.tar.gz -C /home/postgres/mytbl1
tar 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.old
tablespace_map --> tablespace_map.old
保持联系

本人组建了一个技术交流群:PG乐知乐享交流群。欢迎关注文章的小伙伴随缘加入,进群请加本人微信skypkmoon并备注PG乐知乐享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
pg_basebackupPostgreSQL中用于创建基于文件系统级别的备份的工具。它可以用来创建一个数据库的完整备份,包括数据文件、日志文件和配置文件等。在使用pg_basebackup进行备份时,可以使用一些参数来指定备份的方式和目标位置。 引用\[1\]中提到了一些与pg_basebackup相关的参数和操作。例如,使用-R参数可以在备份时自动生成恢复标记文件standby.signal,该文件在PG 12版本之前为recovery.conf,在PG 12版本之后则为postgresql.auto.conf。恢复时可以通过修改postgresql.auto.conf中的参数来指定恢复的方式,如restore_command用于指定归档文件的恢复命令,recovery_target_time用于指定恢复到的时间点,recovery_target_timeline用于指定恢复的时间线。恢复完成后,数据库处于只读状态,可以通过执行pg_promote()或pg_ctl promote命令将数据库切换为读写状态。 引用\[2\]中提到了archive_command参数,该参数用于指定归档文件的保存路径和命名规则。在该示例中,归档文件会根据日期创建一个目录,并将归档文件复制到该目录下。 综上所述,pg_basebackup是用于创建数据库备份的工具,可以通过指定参数和操作来实现备份和恢复的需求。 #### 引用[.reference_title] - *1* [PostgreSql pg_basebackup 用法](https://blog.csdn.net/songyundong1993/article/details/122743355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PostgreSQLpg_basebackup](https://blog.csdn.net/pg_hgdb/article/details/79168030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值