首页 > 数据库 > PostgreSQL > pg_basebackup基础备份多表空间
pg_basebackup --help|grep F -F, --format=p|t output format (plain (default), tar) Fp 文本格式 Ft tar包可压缩格式
出于节省磁盘空间考虑可使用tar包格式
多表空间基础备份需要使用–tablespace-mapping进行映射,特别是在同一机器对cluster做备份时
mkdir /home/postgres/mypg_wal mkdir /home/postgres/tbl_1 /home/postgres/tbl_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
/opt/pg124/bin/pg_ctl start -D /home/postgres/data5412
/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);
/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即可
tar包方式备份可压缩,除了默认表空间数据备份为base.tar.gz,每个新建的表空间会单独形成一个tar文件
/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
可以看到备份了三个表空间,一个默认表空间和两个新建表空间
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是我们上面创建的表空间
mkdir -p /opt/data5412 chmod 700 /opt/data5412 tar xzf /home/postgres/databackup/base.tar.gz -C /opt/data5412
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可参考此文件信息
cat /opt/data5412/tablespace_map 16384 /home/postgres/tbl_1 16385 /home/postgres/tbl_2
同一机器进行恢复,修改原始表空间映射目录可先修改此文件
同一机器进行恢复,修改表空间映射文件 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
/opt/pg124/bin/pg_ctl stop -D data5412
注意:12及以后版本恢复参数合并到主配置文件postgresql.conf
$ vi /opt/data5412/postgresql.conf
$ /opt/pg124/bin/pg_ctl -D /opt/data5412 start
backup_label --> backup_label.old tablespace_map --> tablespace_map.old
本人组建了一个技术交流群:PG乐知乐享交流群。欢迎关注文章的小伙伴随缘加入,进群请加本人微信skypkmoon并备注PG乐知乐享。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69978456/viewspace-3011544/ ,如需转载,请注明出处,否则将追究法律责任。