PG数据库备份

安装数据库客户端

# Import the repository signing key:
sudo apt install curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc

# Create the repository configuration file:
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Update the package lists:
sudo apt update

# Install the latest version of PostgreSQL:
# If you want a specific version, use 'postgresql-16' or similar instead of 'postgresql'
sudo apt install postgresql-client-15

网络设置

公网组网/局域网方案

允许备份主机访问

ufw allow from 备份主机ip
ufw reload
公网非组网方案

通过隧道实现,将远程服务器端口映射到本地

autossh -i 秘钥路径 -M 监控端口 -NL *:本地端口:远程IP:远程端口 远程IP -p ssh端口

例子:

autossh -i ./key.pub -M 15432 -NL *:5432:127.0.0.1:5432 192.168.2.2 -p 22

备份脚本

备份主机新建备份目录

mkdir -p /data/backup/postgres

备份脚本

vi /data/backup/postgres.sh

脚本内容

#!/bin/bash

mkdir -p /data/backup/postgres/`date +%Y%m%d`

export PGPASSWORD=数据库密码

pg_dump -h 数据库IP -p 数据库端口 -U 数据库用户名 数据库名 -f /data/backup/postgres/`date +%Y%m%d`/数据库名.sql -n 模式名

cd /data/backup/postgres/

tar zcvf `date +%Y%m%d`.tar.gz `date +%Y%m%d`

rm -rf `date +%Y%m%d`

find /data/backup/postgres/ -xdev -mtime +30 -name "*.tar.gz" -exec rm -f {} \;

完成编辑后赋予可执行权限

chmod +x /data/backup/postgres.sh

定时任务

0 2 * * * flock -xn /tmp/postgres.lock -c "/data/backup/postgres.sh"

MINIO备份

安装和配置命令行客户端

文章

如果是直连MINIO的9000端口,use_https = False ,通过公网域名https访问则use_https = True

备份命令

s3cmd sync s3://桶名称/ /data/backup/minio/桶名称/

定时任务

0 2 * * * flock -xn /tmp/minio.lock -c "s3cmd sync s3://桶名称/ /data/backup/minio/桶名称/"