[转帖]postgresql 物理备份 barman 之 安装

postgresql,物理,备份,barman,安装 · 浏览次数 : 0

小编点评

**安装 barman 在 Ubuntu 16.04 上:** 1. 下载并安装 barman: ```bash # apt-get install barman barman-cli ``` 2. 配置 barman: - 创建一个配置文件 `etc/barman.conf`。 - 添加以下配置: ``` server_name = node1 replication = streaming_barman ``` 3. 启动 barman 服务: ```bash # systemctl start barman ``` 4. 启动 barman 命令行工具: ```bash # barman ``` **使用 barman:** 1. 启动 barman 命令行工具。 2. 使用 `barman` 命令进行数据库备份或恢复。 **注意:** * 安装 barman 时需要使用 root 用户。 * `node1` 和 `node2` 是两个独立的 barman节点。 * `streaming_barman` 是用于从 PostgreSQL 中恢复数据的配置。 * `pg_hba.conf` 是 PostgreSQL 服务器的授权配置文件。

正文

os: ubuntu 16.04
postgresql: 9.6.8
barman: 2.5

ip 规划

192.168.56.101 node1 barman
192.168.56.102 node2 postgresql

barman 是2ndquadrant推出的一款 postgresql 开源备份软件,官网介绍的非常强大。
barman 建议以一个 dedicated server 存在。尽量不要部署到 postgresql server 上,但不是不能部署到 postgresql server 主机上。

安装

在 node1 节点上安装 barman

# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.3 LTS
Release:	16.04
Codename:	xenial

官方文档 http://docs.pgbarman.org/release/2.4/#system-requirements 提示说barman 有一些依赖包需要安装。

Linux/Unix
Python 2.6 or 2.7
Python modules:
	argcomplete
	argh >= 0.21.2 <= 0.26.2
	argparse (Python 2.6 only)
	psycopg2 >= 2.4.2
	python-dateutil <> 2.0
	setuptools
PostgreSQL >= 8.3
rsync >= 3.0.4 (optional for PostgreSQL >= 9.2)

还是配置个 2ndQuadrant Public APT repository
https://dl.2ndquadrant.com/default/release/site/

# curl https://dl.2ndquadrant.com/default/release/get/deb | bash
# 
# ls -l /etc/apt/sources.list.d/
total 4
-rw-r--r-- 1 root root 88 Sep 30 08:25 2ndquadrant-dl-default-release.list

安装barman

# apt-get install barman barman-cli
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-argcomplete python-argh
  python-dateutil python-egenix-mxdatetime python-egenix-mxtools python-minimal python-psycopg2
  python-six python2.7 python2.7-minimal
Suggested packages:
  repmgr python-doc python-tk python-egenix-mxdatetime-dbg python-egenix-mxdatetime-doc
  python-egenix-mxtools-dbg python-egenix-mxtools-doc python-psycopg2-doc python2.7-doc binutils
  binfmt-support
The following NEW packages will be installed:
  barman libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-argcomplete
  python-argh python-dateutil python-egenix-mxdatetime python-egenix-mxtools python-minimal
  python-psycopg2 python-six python2.7 python2.7-minimal
0 upgraded, 15 newly installed, 0 to remove and 171 not upgraded.
Need to get 4,381 kB of archives.
After this operation, 19.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

需要安装的包还真不少。所以说尽量用 yum 或者 apt 安装这些软件,有时候依赖包搞得你很烦心。

# dpkg -l |grep -i barman
ii  barman                              2.4-1.xenial+1                             all          Backup and Recovery Manager for PostgreSQL
ii  barman-cli                          1.2-1.xenial+1                             all          Client utilities for the integration of Barman in PostgreSQL clusters

安装了 barman barman-cli

# cat /etc/passwd |grep -i barman
barman:x:112:119:Backup and Recovery Manager for PostgreSQL,,,:/var/lib/barman:/bin/bash

还创建了个os用户。

# which barman
barman              barman-wal-restore
# which barman
/usr/bin/barman
# which barman-wal-restore 
/usr/bin/barman-wal-restore

两个命令

/etc
/etc/barman.conf
/etc/barman.d
/etc/barman.d/streaming-server.conf-template
/etc/barman.d/ssh-server.conf-template
/etc/cron.d
/etc/cron.d/barman
/etc/logrotate.d
/etc/logrotate.d/barman

一些配置文件

其中 /etc/logrotate.d/barman 是定义了 barman log 的保留策略。

# cat /etc/logrotate.d/barman 
/var/log/barman/barman.log {
    weekly
    rotate 4
    delaycompress
    compress
    missingok
    notifempty
    create 0640 barman adm
}

备份配置

barman 有两种备份形式:streaming,ssh/rsync

node1 上修改一个公共配置文件
/etc/barman.conf

