PostgreSQL高可用pgbackrest物理备份

1 pgbackrest简介
pgBackRest旨在成为一个可靠、易于使用的备份和恢复解决方案,通过利用针对特定数据库要求优化的算法,可以无缝扩展到最大的数据库和工作负载。
主要的功能
并行备份和恢复
本地或远程备份
完整、增量和差异备份
备份轮换和存档过期策略
支持压缩和完整性校验

2 PAF简介
苍穹标准采用的postgreSQL数据库的高可用方式是pg_auto_failover,pg_auto_failover是PostgreSQL的一个扩展,用于监控和管理Postgres集群,自动触发故障转移,pg_auto_failover相比于Patroni、repmgr、Stolon和pgPool-II配置更简单,运维更方便。
3 环境信息
下文以此环境信息为例
| 地址 | 主机名 | 描述 |
172.18.11.63 | kd-app-01 | PG高可用计算节点 |
172.18.11.64 | kd-app-02 | PG高可用计算节点 |
172.18.11.65 | kd-app-03 | 备份节点(也是pgmonitor节点),需要注意磁盘空间 |
4 创建必要目录
4.1 创建日志目录(所有节点执行)
sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres.postgres /var/log/pgbackrest/
4.2 创建配置目录(所有节点执行)
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres.postgres -R /etc/pgbackrest/
4.3创建命令和主目录(所有节点执行)
sudo mkdir /usr/bin/pgbackrest
sudo chown postgres.postgres /usr/bin/pgbackrest/
sudo chmod 755 /usr/bin/pgbackrest/
sudo mkdir -p /var/postgresql/pgbackrest/repos
sudo chmod 750 /var/postgresql/pgbackrest/ -R
sudo chown postgres.postgres /var/postgresql/pgbackrest/ -R
5 安装
工具已经安装好,在$PGHOME的直接确认配置就可以,无需安装
$PGHOME/bin/pgbackrest version
Tips:如果缺少libxxx.so文件,可以从$PGHOME/lib 下找到对应的libxxx.so.x文件,将其拷贝到 /usr/lib64目录下。 如缺少 libpq.so.5 文件,就将 $PGHOME/lib/libpq.so.5.12 拷贝并重命名为 /usr/lib64/libpq.so.5
6 配置ssh互信
6.1 创建身份验证密钥(所有节点执行)
设置postgres用户的密码,用于传输公钥文件
# echo "Cosmic@2023"|passwd postgres --stdin
# su - postgres
$ ssh-keygen -f /home/postgres/.ssh/id_rsa -t rsa -b 4096 -N ""
6.2 交换公钥
PG节点1执行: $ cat /home/postgres/.ssh/id_rsa.pub | ssh postgres@172.18.11.65 "cat >> /home/postgres/.ssh/authorized_keys"
PG节点2执行: $ cat /home/postgres/.ssh/id_rsa.pub | ssh postgres@172.18.11.65 "cat >> /home/postgres/.ssh/authorized_keys"
备份节点执行: $ cat /home/postgres/.ssh/id_rsa.pub | ssh postgres@172.18.11.63 "cat >> /home/postgres/.ssh/authorized_keys"
备份节点执行: $ cat /home/postgres/.ssh/id_rsa.pub | ssh postgres@172.18.11.64 "cat >> /home/postgres/.ssh/authorized_keys"
所有节点执行: # chmod 600 /home/postgres/.ssh/authorized_keys
验证是否能免密ssh远程postgres用户登录
# su - postgres
$ ssh postgres@主机地址
7 配置文件
7.1 编辑配置文件
PG节点1和PG节点2执行:
# su - postgres
$ cat > /etc/pgbackrest/pgbackrest.conf <<EOF
[paf]
pg1-path=/var/kingdee/cosmic/postgres/pg_data
[global]
log-level-file=detail
repo1-host=172.18.11.65
repo1-host-user=postgres
log-path=/var/log/pgbackrest
EOF
备份节点:
$ cat >/etc/pgbackrest/pgbackrest.conf <<EOF
[paf]
#pg节点1的地址
pg1-host=172.18.11.63
#pg节点1的数据路径
pg1-path=/var/kingdee/cosmic/postgres/pg_data
pg1-port=5432
pg1-user=postgres
#pg节点2的地址
pg2-host=172.18.11.64
#pg节点2的数据路径
pg2-path=/var/kingdee/cosmic/postgres/pg_data
pg2-port=5432
pg2-user=postgres
[global]
repo1-path=/var/postgresql/pgbackrest/repos
log-path=/var/log/pgbackrest
start-fast=y
repo1-retention-full=2
EOF
注意修改pg的地址、数据路径
7.2 修改归档命令
修改归档参数,利用pgbackrest管理和归档wal日志
# su - postgres
$ vi $PGDATA/postgresql.conf
archive_command = '/var/postgresql/soft/pg12.8/bin/pgbackrest --stanza=paf archive-push %p'
归档命令生效方式:$ pg_ctl reload
检查生效: $ psql -c "select name,setting from pg_settings where name='archive_command';"

8 初始化和备份
8.1 初始化(实例名paf)
备份节点: $ pgbackrest --stanza=paf --log-level-console=info stanza-create
8.2 检测
备份节点: $ pgbackrest --stanza=paf --log-level-console=info check
8.3 全量备份
备份节点: pgbackrest --stanza=paf --log-level-console=info --type=full backup --exclude=log/ --process-max=16
注:--exclude 排除某个目录或文件,此处排除了log日
PostgreSQL高可用pgbackrest物理备份
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。




