PostgreSQL central stream replication unlinked use (scp, cp, pg_basebackup …)

1 minute read

背景

前面介绍了集中式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/

Flag Counter

digoal’s 大量PostgreSQL文章入口