PostgreSQL central stream replication unlinked use (scp, cp, pg_basebackup …)
背景
前面介绍了集中式PITR备份的架构.
http://blog.163.com/digoal@126/blog/static/163877040201451711013770/
本文介绍一下不使用虚拟机的情况下, 稍微细节的东西, 即创建基础数据时规避文件夹冲突问题.
创建基础备份的方法比较多, 例如scp, cp或者pg_basebackup , 下面分别介绍一下.
1. 使用scp
-r Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree
traversal.
格式
scp -r $PGDATA $user@$dest_ip:$dir
用法
psql
# select pg_startup_backup(now()::text);
scp -r $PGDATA $user@$dest_ip:$dir
# select pg_stop_backup();
已经将表空间等在$PGDATA下使用软链接的都去除软链接了.
删除隐藏的sock文件.
后面的事情就是配置流复制了.
2. 使用cp
-R, -r, --recursive
copy directories recursively
-L, --dereference
always follow symbolic links in SOURCE
cp -rL $PGDATA/* $dir/*
软链接将被去除, 直接使用本地文件夹替代.
删除隐藏的sock文件.
后面的事情就是配置流复制了.
3. 使用pg_basebackup
因为直接使用pg_basebackup的plain格式的话, 会创建表空间对应的目录, 所以不建议直接使用.
建议使用tar模式, 这种模式的话会创建base.tar以及表空间.tar.
到目的地解压, 分类即可.
例如 :
mkdir ~/testbase
chmod 700 ~/testbase
cd ~/testbase
pg_basebackup -D ~/testbase -F t -x -h 127.0.0.1
pg93@db-172-16-3-150-> pwd
/home/pg93/testbase
pg93@db-172-16-3-150-> ll
total 3.1G
-rw-rw-r-- 1 pg93 pg93 483K Jun 17 13:44 20270.tar
-rw-rw-r-- 1 pg93 pg93 3.1G Jun 17 13:44 base.tar
将base解压到当前目录
pg93@db-172-16-3-150-> tar -xvf base.tar
删除表空间软链接
pg93@db-172-16-3-150-> cd pg_tblspc/
pg93@db-172-16-3-150-> ll
total 0
lrwxrwxrwx 1 pg93 pg93 19 Jun 17 13:45 20270 -> /ssd4/pg93/tbs_test
pg93@db-172-16-3-150-> rm -rf 20270
pg93@db-172-16-3-150-> mkdir 20270
pg93@db-172-16-3-150-> chmod 700 20270
pg93@db-172-16-3-150-> cd 20270/
pg93@db-172-16-3-150-> tar -xvf ../../20270.tar
PG_9.3_201306121/
PG_9.3_201306121/16393/
PG_9.3_201306121/16393/20271
PG_9.3_201306121/16393/20271_fsm
pg93@db-172-16-3-150-> ll
total 4.0K
drwx------ 3 pg93 pg93 4.0K Jun 17 11:53 PG_9.3_201306121
删除tar文件
pg93@db-172-16-3-150-> rm -f ~/testbase/20270.tar ~/testbase/base.tar
删除隐藏的sock文件.
后面的事情就是配置流复制了.
如果pg_basebackup可以增加一个选项, follow link的话 , (像cp和scp), 用起来就更方便了.
参考
1. http://blog.163.com/digoal@126/blog/static/163877040201451711013770/