首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何备份PostgreSQL数据库

如何备份PostgreSQL数据库

原创
作者头像
温浪
发布2018-08-14 17:31:19
14.7K0
发布2018-08-14 17:31:19
举报

如果您在生产环境中使用PostgreSQL,请务必采取预防措施以确保用户的数据不会丢失。通过频繁备份数据库或使用cron任务自动执行备份,您将能够在数据库丢失或损坏的情况下快速还原系统。幸运的是,PostgreSQL包含的工具使这项任务变得简单易行。

开始之前

在开始本教程之前,您应该在系统上安装PostgreSQL。浏览我们如何在Ubuntu教程上安装PostgreSQL以安装PostgreSQL并创建一个示例数据库。

一次性SQL转储

单数据库

PostgreSQL提供了pg_dump实用程序来简化备份单个数据库的过程。 必须以对要备份的数据库具有读取权限的用户身份运行此命令。

postgres用户身份登录:

su - postgres

通过运行以下命令将数据库的内容转储到文件中。替换dbname为要备份的数据库的名称。

pg_dump dbname > dbname.bak

生成的备份文件dbname.bak可以使用scp传输到另一台主机,也可以存储在本地以供以后使用。

要演示恢复丢失的数据,请删除示例数据库并在其位置创建一个空数据库:

   dropdb dbname
   createdb dbname

使用psql恢复数据库

   psql test < dbname.bak

备份格式有几种选择:

  • *.bak:压缩二进制格式
  • *.sql:明文转储
  • *.tar:tarball

注意:默认情况下,PostgreSQL将忽略备份过程中发生的任何错误。这可能导致备份不完整。要防止这种情况,您可以使用-1选项运行pg_dump命令。 这会将整个备份过程视为单个事务,这将在发生错误时阻止部分备份。

pg_dump -1 dbname > dbname.bak

远程数据库

正如psql允许您连接到远程主机一样,可以从客户端计算机运行pg_dump以备份远程服务器上的数据。 使用-h标志指定服务器的IP地址(本文使用198.51.100.0),使用-p标识PostgreSQL正在侦听的端口:

pg_dump -h 198.51.100.0 -p 5432 dbname > dbname.bak

所有数据库

由于pg_dump一次只创建一个数据库的备份,因此它不会存储有关数据库角色或其他群集范围配置的信息。 要存储此信息并同时备份所有数据库,可以使用pg_dumpall

创建备份文件:

  pg_dumpall > pg_backup.bak

从备份还原所有数据库:

  psql -f pg_backup.bak postgres

使用Cron任务自动执行备份

您可能希望设置一个cron作业,以便定期自动备份数据库。 本节中的步骤将设置一个cron任务,每周运行一次pg_dump

确保以postgres用户身份登录:

  su - postgres

创建存储自动备份的目录:

  mkdir -p ~/postgres/backups

编辑crontab以创建新的cron任务:

  crontab -e

将以下行添加到crontab的末尾:

crontab

0 * * * 0 pg_dump -U postgres dbname > ~/postgres/backups/dbname.bak

保存并退出编辑器。您的数据库将在每个星期日的半夜12点进行备份。

下一步

PostgreSQL还提供了更高级的备份数据库方法。 官方文档描述了如何设置连续归档和时间点恢复。 这是一个复杂得多的过程,但它将维护数据库的持续存档,并使重放PostgreSQL的日志成为可能,以便在过去的任何时刻恢复数据库的状态。

如果您拥有一个非常大的数据库,虽然连续归档大型数据库会占用资源,但此方法也很有用。 由于该过程正在进行,因此无需进行频繁且耗时的完整备份。

更多信息

有关此主题的其他信息,您可能需要参考以下资源:


参考文献:《How to Back Up Your PostgreSQL Database》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始之前
  • 一次性SQL转储
    • 单数据库
      • 远程数据库
        • 所有数据库
        • 使用Cron任务自动执行备份
        • 下一步
        • 更多信息
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档