LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

PostgreSQL 数据库怎么实现自动备份?

admin
2024年10月30日 7:53 本文热度 226

如果您是数据库管理员,则很可能会有数据的备份。如果您有数据备份,那么您很可能考虑过如何自动化备份过程。本文可以作为如何自动化 PostgreSQL 备份的指南。

选择备份方式

默认情况下,就 PostgreSQL 而言,在备份数据时,您有几种选择:

  • • 您可以使用pg_dumppg_dumpall

  • • 您也可以使用pg_basebackup

PostgreSQL 提供的这两个工具之间的主要区别在于:pg_dump 和 pg_dumpall 是逻辑备份,而 pg_basebackup 是物理备份。pg_dump 和 pg_dumpall 之间也存在差异。第一个通常用于备份单个 PostgreSQL 数据库,pg_dumpall 更常用于将所有 PostgreSQL 数据库转储到单个脚本文件中。以下是使用 pg_dump 实现备份目的的方法:

pg_dump -U postgres -W -F t database_name > database_name.tar

以下是上述命令的作用:

  • • pg_dump调用 pg_dump。

  • • -U选项指定用户。

  • • -W选项强制 pg_dump 在单击 Enter 键后立即提示输入密码。

  • • -F选项指定文件输出格式,文件格式可以是:c自定义格式、d目录格式的存档、t生成.tar文件,或p纯文件。

  • • database_name指定要备份数据的数据库名称。

  • • database_name.tar是输出文件。

您还可以使用 pg_dumpall,将所有 PostgreSQL 数据库备份到一个脚本文件中,如上所述。下面演示了如何做到这一点:

pg_dumpall -U postgres -f data.sql

pg_dumpall 的选项与 pg_dump 的选项类似。

  • • 您还可以使用命令$ pg_dumpall --schema-only > schema.sql,备份所有数据库中的所有对象,包括角色、表空间、模式、表、索引、触发器、函数、约束、视图、所有权和权限。

  • • 如果您只想备份角色,请使用$ pg_dumpall --roles-only > roles.sql

最后,您可以使用 pg_basebackup,创建 PostgreSQL 数据库的物理备份。

pg_basebackup -D /backups -x

选项包括:

  • • -D用于指定输出目录的路径

  • • -x将事务日志包含在备份文件夹中

在 Linux 上自动备份

以下是有关如何使用 cron 作业,自动执行 PostgreSQL 备份过程的简易指南。首先,创建一个执行备份的 bash 脚本,可能命名为backup.sh

#!/bin/bash

Optional hostname to adhere to pg_hba policies. Will default to "localhost" if none specified.
BACKUP_HOST="192.168.89.128"

Optional username to connect to database as. Will default to "postgres" if none specified.
BACKUP_USER=postgres

backup directory infomation
BACKUP_DIR=/home/postgres/backup/
BACKUP_FILE="$BACKUP_DIR/db_backup_$(date +%Y%m%d).bak"

Set the PGPASSWORD environment variable
export PGPASSWORD="test"

Perform the backup
pg_dumpall -h $BACKUP_HOST -U $BACKUP_USER -f $BACKUP_FILE

在脚本准备完成后,我们现在可以调度它,以便它可以在每天的特定时间运行。在本文中,我们将安排此程序在每天午夜运行。

我们可以使用命令crontab -e打开 crontab,并输入以下命令:

0 0 * * * bash /home/to/backup.sh >> /home/to/backup.log 2>&1

下面是调度backup.sh脚本的示例。我们安排文件在每天午夜运行,并将日志记录到backup.log文件。

0 0 * * * bash /home/postgres/backup/backup.sh >> /home/postgres/backup/backup.log 2>&1

在完成设置的配置和规划好备份后,PostgreSQL 备份现在应该已自动化了。

在 Windows 上自动备份

创建一个批处理脚本文件,可能命名为backup.bat。该文件必须位于 PostgreSQL 备份目录中,而不是 bin 文件夹中。

@echo off
for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
  set year=%%i
  set month=%%j
  set monthday=%%k
  set weekday=%%l
)
set datestr=%year%%month%%monthday%

set BACKUP_FILE=<BACKUP_DIR>\db_backup_%datestr%.bak
echo backup file name is %BACKUP_FILE%
SET PGPASSWORD=<Password>
echo on
<PGHOME>\bin\pg_dumpall -h <HostName> -U <UserName> -f %BACKUP_FILE%

您需要根据实际生产环境,更改脚本文件:

  • • 将<BACKUP_DIR>更改为有效的备份目录。

    注意:确保在单词 BACKUP_FILE 后没有空格,任何空格都会导致该设置不起作用。
  • • 将上面的<Password>设置更改为正确的备份用户密码。PGPASSWORD 的说明。

    注意:确保在单词 PGPASSWORD 后没有空格,任何空格都会导致该设置不起作用。
  • • 将<HostName>更改为部署 PostgreSQL 的服务器的 IP 地址或 DNS 名称。

  • • 将<UserName>更改为备份用户,要确保该用户有权访问数据库以进行备份。

  • • 将<PGHOME>更改为 PostgreSQL 备份工具的安装目录。

在脚本准备完成后,在 Windows 任务计划程序中创建一个任务。

在选择好将在其中运行任务的安全上下文后,建议更改运行备份和存储文件的目录安全性,因为一个高级用户名和密码会以纯文本形式存储。另一个方法是修改 pg_hba.conf 文件,将备份服务器添加为可信任的连接。

总结

自动化 PostgreSQL 备份并不像乍一看那么难。使用 pg_dumpall、pg_basebackup 或 pg_backrest 时,在 Linux crontab 或 Windows 任务计划程序的帮助下,您可以放心,您的 PostgreSQL 数据会得到妥善处理。如果您还有其他问题,请务必查看备份工具的文档,或者在需要进一步帮助时联系支持人员。


该文章在 2024/10/30 14:36:54 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved