PostgreSQL的逻辑备份与物理备份

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 制定备份和恢复计划是每一个DBA最重要的工作之一,它决定了数据的有效性和完整性。也可以搭建跨越不同数据中心的流复制集群,能有效的帮助你避免单点故障。但是只有一份有效的备份能够帮助从delete或者drop的误操中恢复数据。

制定备份和恢复计划是每一个DBA最重要的工作之一,它决定了数据的有效性和完整性。也可以搭建跨越不同数据中心的流复制集群,能有效的帮助你避免单点故障。但是只有一份有效的备份能够帮助从delete或者drop的误操中恢复数据。
这篇文章中,我们将讨论PostgreSQL的一些备份选项。

备份类型

主要有两种备份类型:物理备份和逻辑备份。在设计备份策略之前,理解这一点非常重要。使用何种备份类型,也取决于你使用的备份工具。

逻辑备份

逻辑备份通常包含以纯文本、可读格式存储的数据,或者可以轻松转换为这种格式,甚至可以提取单行数据并还原它。
恢复整个逻辑备份可能非常慢——数据库必须处理加载数据所需的所有查询,这总是比复制数据库文件要慢。

物理备份

物理备份按原样获取数据——最终,数据只是存储在某个磁盘上的一堆文件。你可以复制数据文件,并在给定的时间点拥有数据库的副本。然而在实际使用中,它并不像运行cp命令那么容易。在进行物理备份时可能会发生数据库更改。为了确保备份可以安全使用,任何物理备份都必须是一致的。

物理备份对于恢复整个数据集非常有用——速度受到硬件的限制:磁盘和网络(如果通过网络复制数据)。

PostgreSQL的数据备份

像其他数据库一样,PostgreSQL支持逻辑备份和物理备份

逻辑备份

PostgreSQL附带了一个名为pg_dump的程序——它是一个用于在PostgreSQL数据库上执行逻辑备份的实用工具。
它支持几种输出格式:默认情况下,它将数据存储在纯文本文件中,但它也可以生成tar文件或定制的二进制格式(经过压缩),可以使用pg_restore还原这些格式(您可以轻松地从这种格式中提取SQL内容)。让我们看看如何使用pg_dump来创建PostgreSQL服务器的备份。

首先使用默认模式,备份一个文本文件

root@vagrant-ubuntu-trusty-64:~/c# pg_dump -d pgbench -U psql -h 10.0.0.101 > pgbench.sql
Password:

在备份的文件中,你能看到类似这样:

COPY pgbench_accounts (aid, bid, abalance, filler) FROM stdin;
1       1       0
2       1       0
3       1       0
4       1       0
5       1       0
6       1       0
7       1       0
8       1       0
9       1       0
10      1       0
11      1       0
12      1       0
13      1       0
14      1       0

如果要其他格式的备份文件,只需要在命令中指定:

root@vagrant-ubuntu-trusty-64:~# pg_dump -d pgbench -U psql -h 10.0.0.101 --format c  -f /root/c/pgdump.c
Password:

恢复数据也很简单。如果是默认SQL格式的数据,只需使用psql将其加载到数据库中。
如果使用其他格式,可以使用pg_restore进行恢复。
如果您仍然拥有旧数据,并且希望恢复整个数据库,则可能需要删除现有数据库,然后重新创建它。

-c, --clean                  clean (drop) database objects before recreating
--if-exists                  use IF EXISTS when dropping objects

备份时加上这两个参数,能够确保所有已经存在的对象都会被重写。

postgres=# drop database pgbench;
DROP DATABASE
postgres=# create database pgbench;
CREATE DATABASE
root@vagrant-ubuntu-trusty-64:~# pg_restore --format c /root/c/pgdump.c -d pgbench -U psql -W -h 10.0.0.101
Password:

物理备份

物理备份是全有或全无的——你获取数据库的完整备份,并且需要还原所有备份。物理备份面临的最主要问题是数据一致性。当然,最简单的方法是完全停掉数据库,然后使用系统命令例如cp,scp等复制一份数据。但不幸的是,大多数情况下我们无法关闭数据来做这件事。

因此,你需要采取一些预防措施来确保备份是一致的。
要进行手动、一致的物理备份,需要以下步骤:

  • 在备份开始创建一个检查点pg_start_backup(‘some label’)
  • 拷贝目录中的数据
  • 使用命令pg_stop_backup()停止备份
  • 所有这些可以通过运行pg_basebackup实现
root@vagrant-ubuntu-trusty-64:~# pg_basebackup -U psql -h 10.0.0.101 -x -D /pgbase/

如果想要即时恢复,你需要配置WAL开启归档

wal_level = archive
archive_mode = on

恢复基本备份很容易——将数据复制到空的PostgreSQL数据目录中就可以了,一旦启动PostgreSQL进程,就可以恢复到备份时的数据。

如果要使用WAL归档日志恢复到一个时间点,你仍然需要先进行基数数据的恢复,同时创建一个recovery.conf文件。使用恢复命令,告诉PostgreSQL如何将存档的WAL段复制回来,以便在PostgreSQL进程开始时重新执行。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
存储 关系型数据库 数据库
PostgreSQL的备份策略
【8月更文挑战第4天】PostgreSQL的备份策略
125 4
|
3月前
|
存储 Ubuntu 关系型数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
25 1
|
3月前
|
关系型数据库 数据库 PostgreSQL
Linux 环境手动备份postgresql数据库
【8月更文挑战第12天】在Docker环境中使用命令行工具对PostgreSQL数据库进行备份和恢复。首先,通过dockerexec进入容器,使用pg_dump进行数据库模式的备份,然后使用dockercp将备份文件导出。接着,若需导入数据到另一数据库,先将备份文件复制到目标容器,再利用psql命令进行数据恢复。整个过程需确保目标数据库无同名模式,以防止导入失败
39 3
|
3月前
|
存储 监控 关系型数据库
PostgreSQL的备份策略是什么?
【8月更文挑战第4天】PostgreSQL的备份策略是什么?
51 7
|
3月前
|
SQL 关系型数据库 数据库
[postgresql]逻辑备份与还原
[postgresql]逻辑备份与还原
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之如何查看PolarDB for PostgreSQL的备份信息
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
SQL 关系型数据库 分布式数据库
PolarDB for PostgreSQL逻辑复制问题之逻辑复制冲突如何解决
PolarDB for PostgreSQL是基于PostgreSQL开发的一款云原生关系型数据库服务,它提供了高性能、高可用性和弹性扩展的特性;本合集将围绕PolarDB(pg)的部署、管理和优化提供指导,以及常见问题的排查和解决办法。
|
SQL Cloud Native 关系型数据库
ADBPG(AnalyticDB for PostgreSQL)是阿里云提供的一种云原生的大数据分析型数据库
ADBPG(AnalyticDB for PostgreSQL)是阿里云提供的一种云原生的大数据分析型数据库
1250 1
|
数据可视化 关系型数据库 MySQL
将 PostgreSQL 迁移到 MySQL 数据库
将 PostgreSQL 迁移到 MySQL 数据库
1735 2
|
SQL 存储 自然语言处理
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词
在当今社交媒体的时代,人们通过各种平台分享自己的生活、观点和情感。然而,对于平台管理员和品牌经营者来说,了解用户的情感和意见变得至关重要。为了帮助他们更好地了解用户的情感倾向,我们可以使用PostgreSQL中的pg_jieba插件对这些发帖进行分词和情感分析,来构建一个社交媒体情感分析系统,系统将根据用户的发帖内容,自动判断其情感倾向是积极、消极还是中性,并将结果存储在数据库中。
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词