首页 > 数据库 >【数据库应用】异地备份:pg_rman支持异地备份

【数据库应用】异地备份:pg_rman支持异地备份

时间:2024-11-25 21:22:17浏览次数:4  
标签:rclone 备份 异地 pg 挂载 rman backup

要让 pg_rman 支持异地备份,可以通过以下方式实现:

方法 1:使用 NFS 挂载远程存储

1、在目标服务器上配置 NFS 服务:

确保远程存储服务器上安装并启用了 NFS 服务。
配置共享目录,例如 /backup。
在 /etc/exports 中添加导出配置,例如:

/backup 192.168.1.0/24(rw,sync,no_root_squash)

重启 NFS 服务:

sudo systemctl restart nfs-server

2、在 PostgreSQL 服务器上挂载 NFS:

在 PostgreSQL 服务器上安装 NFS 客户端:

sudo apt install nfs-common    # 对于 Debian/Ubuntu
sudo yum install nfs-utils    # 对于 CentOS/Red Hat

创建挂载点并挂载远程目录:


sudo mkdir -p /mnt/backup
sudo mount -t nfs 192.168.1.100:/backup /mnt/backup

在 /etc/fstab 中配置自动挂载:

192.168.1.100:/backup /mnt/backup nfs defaults 0 0

3、配置 pg_rman:

将备份路径设置为 NFS 挂载点:

1pg_rman init -B /mnt/backup

方法 2:通过 SSHFS 远程挂载

1、安装 SSHFS:

在 PostgreSQL 服务器上安装 SSHFS:

sudo apt install sshfs   # 对于 Debian/Ubuntu
sudo yum install fuse-sshfs   # 对于 CentOS/Red Hat

2、挂载远程存储:

创建挂载点并挂载远程目录:

sudo mkdir -p /mnt/backup
sshfs -o allow_other -p 922 root@192.16.7.162:/minio/data/pgbk/pg16  /bk

如果需要在启动时自动挂载,可以使用 sshfs 配合 fstab 或 autofs。

3、配置 pg_rman:

将备份路径设置为 SSHFS 挂载点:

mkdir /bk
chmod 777 /bk/
pg_rman init -B /bk
more /bk/pg_rman.ini

-- 全量
pg_rman backup --backup-mode=full -B /bk
pg_rman show -B /bk
pg_rman show '2024-07-08 15:24:04' -B /bk/
pg_rman validate -B /bk

-- 增量
pg_rman backup --backup-mode=incremental -B /bk


pg_ctl stop 
rm -rf /pg16/pgdata/

-- 还原到最新状态
pg_rman restore -B /bk


-- 增量还原
pg_rman restore -B /bk --recovery-target-time="2024-07-08 15:18:10"


pg_ctl start



create table t(id int, col2 text);
insert into t select n, 'test123' || n || md5(random()::varchar) from generate_series(1, 6000000) as n;

方法 3:使用对象存储,将S3挂载为本地盘(使用 s3fs-fuse或 rclone)

如果希望直接使用对象存储(如 Amazon S3 或 MinIO),需要通过工具实现对对象存储的挂载或同步:

1、使用 s3fs-fuse 挂载对象存储:

sudo yum install s3fs-fuse -y

echo "12345678:12345678" > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

mkdir -p /s3fs_dbbk
s3fs dbbk /s3fs_dbbk -o passwd_file=~/.passwd-s3fs -o url=http://192.16.7.162:9001 -o use_path_request_style  -o allow_other


fusermount -uz /s3fs_dbbk
pkill -9 s3fs

2、使用 rclone 挂载对象存储:

rclone 是一个强大的命令行工具,支持多种云存储服务,包括 S3。可以用它将 S3 存储桶挂载为本地文件系统。

wget https://downloads.rclone.org/v1.68.1/rclone-v1.68.1-linux-amd64.zip 
unzip rclone-v1.68.1-linux-amd64.zip  -d /usr/local/
ln -s /usr/local/rclone-v1.68.1-linux-amd64 /usr/local/rclone
ln -s /usr/local/rclone/rclone /usr/local/bin

# /usr/local/rclone/rclone config

cat > ~/.config/rclone/rclone.conf <<"EOF"
[mys3]
type = s3
provider = Minio
access_key_id = minioadmin
secret_access_key = minioadmin
region = us-east-1
endpoint = http://192.16.7.162:9001
acl = private
EOF

rclone lsd mys3: -vv

mkdir ~/s3bucket
ln -s /usr/bin/fusermount /usr/bin/fusermount3

/usr/local/rclone/rclone mount  mys3:pgbk  ~/s3bucket --allow-other &


rclone config show

pkill -9 rclone
umount ~/s3bucket

方法 4:使用脚本直接传输备份文件

1、备份完成后推送文件:

使用 pg_rman 在本地执行备份:

pg_rman backup

使用 rsync 或 scp 将备份文件传输到远程:

rsync -av /path/to/local/backup user@192.168.1.100:/backup

2、自动化脚本:

编写脚本完成备份和传输:

#!/bin/bash
pg_rman backup
rsync -av /path/to/local/backup user@192.168.1.100:/backup

方法选择建议

如果需要实时备份到远程,推荐使用 NFS 或 SSHFS。

