PostgreSQL使用PG_Rman进行物理备份

背景


在Oracle下我们可以使用rman进行物理备份,支持数据库的全量、增量、归档的备份模式
而PostgreSQL作为开源数据库,近些时间来也一直向商业版数据库看齐,也推出了开源功工具pg_rman,也具备了oracle rman大部分的功能

pg_rman介绍


  • pg_rman是一个开源的PostgreSQL备份软件;
  • pg_rman使用的是pg_start_backup(), copy, pg_stop_backup()的备份模式;
  • pg_rman跑的不是流复制协议,而是文件拷贝,所以pg_rman必须和数据库节点跑一起;

如果在standby节点跑pg_rman,pg_rman则需要通过网络连接到主节点执行pg_start_backup和pg_stop_backup。
pg_rman的用法非常简单,支持以下几种运行模式。
项目地址
文档地址

主要代码命令:

命令 说明
init 初始化备份目录
backup 在线备份
restore 恢复
show 查看备份历史
validate 验证备份
delete 删除备份文件
purge 从备份目录中删除已删除备份

安装


下载并安装rpm安装包

我们一般使用的PG数据库版本为9.6.3,那么对应pg_rman也有相应的版本为:
pg_rman-1.3.7-1.pg96.rhel7.x86_64.rpm
同时需要下载依赖:
postgresql96-libs-9.6.11-1PGDG.rhel7.x86_64

或者直接使用wget下载:

[root@out-pg ~]# wget https://github.com/ossc-db/pg_rman/releases/download/V1.3.7/pg_rman-1.3.7-1.pg96.rhel7.x86_64.rpm
[root@out-pg ~]# wget  https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/postgresql96-libs-9.6.11-1PGDG.rhel7.x86_64.rpm

下载后安装rpm包
rpm -ivh postgresql96-libs-9.6.11-1PGDG.rhel7.x86_64.rpm
rpm -ivh pg_rman-1.3.7-1.pg96.rhel7.x86_64.rpm


[root@out-pg ~]#  rpm -ivh postgresql96-libs-9.6.11-1PGDG.rhel7.x86_64.rpm 
警告:postgresql96-libs-9.6.11-1PGDG.rhel7.x86_64.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID 442df0f8: NOKEY
准备中...                          ################################# [100%]
        软件包 postgresql96-libs-9.6.11-1PGDG.rhel7.x86_64 已经安装
[root@out-pg ~]# rpm -ivh pg_rman-1.3.7-1.pg96.rhel7.x86_64.rpm 
准备中...                          ################################# [100%]
        软件包 pg_rman-1.3.7-1.pg96.rhel7.x86_64 已经安装

安装完成后,pg_rman会安装在默认的/usr/psql-9.6/目录下,接下来要设置环境变量

设置环境变量

修改/root/.bash_profile
vim /root/.bash_profile
source /root/.bash_profile

PATH=$PATH:$HOME/bin
export PG_RMAN=/usr/pgsql-9.6
export PGHOME=/usr/local/pgsql
export PGDATA=/db/pgsql/data
export PGLIB=/usr/local/pgsql/lib
export SRVLOG_PATH=/var/lib/pgsql/9.6/data/pg_log
export ARCLOG_PATH=/home/postgres/arc_log
export BACKUP_PATH=/home/postgres/backup
export PATH=$PGHOME/bin:$PATH:$PG_RMAN/bin
export PATH

其中PGHOME、PGDATA、PGLIB与实际目录一致
SRVLOG_PATH、ARCLOG_PATH、BACKUP_PATH为rman需要
设置完环境变量后,输入pg_rman命令

[root@out-pg ~]# pg_rman
pg_rman manage backup/recovery of PostgreSQL database.

Usage:
  pg_rman OPTION init
  pg_rman OPTION backup
  pg_rman OPTION restore
  pg_rman OPTION show [DATE]
  pg_rman OPTION show detail [DATE]
  pg_rman OPTION validate [DATE]
  pg_rman OPTION delete DATE
  pg_rman OPTION purge

Generic options:
  --help                    show this help, then exit
  --version                 output version information, then exit

生效

创建文件夹
mkdir /home/postgres/arc_log/
附加权限
chown postgres:postgres / /home/postgres/arc_log

初始化rman

使用rman init命令初始化

[root@out-pg ~]# pg_rman init
pg_rman: could not open file "/db/pgsql/data/global/pg_control" for reading: 没有那个文件或目录

上面错误是由于PG_DATA环境变量设置不正确
修改后再执行init

[root@out-pg ~]# pg_rman init
ERROR: backup catalog already exist and it's not empty

以上错误需要重新删除backup目录,删除后重新初始化正常

[root@out-pg ~]# rm -rf /home/postgres/backup/*
[root@out-pg ~]# pg_rman init                  
INFO: ARCLOG_PATH is set to '/home/postgres/arc_log'
INFO: SRVLOG_PATH is set to '/var/lib/pgsql/9.6/data/pg_log'

生成备份元数据,查看目录

[root@out-pg ~]# ll /home/postgres/backup/
总用量 8
drwx------ 4 root root 35 11月 23 13:30 backup
-rw-r--r-- 1 root root 83 11月 23 13:30 pg_rman.ini
-rw-r--r-- 1 root root 40 11月 23 13:30 system_identifier
drwx------ 2 root root  6 11月 23 13:30 timeline_history
[root@out-pg ~]# cat /home/postgres/backup/pg_rman.ini
ARCLOG_PATH='/home/postgres/arc_log'
SRVLOG_PATH='/var/lib/pgsql/9.6/data/pg_log'

修改postgres.conf

vim /usr/local/postgresql/data/postgresql.conf
修改三个参数wal_level,archive_mode,archive_command

wal_level = archive                     
archive_mode = on               
archive_command = 'cp %p /home/postgres/arc_log/%f'  

重启数据库

[root@out-pg backup]# service postgresql restart
Restarting PostgreSQL: ok

备份数据库


全量备份

备份命令
pg_rman backup -b full -U postgres -d aegis -h 127.0.0.1 -p 5432

[root@out-pg backup]# pg_rman backup -b full -U postgres -d aegis -h 127.0.0.1 -p 5432
INFO: copying database files
INFO: copying archived WAL files
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.

可以添加-Z参数使用zlib压缩数据,大大减少备份量,一下为对比,节省空间将近50%

[root@out-pg ~]# du /home/postgres/backup/20181123/* -slh
13G     /home/postgres/backup/20181123/142131
7.0G    /home/postgres/backup/20181123/154458

备份完成后需要验证
不验证的备份无法使用


[root@out-pg backup]# pg_rman validate
INFO: validate: "2018-11-23 14:21:31" backup and archive log files by CRC
INFO: backup "2018-11-23 14:21:31" is valid

最后查看备份

使用命令
pg_rman show

[root@out-pg backup]# pg_rman show
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2018-11-23 14:21:31  2018-11-23 14:26:47  FULL    13GB     1  OK
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容