# egrep ^[^";"] /etc/barman.conf 
[barman]
barman_user = barman
configuration_files_directory = /etc/barman.d
barman_home = /var/lib/barman
log_file = /var/log/barman/barman.log
log_level = INFO
compression = gzip

可以认为 /etc/barman.d/ 下面的每一个 .conf 代表一个配置,通过文件内容开头的 [] 来定义 server_name。

最好文件名有个含义,让人一看就知道是做什么用的。

node2 上创建两个barman相关联用户

# su - postgres 
# createuser -s -P barman
# createuser -P --replication streaming_barman

之后配置好 pg_hba.conf。这里不再啰嗦。

node1 上创建 .gpass

barman@nodex:~$ vi ~/.pgpass
192.168.56.102:5432:*:streaming_barman:rootroot
192.168.56.102:5432:*:barman:rootroot

至此,barman 在 ubuntu 16.04 上安装完成。

参考:
https://www.2ndquadrant.com/en/resources/barman/
https://sourceforge.net/projects/pgbarman/files/
https://sourceforge.net/projects/pgbarman/files/2.4/

https://www.pgbarman.org/about/
https://www.pgbarman.org/documentation/
http://docs.pgbarman.org/release/2.4/

https://github.com/2ndquadrant-it/barman

 

与[转帖]postgresql 物理备份 barman 之 安装 相似的内容:

[转帖]postgresql 物理备份 barman 之 安装

os: ubuntu 16.04postgresql: 9.6.8barman: 2.5 ip 规划 192.168.56.101 node1 barman192.168.56.102 node2 postgresql barman 是2ndquadrant推出的一款 postgresql 开源备份

[转帖]postgresql 编译选项 --with-uuid=e2fs、--with-uuid=ossp 的理解

postgresql 的 rpm 包使用的是 ‘–with-uuid=e2fs’ postgresql 源码 configure 的帮助选项有 uuid 的几个选项,有啥区别? # ./configure --help --with-uuid=LIB build contrib/uuid-ossp

[转帖]postgresql日志参数

https://www.jianshu.com/p/407c03aaa600 postgresql日志参数 logging_collector:这个参数启用日志收集器,它是一个捕捉被发送到stderr的日志消息的后台进程,并且它会将这些消息重定向到日志文件中;默认是OFF,修改参数需要重启。 log

[转帖]postgresql 的 pg_hba.conf 的行记录顺序

postgresql: 9.6 一直觉得 pg_hba.conf 的行记录与顺序无关,遵循细化优先的规则。今天在回顾 pg_hba.conf 文档时发现这种认识是错的。 下面这段话是从文档拷贝过来的: 因为每一次连接尝试都会顺序地检查pg_hba.conf记录,所以这些记录的顺序是非常关键的。通常,

[转帖]postgresql 的 .pgpass密码文件的使用

.pgpass 是 连接 postgresql 时使用的密码文件,通常位置为 ~/.pgpass。 在使用某些组件时还真的必须使用。具体的格式为: hostname:port:database:username:password 常见的使用如下: # su - postgres $ vi ~/.pg

[转帖]PostgreSQL进程结构

http://www.pgsql.tech/article_101_10000099 1、简介 本文简单的介绍了 PostgreSQL 的主要进程类型与功能。 2、PostgreSQL进程分为主进程与辅助进程。 2.1、主进程: PostMaster进程是整个数据库实例的总控进程,负责启动关闭该数据

[转帖]PostgreSQL与MySQL 分析对比

http://www.pgsql.tech/article_101_10000079 概述 在几个流行的数据库中,我首先接触到的是MySQL,随着工作发展,接触到越来越多的是PostgreSQL数据库。这两个十分流行的开源数据库。在这之后,我就会经常和一些朋友进行讨论:MySQL和PostgreSQ

[转帖]PostgreSQL的MVCC vs InnoDB的MVCC

任何一个数据库最主要功能之一是可扩展。如果不删除彼此,则尽可能较少锁竞争从而达到这个目的。由于read、write、update、delete是数据库中最主要且频繁进行的操作,所以并发执行这些操作时不被阻塞则显得非常重要。为了达到这种目的,大部分数据库使用多版本并发控制(Multi-Version

[转帖]PostgreSQL中切换WAL是否会触发checkpoint

https://www.modb.pro/db/570143?utm_source=index_ori 内容概述 Oracle数据库中切换redo日志会触发检查点事件,那么在PostgreSQL中是否也会触发checkpoint事件呢? Oracle中测试 [oracle@orcldb ~]$ sq

[转帖]postgresql 表和索引的膨胀简析

postgresql 表和索引的膨胀是非常常见的,一方面是因为 autovacuum 清理标记为 dead tuple 的速度跟不上,另一方面也可能是由于长事物,未决事物,复制槽引起的。 #初始化数据 zabbix=# create table tmp_t0(c0 varchar(100),c1 v