postgresql 灾备自动配置脚本-barman

前置条件:

postgreql版本:12+
barman版本:2.+
运行环境:centos系列加上网

脚本:

结合末尾的执行参数看更容易理解

cat pg_disaster_recovery_with_barman.sh
#!/bin/bash
set -o nounset #遇到变量不存在,脚本报错
set -o xtrace # 打印执行命令
set -o errexit # 错误退出
set -o pipefail # 只要一个子命令失败,整个管道命令就失败,脚本就会终止执行
target=$1

# 设置本地yum源
function set_pg_repo(){
echo "[barman-pg]
name=barman-pg-rhel7
baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-8-x86_64/
gpgcheck=0" > /etc/yum.repos.d/barman-pg.repo
}

function set_pg_admin_secret(){
echo "${pg_host}:5432:*:${pg_user}:${pg_password}" > ${HOME}/.pgpass
chmod 600 ${HOME}/.pgpass

}

function create_pg_user_barman(){
psql -h ${pg_host} -U ${pg_user} -c "CREATE USER barman WITH superuser LOGIN REPLICATION createdb createrole ENCRYPTED password '${pg_password}';"
}

function install_barman(){
    yum install epel-release -y
    set_pg_repo
    yum install  barman -y
    yum  install  postgresql12 -y
}


function config_barman(){
set_pg_repo
install_barman
set_pg_admin_secret
create_pg_user_barman
mkdir -p  /var/lib/barman/
echo "${pg_host}:5432:*:barman:${pg_password}" >/var/lib/barman/.pgpass
chown barman:barman /var/lib/barman/.pgpass
chmod 600 /var/lib/barman/.pgpass  
if su - barman -c "psql -c 'SELECT version()' -U barman -h ${pg_host} postgres"
then
    echo "barman user is ok"
else
    echo "barman user in pg is bad"
    exit 1
fi
sed  -e 's/streaming_barman/barman/' -e "s/=pg/=${pg_host}/" -e 's/;path_prefix/path_prefix/'  /etc/barman.d/streaming-server.conf-template > /etc/barman.d/streaming-server.conf
echo "export PATH=\$PATH:/usr/pgsql-12/bin" > /etc/profile.d/pg.sh
source /etc/profile.d/pg.sh

barman receive-wal --create-slot streaming
if ! barman switch-xlog --force --archive --archive-timeout 60 streaming  # if failed, do it baragain
then
    barman switch-xlog --force --archive --archive-timeout 60 streaming 
fi
barman check streaming
}

if test $target = "barman"
then
    pg_host=$2
    pg_user=$3
    pg_password=$4
    config_barman
    echo "config barman successful"
    echo "execute barman backup streaming to start backup"
fi

使用方式

例如

bash pg_disaster_recovery_with_barman.sh barman 10.0.0.1 postgres 123456

备份恢复

本地恢复

barman list-backup streaming
chown barman /var/lib/postgresql
barman recover --target-time "2021-07-07 17:56:09+08:00" --target-action promote  streaming 20210707T173939 /var/lib/postgresql
#barman recover  streaming 20210707T145829 /var/lib/postgresql
chown -R postgres:postgres /var/lib/postgresql
mv -f /opt/data/postgresql/postgresql.auto.conf{.origin,}
mv -f  /opt/data/postgresql/postgresql.conf{.origin,} 

远程恢复

#为barman用户生成证书
su - barman -c "ssh-keygen -t rsa -P '' -b 4096 -C 'barman@pg-barman' -m PEM  -f /var/lib/barman/pg.pem"
# 把公钥/var/lib/barman/pg.pem放在pg恢复的目标数据库主机上有权限的用户,具体请了解linux公钥交换认证
su - barman -c "cat /var/lib/barman/pg.pem.pub"
#恢复示例
barman recover --remote-ssh-command "ssh root@10.0.0.1 -i /var/lib/barman/pg.pem" --target-time "2021-07-07 17:56:09+08:00" --target-action promote  streaming 20210707T173939 /opt/data/postgresql

工作中使用的,效果很好,遇到问题请留言讨论

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

推荐阅读更多精彩内容