Barman 安装

yum -y install gcc




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

Centos7
需要的环境

OS Centos7 
python 2.7.5

172.31.107.1 pg-primary
172.31.107.2
172.31.107.3 pg-barman

分别创建以下账号
useradd barman
passwd barman  #密码 barman

useradd postgres
passwd postgres  #密码 postgres

[root@vlnx107001 ~]#  [root@vlnx107003 ~]# 分别
vim /etc/profile
PATH=$PATH:/usr/local/postgresql/bin
PGDATA=/opt/postgresql/data
PGUSER=postgres
PGPORT=5432
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/postgresql/lib

export PATH
export PGDATA
export PGUSER
export PGPORT
export LD_LIBRARY_PATH
保存刷新使其生效
source /etc/profile

一、
安装并配置参数
172.31.107.3

python 模块

安装barman需要的附加的包:

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

检测argh的版本
[zhaowzh@vlnx107003 postgresql]$ python
>>>import argh
>>>argh.__version__
'0.26.2'


安装barman
tar -zxvf barman-2.3.tar.gz
cd /home/zhaowzh/barman-2.3

./setup.py build
./setup.py install

cp /home/zhaowzh/python-barman/barman-2.3/doc/barman.conf /etc/barman.conf
cp -r  /home/zhaowzh/python-barman/barman-2.3/doc/barman.d  /etc/barman.d
cp /etc/barman.d/ssh-server.conf-template   /etc/barman.d/ssh.conf
cp /etc/barman.d/streaming-server.conf-template   /etc/barman.d/streaming.conf

chown barman:barman /opt/postgresql/backup -R

[root@vlnx107003 ~]# vim /etc/cron.d/barman
# m h  dom mon dow   user     command
  * *    *   *   *   barman   [ -x /usr/bin/barman ] && /usr/bin/barman -q cron

需要确保backup服务器能够以pg超级用户身份连接到PostgreSQL服务器。该操作是强制性的。
#我们建议在PostgreSQL中创建一个名为的特定用户barman
#createuser -s -P barman #密码为 barman
配置 
[root@vlnx107003 ~]# vim /etc/barman.conf 
barman_user = barman
barman_home = /opt/postgresql/backup
log_file = /var/log/barman/barman.log
log_level = INFO
minimum_redundancy = 3
retention_policy = REDUNDANCY 2


[root@vlnx107003 ~]# vim /etc/barman.d/ssh.conf
[vlnx107001.firstshare.cn]
description = "vlnx107001.firstshare.cn"
ssh_command = ssh [email protected]
conninfo = host=vlnx107001.firstshare.cn user=barman dbname=postgres
backup_method = rsync
archiver = on

[root@vlnx107003 ~]# vim /etvc/barman.d/streaming.conf
[vlnx107001.firstshare.cn]
description = "vlnx107001.firstshare.cn"
conninfo = host=vlnx107001.firstshare.cn user=barman dbname=postgres
backup_method = postgres
streaming_conninfo = host=vlnx107001.firstshare.cn user=streaming_barman dbname=postgres
streaming_archiver = on
path_prefix = /usr/local/postgresql/bin


注:如果要使用 复制插槽时,需要先 创建复制 插槽
[barman@vlnx107003 ~]# barman receive-wal --create-slot vlnx107001.firstshare.cn

二、
打通PostgrSQL服务器和Barman备份机器间的通讯通道 (ssh连接配置)
SSH是一种协议和一组工具,它们允许您打开远程服务器的远程shell并在服务器和本地系统之间复制文件。
SSH密钥交换是一种非常普遍的做法,用于在不同计算机上的用户之间实现安全无密码连接,并且需要将其rsync用于WAL归档和备份。
分别在 172.31.107.1/3 (postgres / barman主目录) 上创建SSH密钥:
由于此密钥必须用于从主机进行连接而不提供密码,因此密钥对创建期间不应输入密码。

[postgres@vlnx107001 ~]$ ssh-keygen -t rsa


从PostgreSQL到Barman
需要从PostgreSQL服务器到备份服务器的SSH连接才能使用该archive_command设置正确存档WAL文件。
要成功从PostgreSQL服务器连接到备份服务器,必须将PostgreSQL公钥配置到barman用户备份服务器的授权密钥中。
要授权的公钥将存储在postgres用户主目录中的一个名为文件的文件中.ssh/id_rsa.pub
将密钥传送到备机上并验证
[postgres@vlnx107001 ~]$ ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[postgres@vlnx107001 ~]$ ssh [email protected] date



同样在 备份机 172.31.107.3 上也创建 ssh密钥
[barman@vlnx107003 ~]$ ssh-keygen -t rsa


从Barman到PostgreSQL
备份服务器和PostgreSQL服务器之间的SSH连接用于通过rsync进行传统备份。就像从PostgreSQL服务器到备份服务器的连接一样,我们应该在PostgreSQL服务器中为postgres用户授权备份服务器的公钥。
将密钥传送到PostgreSQL主机上并验证
[barman@vlnx107003 ~]$ ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[barman@vlnx107003 ~]$ ssh [email protected] date


172.31.107.1
确保backup服务器能够以pg超级用户身份连接到PostgreSQL服务器。该操作是强制性的。
我们建议在PostgreSQL中创建一个名为的特定用户barman
createuser -s -P barman #密码为 barman

Barman需要这种连接来协调其与服务器的活动以及监控目的。
建议将密码添加到备份服务器~barman/.pgpass上的文件中。

在备份服务器 172.31.107.3 上 验证
psql -c 'SELECT version()' -U barman -h 172.31.107.1 postgres

PostgreSQL WAL arching and replication
需要正确配置PostgreSQL 主服务器(postgresql的服务器)以接受来自Barman服务器的流式复制连接。
PostgreSQL流式连接 配置
如果打算使用WAL流式传输或流式备份,则需要设置流式连接。我们建议在PostgreSQL中创建一个名为的特定用户streaming_barman,如下所示:
createuser -P --replication streaming_barman  #设置密码为 barman

建议将密码添加到备份服务器~barman/.pgpass上的文件中。


在备份服务器  172.31.107.3 上 验证:
psql -U streaming_barman -h 172.31.107.1 -c "IDENTIFY_SYSTEM"  replication=1;
psql -U streaming_barman -h vlnx107001.firstshare.cn \
  -c "IDENTIFY_SYSTEM" \
  replication=1

注:如果不通,检查pg_hba.conf是否配置对应的IP+USER等信息

配置 postgresql.conf
[postgres@vlnx107001 data]$ vim postgresql.conf
wal_level=replica  
wal_log_hints = on  
archive_mode = on
archive_command='rsync -a %p [email protected]:/opt/postgresql/backup/$HOSTNAME/incoming/%f'
wal_keep_segments = 1000


max_wal_senders=3   #此选项表示允许服务器管理的最大并发流连接数。(如果使用了repmgr要增大该值)
# 以下参数可选---------------------
max_replication_slots=3  #它表示服务器将允许管理的复制插槽的最大数量。如果您打算使用流式连接通过流式连接接收WAL文件,则需要此参数

验证wal归档配置
[barman@vlnx107003~]barman switch-xlog --force --archive vlnx107001.firstshare.cn

也可以使用该barman check命令验证WAL归档是否已正确配置
[barman@vlnx107003 ~]$ barman check vlnx107001.firstshare.cn

注:
rebuild-xlogdb
在任何时候,您都可以为特定服务器(或每个服务器,使用all快捷方式)重新生成WAL存档的内容。WAL档案包含在xlog.db文件中,Barman管理的每个服务器都有自己的副本。
该xlog.db文件可以使用该rebuild-xlogdb命令重建。这将扫描所有归档的WAL文件并重新生成归档的元数据。
例如:barman rebuild-xlogdb <server_name>


vim pg_hba_conf
host   all             all             172.31.107.3/32         trust
host replication       streaming_barman 172.31.107.3/32        trust
host all               barman          172.31.107.3/32         md5

配置完毕后重启postgresql实例;
pg_ctl -D /opt/postgresql/data -l /opt/postgresql/logs/logfile restart

172.31.107.3
/usr/bin/python /usr/bin/barman backup all

base:基本备份文件的保存目录
incoming:在Postgresql将其完成的WAL文件存放到这个目录归档
wals: Barman复制的内容 incoming目录到wals目录
errors:Barman备份时遇到的error信息
streaming:


设置自动运行备份
[barman@vlnx107003 ~]$ crontab -e
# 每天11:30 对数据库服务器进行完整备份
30 11 * * * /usr/bin/barman backup all
#每分钟运行一次,并对wal文件和基本备份文件执行维护操作;如果设置了 /etc/cron.d/barman  就不要设置这里的定时JOB。
* * * * * /usr/bin/barman cron   




猜你喜欢

转载自blog.csdn.net/zhaowenzhong/article/details/80774173