如果需要与云存储集成,推荐使用 rclone 或 s3fs-fuse。

如果备份文件较大且传输速度是关键,推荐使用 rsync 进行增量传输。

通过这些方法,可以让 pg_rman 支持异地备份,同时满足高效和安全的需求。

总结

1、pg_rman只从postgresql.conf取log_directory和archive_command参数的值。所以,需要配置该文件,而不能使用postgresql.auto.conf文件。

2、每次备份完(无论是全备还是增备),都必须要做一次校验,否则备份集不可用来恢复,增量备份时也会报错。没有验证的话,pg_rman show也能看到这个没有验证的备份,但是状态显示DONE而非OK

3、pg_rman必须和数据库服务器安装在一块
4、pg_rman软件的版本需要和数据库的版本匹配,安装完成后,可执行文件pg_rman和PostgreSQL的bin目录在一块。

5、可以利用sshfs、nfs、samba等共享文件系统进行类似的异地备份。

原创 AiDBA

标签:rclone,备份,异地,pg,挂载,rman,backup
From: https://www.cnblogs.com/o-O-oO/p/18568774

相关文章

  • 【数据库开发】银行重要交易系统信创分布式数据库备份系统实施策略如何设计?
    一、银行重要系统数据库备份要素分析1.1数据库备份恢复内容1.2数据库备份恢复策略二、信创分布式数据库备份系统建设难点2.1生态不成熟2.2备份/恢复能力不足2.3备份运维不灵活、人工依赖程度高三、信创分布式数据库备份系统实施策略3.1数......
  • 轻松将 iPad 备份到外部驱动器的 3 种快速方法
    为了确保您的iPad数据无忧安全,我们来谈谈如何将这些珍贵的信息备份到外部硬盘上。这不仅是一个明智的选择,而且也是一个简单的过程。无论是家庭照片、工作文档还是您最喜欢的音乐收藏,一旦您掌握了将iPad备份到外部硬盘的技巧,这些数据将像放在保险箱中一样安全。让我们一起来......
  • PG优化-业务场景需求实现-大表低基数列group by优化
    PG优化-业务场景需求实现-大表低基数列groupby优化原创 akengan DB印象  2021年11月07日22:18阅读使人充实,讨论使人敏捷,写作使人精确。 前言 今天抽空聊一个和成本优化相关的话题。 说到成本优化,大家觉得优化多少算不错呢? 10%?20%? 成本优化的空间到底有多......
  • KingbaseES V8R6集群备份恢复案例之---远程外部备份故障案例
    案例说明:KingbaseESV8R6集群,通过‘cluster’模式执行远程异地的外部备份,在备份初始化时,故障显示,远程节点连接数据库失败,异常终止。原因是,数据库节点不支持本地数据库访问导致。适用版本:KingbaseESV8R6集群架构:一、问题现象如下所示,在执行sys_backup.shinit后,提示远程备......
  • pg常用运维命令
    常用命令\d显示当前数据库中的所有的表、视图、sequence\dtest01显示test01表的详情\dt显示当前数据库中的所有的表\dttest*只列出test开头的表\db+查看pg中所有表空间\dn显示所有Schema\dv显示视图\di显示索引\ds显示序列号\df显示函数\du,\dg列出数据......
  • 数字图像处理(4):FPGA中的定点数、浮点数
            (1)定点数:小数点固定在数据的某一位置的数,可以分为定点整数和定点小数和普通定点数。定点数广泛应用于数字图像处理(图像滤波、图像缩放)和数字信号处理(如FFT、定点卷积)中。定点整数:小数点在整个数据的最右侧。    +100(D)=01100100(B)定点小数:小数点在......
  • 【Linux定时自动备份脚本】
    流程清单创建备份用的用户back_up,只给需要被备份文件夹的读取权限,和备份存放目录的写权限创建备份脚本,创建清除备份的脚本使用back_up用户,赋予脚本权限,修改crontab定时任务创建备份用户分配权限创建用户sudoadduserback_uppasswdback_up分配只读文件和可读写文......
  • PostgreSQL 数据库向量化的核心:pgvector
    pgvector介绍pgvector是一款开源的向量搜索引擎,除了具备所有Postgres数据库的特性外,最主要的特点是能在Postgres数据库存储和检索向量数据,支持向量的精确检索和模糊检索。向量格式除了传统embedding模型的单精度浮点数外,还支持半精度浮点数,二元向量或者稀疏向量。安装Dockerdo......
  • pg_file_settings和pg_settings系统视图的区别
    PostgreSQL的系统视图pg_file_settings和pg_settings的区别pg_file_settings和pg_settings是PostgreSQL中两个相关的系统视图,它们用于查看和管理数据库的配置设置。这两个视图提供了不同层次的配置信息,适用于不同的管理和调试需求。以下是它们的区别和特点:pg_file_sett......
  • pg_settings参数详解
    引言在管理和配置PostgreSQL数据库时,了解参数的分类和了解如何查看和更改这些参数是至关重要的。参数的分类涉及到不同的生效方式,如内部参数、需要重启生效的参数、不需要重启而可以重新加载配置文件生效的参数等。本文将介绍各类参数的分类及其在PostgreSQL中的作用。一、参数的......