文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PostgreSQL 怎么自动备份?自己动手吧

2024-11-28 16:09

关注

• 您可以使用pg_dump或pg_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=\db_backup_%datestr%.bak
echo backup file name is %BACKUP_FILE%
SET PGPASSWORD=
echo on
\bin\pg_dumpall -h  -U  -f %BACKUP_FILE%

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

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

注意:确保在单词 BACKUP_FILE 后没有空格,任何空格都会导致该设置不起作用。

• 将上面的设置更改为正确的备份用户密码。PGPASSWORD 的说明。

注意:确保在单词 PGPASSWORD 后没有空格,任何空格都会导致该设置不起作用。

• 将更改为部署 PostgreSQL 的服务器的 IP 地址或 DNS 名称。

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

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

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

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

总结

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

来源:红石PG内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