什么是barman

Barman (备份和恢复管理器) 是 PostgreSQL 数据库服务器中非常方便的备份和恢复工具,允许远程备份多个服务器,允许从一个备份集中一个命令就恢复数据库。同时还可以对多个备份集进行方便的管理.

环境说明

环境有两台机器:

  • 192.168.1.21 主数据库所在主机
  • 192.168.1.22 为barman备份机

安装barman

到barman的官方网站http://www.pgbarman.org/下载barman安装包,把安装包拷贝到192.168.1.22机器上,解压:

tar xvf barman-1.2.1.tar.gz

然后进入目录,进行安装:

cd barman-1.2.1
python setup.py build
sudo python setup.py install

安装barman需要的附加的包:

sudo aptitude install python-argh
sudo aptitude install python-psycopg2
sudo aptitude install python-dateutil
sudo pip install argcomplete

检测argh的版本

osdba@ubuntu02:~$ python
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import argh
>>> argh.__version__
'0.17.2'

barman要求argh >= 0.21.2,版本太低,升级版本:

osdba@ubuntu02:~$ sudo pip install --upgrade argh
Downloading/unpacking argh from https://pypi.python.org/packages/source/a/argh/argh-0.23.2.tar.gz#md5=0d026a85bdfb5dd895138b274a3fc665
 Downloading argh-0.23.2.tar.gz
 Running setup.py egg_info for package argh

Installing collected packages: argh
 Found existing installation: argh 0.17.2
   Uninstalling argh:
     Successfully uninstalled argh
 Running setup.py install for argh

Successfully installed argh
Cleaning up...

osdba@ubuntu02:~$ python
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import argh
>>> argh.__version__
'0.23.2'

配置barman

配置要备份的主库

到192.168.1.21配置主库的postgresql.conf文件,打开主库的归档模式,同时修改archive_command的配置,配置内容如下:

wal_level = archive
archive_mode = on
archive_command = 'rsync -a %p barman@backup:/home/osdba/barman/main/incoming/%f'

注意到上面的归档命令是把WAL日志拷贝到192.168.1.22机器的/home/osdba/barman/main/incoming/目录下,所以要先在备份机上建这个目录:

mkdir -p /home/osdba/barman/main/incoming

当然你也可以使用其它的目录. 配置完后,需要重启启动主库.

打通备份机与数据库机器之间的ssh通道

barman需要打通两台机器之间的ssh通道,假设我们的用户是osdba,方法如下: 先进入192.168.1.21机器上:

osdba@ubuntu01:~/$ cd .ssh
osdba@ubuntu01:~/.ssh$ cat id_rsa.pub >> authorized_keys
scp authorized_keys 192.168.1.22:`pwd`

再进入192.168.1.22机器上:

osdba@ubuntu02:~/$ cd .ssh
osdba@ubuntu02:~/.ssh$ cat id_rsa.pub >> authorized_keys
scp authorized_keys 192.168.1.21:`pwd`/.

实际上上面的操作就是生成一个authroized_keys文件,其中存有192.168.1.21和192.168.1.22两台机器上id_rsa.pub文件的内容.

把下面的内容加到这两台机器的/etc/hosts文件中:

192.168.1.21 pg
192.168.1.22 backup

测试是否能互相ssh: 在192.168.1.21上:

osdba@ubuntu01:~/.ssh$ ssh osdba@backup
Welcome to Ubuntu 13.04 (GNU/Linux 3.8.0-25-generic x86_64)
Documentation: https://help.ubuntu.com/
Last login: Sat Jun 22 16:02:07 2013 from pg
osdba@ubuntu02:~$ exit
logout Connection to backup closed.
osdba@ubuntu01:~/.ssh$ ssh osdba@pg
Welcome to Ubuntu 13.04 (GNU/Linux 3.8.0-25-generic x86_64)
Documentation: https://help.ubuntu.com/
45 packages can be updated.
13 updates are security updates.
Last login: Sat Jun 22 16:01:53 2013 from pg
osdba@ubuntu01:~$ exit
logout Connection to pg closed.

在192.168.1.22上:

osdba@ubuntu02:~$ ssh osdba@pg
Welcome to Ubuntu 13.04 (GNU/Linux 3.8.0-25-generic x86_64)
Documentation: https://help.ubuntu.com/
45 packages can be updated. 13 updates are security updates.
Last login: Sat Jun 22 16:02:21 2013 from pg
osdba@ubuntu01:~$ exit
logout Connection to pg closed.
osdba@ubuntu02:~$ ssh osdba@backup
Welcome to Ubuntu 13.04 (GNU/Linux 3.8.0-25-generic x86_64)
Documentation: https://help.ubuntu.com/
Last login: Sat Jun 22 16:02:12 2013 from pg
osdba@ubuntu02:~$ exit
logout Connection to backup closed.

设置barman的配置文件

在192.168.1.22从模板中拷贝一个barman的配置文件,在此模板的基础上进行修改:

osdba@ubuntu02:~/src/barman-1.2.1/doc$ cp barman.conf ~/.barman.conf
osdba@ubuntu02:~/src/barman-1.2.1/doc$ vi ~/.barman.conf

把.barman.conf文件中内容修改为:

 [barman] ;
 Main directory barman_home = /home/osdba/barman
; System user barman_user = osdba
; Log location
log_file = /home/osdba/barman/log
[main] ;
; Human readable description
description = "Main PostgreSQL Database"

; SSH options
; ssh_command = ssh postgres@pg
ssh_command = ssh osdba@pg

; PostgreSQL connection string
conninfo = host=pg user=osdba dbname=master

; Minimum number of required backups (redundancy)
minimum_redundancy = 1

配置完后,barman需要在192.168.1.22机器上连接到192.168.1.21上的数据库,在配置文件中配置的连接串为: conninfo = host=pg user=osdba dbname=master, 一般我们还有密码,为了不输入密码,我们把密码配置到~/.pgpass文件中:

osdba@ubuntu02:~/src/barman-1.2.1/doc$ cat ~/.pgpass
pg:5432:master:osdba:XXXXXX

上面内容”XXXXXX”是数据库用户osdba的密码,当然你也可以用其它的超用用户连接PostgreSQL,这里使用的是”osdba”用户.

备份数据库

查看要备份的数据库

使用barman show-server main查看要备份的数据库的情况: osdba@ubuntu02:~/barman$ barman show-server main

Server main:
active: true
description: Main PostgreSQL Database
ssh_command: ssh osdba@pg
conninfo: host=pg user=osdba dbname=master
backup_directory: /home/osdba/barman/main
basebackups_directory: /home/osdba/barman/main/base
wals_directory: /home/osdba/barman/main/wals
incoming_wals_directory: /home/osdba/barman/main/incoming
lock_file: /home/osdba/barman/main/main.lock
compression: None
custom_compression_filter: None
custom_decompression_filter: None
retention_policy_mode: auto
retention_policy: None
wal_retention_policy: main
pre_backup_script: None
post_backup_script: None
minimum_redundancy: 1
bandwidth_limit: None
tablespace_bandwidth_limit: None
current_xlog: 000000010000000000000005
last_shipped_wal: None
archive_command: rsync -a %p barman@backup:/home/osdba/barman/main/incoming/%f
server_txt_version: 9.2.3
data_directory: /home/osdba/pgdata
archive_mode: on
config_file: /home/osdba/pgdata/postgresql.conf
hba_file: /home/osdba/pgdata/pg_hba.conf
ident_file: /home/osdba/pgdata/pg_ident.conf

执行备份

Starting backup for server main in /home/osdba/barman/main/base/20130622T120619
Backup start at xlog location: 0/B000020 (00000001000000000000000B, 00000020)
Copying files.
Copy done.
Asking PostgreSQL server to finalize the backup.
Backup end at xlog location: 0/B0000A8 (00000001000000000000000B, 000000A8)
Backup completed

查看备份结果

osdba@ubuntu02:~$ barman list-backup main
main 20130622T120619 - Sat Jun 22 12:06:25 2013 - Size: 25.0 MiB - WAL Size: 0 B

恢复数据库

执行恢复

做恢复测试,把数据库恢复到/home/osdba/pgd2目录下:

osdba@ubuntu02:~$ barman recover main 20130622T120619 /home/osdba/pgd2
Processing xlog segments for main
000000010000000000000005
000000010000000000000006
000000010000000000000006.00000020.backup
000000010000000000000007
000000010000000000000008
000000010000000000000008.00000020.backup
000000010000000000000009
00000001000000000000000A
00000001000000000000000A.00000020.backup
00000001000000000000000B
00000001000000000000000B.00000020.backup
Starting local restore for server main using backup 20130622T120619
Destination directory: /home/osdba/pgd2
Copying the base backup.
Copying required wal segments.
The archive_command was set to 'false' to prevent data losses.

Your PostgreSQL server has been successfully prepared for recovery!

Please review network and archive related settings in the PostgreSQL
configuration file before starting the just recovered instance.

启动恢复的数据库

osdba@ubuntu02:~$ pg_ctl -D /home/osdba/pgd2 start server starting
osdba@ubuntu02:~$

检查恢复的数据库:

osdba@ubuntu02:~$ psql postgres
psql (9.2.3)
Type "help" for help.

postgres=# \l
                             List of databases
  Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges
-----------+-------+----------+-------------+-------------+-------------------
master    | slony | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
postgres  | osdba | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
template0 | osdba | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/osdba         +
          |       |          |             |             | osdba=CTc/osdba
template1 | osdba | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/osdba         +
          |       |          |             |             | osdba=CTc/osdba
(4 rows)

停止恢复的数据库

osdba@ubuntu02:~$ pg_ctl -D /home/osdba/pgd2 stop
waiting for server to shut down....... done
server stopped

【转载】使用barman备份PostgreSQL的更多相关文章

  1. Barman安装及备份PostgreSQL

    barman特点 零数据丢失备份.保证用户在只有一台备份服务器的情况下达到零数据丢失. 与备份服务器合作.允许备份服务器在与主服务器的流式复制不可用时,从barman获取wal文件. 可靠的监控集成. ...

  2. 转载:Gitlab备份和恢复操作记录

    转载:Gitlab备份和恢复操作记录 包含了备份和数据恢复的操作记录,实验可行 前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设 ...

  3. pg_dump实例详解(备份postgresql和greenplum数据库)

    一.pg_dump的用法:数据库的导入导出是最常用的功能之一,每种数据库都提供有这方面的工具,例如Oracle的exp/imp,Informix的dbexp/dbimp,MySQL的mysqldump ...

  4. docker环境下数据库的备份(postgresql, mysql)

    posgresql 备份/恢复 mysql 备份/恢复 补充 posgresql 备份/恢复 备份 DATE=`date +%Y%m%d-%H%M` BACK_DATA=xxapp-data-${DA ...

  5. Windows 2008R2 定时备份PostgreSQL 11.6及还原操作

    PostgreSQL 自动备份,并删除10天前的备份文件. 第一步,创建脚本,命名back.bat文件,可直接点击执行或者CMD执行此批处理命令. @ECHO OFF @setlocal enable ...

  6. 【转载】RMAN备份保留策略设置相关命令

    转自 http://blog.sina.com.cn/s/blog_7c5a82970101g4s7.html 策略有两种,一种是基于恢复窗口策略的,一种是基于冗余策略的. 基于恢复窗口策略: 定义的 ...

  7. 【转载】openldap 备份与导入 及相关问题--扩展

    http://www.cnblogs.com/ccdc/p/3356518.html 摘要: 对openldap进行备份时,直接使用slapcat命令进行备份,使用ldapadd还原出现问题及解决. ...

  8. (转载)sqlserver2008”备份集中的数据库备份与现有的XX数据库不同”解决办法

    原文链接:https://www.cnblogs.com/huangfr/archive/2012/08/09/2629687.html 因为是在另一台电脑对同名数据库做的备份,用常规方法还原,提示不 ...

  9. postgresql 增量备份

    介绍: barman是postgresql备份还原的管理工具. 本文环境: 系统: centos6.6 PostgreSQL 9.3.9 barman-1.4.1-1.rhel6.noarch.rpm ...

随机推荐

  1. WPF 应用程序使用 Multilingual App Toolkit

    应用程序支持多语言,使用 Multilingual App Toolkit是一个不错的解决方案. Multilingual App Toolkit下载地址: https://visualstudiog ...

  2. 运用bat进行数据库备份

    执行Bat脚本 @echo off sqlplus sys/welcome@orcl as sysdba @C:\Users\yangfan\Desktop\login.sql echo 按任意键结束 ...

  3. javascript实例学习之一——联动下拉框

    经常碰到这样的需求,如省市_城市_乡镇下拉框.后一个下拉框的内容会根据前一个的改变而改变,之前的解决方法往往是在前一个改变的时候,向后台发送请求临时获取对应的内容.这样每触发一次就会网络请求一次,这种 ...

  4. cocos2dx 3.x(多个按钮button执行同一事件的区分)

    // // ATTGamePoker.hpp // MalaGame // // Created by work on 2016/10/18. // // #ifndef ATTGamePoker_h ...

  5. iOS - (个人隐私钱包调用系统本机TouchID指纹锁验证)

    // //  ViewController.m //  TouchID指纹验证 // //  Created by apple on 16/9/18. //  Copyright © 2016年 ap ...

  6. c# 访问ftp

    ftp从服务器上获取通信设备吐出的mr数据,该方案估计在通信行业上一个很普遍的一种方案,很奇怪为什么不把这些数据直接存储到数据库中呢,比如hadoop,反而还需要第三方搞网优的软件开发人员从ftp上读 ...

  7. PostgreSQL 三节点集群故障模拟及恢复

    PostgreSQL 三节点集群故障模拟及恢复 (postgreSQL9.5.1) 正常状态: 10.2.208.10:node1:master 10.2.208.11:node2:standby1同 ...

  8. PostgreSQL 同步复制(1master+2standby)

    OS: Red Hat Enterprise Linux Server release 6.5 (Santiago) PostgreSQL: postgresql-9.4.5.tar.bz2 mast ...

  9. C++Builder生成的EXE如何在别的电脑上正常运行

    Project --> Option --> Packages -->Runtime Packages --> Link with runtime packages 属性改为f ...

  10. 【皇甫】☀亲爱的~help me

     亲爱的,我不知道该怎么把我想对你说的话表达出来,希望我对你的认识真的像下面的内容一样,如果我有错,那说明我还不够了解你... 希望我们能够一起走到最后吧... 首先,说说最近的吧,  在我还没有和你 ...