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_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
max_wal_senders=10
wal_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 --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
墨天轮原文链接:https://www.modb.pro/db/34112(复制到浏览器中打开或者点击“阅读原文”立即前往)
数据技术嘉年华,汇聚业内多种数据库最佳实践和顶级技术专家,只为总结 2020 ,与您尽享技术前沿,领先一步卓立变革潮头!
数据和云
ID:OraNews
如有收获,请划至底部,点击“在看”,谢谢!
赞 (0)