远端备份 PostgreSQL 数据库

远端备份 PostgreSQL 数据库。以下是几种常见的方式:

使用 pg_dump

可以使用 pg_dump 命令从远端 PostgreSQL 数据库执行备份。pg_dump 是 PostgreSQL 自带的工具,可以将数据库备份到 SQL 文件中。以下是基本语法:

pg_dump -U 用户名 -h 主机地址 -p 端口 数据库名 > 备份文件.sql

例如:

pg_dump -U postgres -h 10.10.180.251 -p 4815 mydb > mydb_backup.sql

备份文件可以直接保存到本地磁盘,也可以通过网络传输到其他服务器。

使用 pg_dumpall

pg_dumpall 是另一个 PostgreSQL 自带的工具,用于备份整个 PostgreSQL 集群,包括所有数据库和全局对象。基本语法如下:

pg_dumpall -U 用户名 -h 主机地址 -p 端口 > 备份文件.sql

例如:

pg_dumpall -U postgres -h 10.10.180.251 -p 4815 > cluster_backup.sql

这种方法也可以用来备份远端数据库。

使用 rsync

rsync 可以用于将数据目录同步到远端备份服务器。这通常用于物理备份,即将整个 PostgreSQL 数据目录复制到备份服务器上。基本语法如下:

rsync -avz -e ssh 用户名@远端主机地址:/远端数据目录/ /本地备份目录/

例如:

rsync -avz -e ssh postgres@10.10.180.251:/pgdata/data/postgres-ae6e2104 /backrestrepo/postgres-ae6e2104-backups/

这种方式需要确保 PostgreSQL 数据库处于一致状态,通常需要使用 pg_start_backuppg_stop_backup 函数来保证备份的一致性。

使用 pgBackRest

pgBackRest 是一个功能强大的备份工具,支持远端备份和恢复。它可以通过 SSH 或 TLS 连接远程主机,支持物理备份和逻辑备份。

以下是使用 pgBackRest 进行远端备份的基本步骤:

  1. 安装 pgBackRest:在数据库服务器和备份服务器上安装相同版本的 pgBackRest。

  2. 配置 SSH 密钥认证:确保备份服务器可以通过 SSH 免密码登录到数据库服务器。在备份服务器上生成 SSH 密钥对,并将公钥添加到数据库服务器的 authorized_keys 文件中。

  3. 创建 pgBackRest 配置文件:在备份服务器上配置 pgBackRest,指定数据库主机、数据目录和备份仓库路径。例如:

    [db]
    pg1-host=db1
    pg1-path=/var/lib/postgresql/10/main
    [global]
    repo1-path=/var/lib/pgbackrest
    repo1-retention-full=2
    start-fast=y
    
  4. 创建 Stanza:在备份服务器上运行以下命令初始化备份仓库结构:

    sudo -u pgbackrest pgbackrest --stanza=db stanza-create
    
  5. 执行备份:在备份服务器上运行备份命令:

    sudo -u pgbackrest pgbackrest --stanza=db backup
    
  6. 验证备份:使用 pgbackrest info 命令查看备份信息,确保备份成功。

pg_basebackup

pg_basebackup 是 PostgreSQL 提供的一个用于远端备份的工具,它可以从远端的 PostgreSQL 数据库集群获取基线备份。以下是 pg_basebackup 的基本用法:

基本语法

pg_basebackup [选项...]

常用选项

  • -h host--host=host:指定远端 PostgreSQL 服务器的主机地址。
  • -p port--port=port:指定远端 PostgreSQL 服务器的端口号。
  • -U username--username=username:指定用于连接远端服务器的用户名。
  • -D directory--pgdata=directory:指定备份数据的存放目录。
  • -F format--format=format:指定备份格式,可以是 p(plain,默认值)或 t(tar)。
  • -X method--wal-method=method:指定如何处理 WAL 日志,可选值为 stream(流式传输)、fetch(备份后获取)或 none(不包含 WAL 日志)。
  • -v--verbose:启用详细模式,显示更多备份过程中的信息。
  • -P--progress:启用进度报告,显示备份进度。
  • -R--write-recovery-conf:创建 standby.signal 文件并追加连接设置到 postgresql.auto.conf 文件,便于设置备用服务器。

示例

以下是一些使用 pg_basebackup 进行远端备份的例子:

  • 全量备份
pg_basebackup -h 10.10.180.251 -p 4815 -U postgres -D /backup/pg_basebackup -Fp -v

这条命令将对远端主机 10.10.180.251 上的 PostgreSQL 数据库进行全量备份,并将备份数据存放在 /backup/pg_basebackup 目录下。

  • 增量备份
pg_basebackup -h 10.10.180.251 -p 4815 -U postgres -D /backup/pg_incremental -Ft -v --incremental=/backup/pg_basebackup/backup_manifest

此命令基于之前全量备份的 backup_manifest 文件进行增量备份,备份数据将以 tar 格式存放在 /backup/pg_incremental 目录中。

  • 备份并包含 WAL 日志流
pg_basebackup -h 10.10.180.251 -p 4815 -U postgres -D /backup/pg_basebackup_wal -Fp -v -X stream

这条命令在进行全量备份的同时,通过流式传输包含 WAL 日志,便于后续的时间点恢复。

  • 创建备用服务器配置
pg_basebackup -h 10.10.180.251 -p 4815 -U postgres -D /backup/pg_standby -Fp -v -R

该命令在备份数据的同时,创建 standby.signal 文件并配置 postgresql.auto.conf,为设置流复制的备用服务器做好准备。

在使用 pg_basebackup 进行远端备份时,请确保远端 PostgreSQL 服务器已配置好 pg_hba.conf 文件,允许复制连接,并且 max_wal_senders 参数设置足够大以支持备份操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值