教学文章
Technology Exchange
热门课程
400电话

免费咨询热线
400-090-9964

教学文章

PolarDB for PostgreSQL备份恢复原理及数据目录结构

时间:2023-08-24 来源:

PolarDB for PostgreSQL 采用基于共享存储的存算分离架构,其备份恢复和 PostgreSQL 存在部分差异。


备份恢复原理

PostgreSQL 的备份流程可以总结为以下几步:

进入备份模式

强制进入 Full Page Write 模式,并切换当前的 WAL segment 文件

在数据目录下创建 backup_label 文件,其中包含基础备份的起始点位置

备份的恢复必须从一个内存数据与磁盘数据一致的检查点开始,所以将等待下一次检查点的到来,或立刻强制进行一次 CHECKPOINT

备份数据库:使用文件系统级别的工具进行备份

退出备份模式

重置 Full Page Write 模式,并切换到下一个 WAL segment 文件

创建备份历史文件,包含当前基础备份的起止 WAL 位置,并删除 backup_label 文件

备份 PostgreSQL 数据库最简便方法是使用 pg_basebackup 工具。


数据目录结构

PolarDB for PostgreSQL 采用基于共享存储的存算分离架构,其数据目录分为以下两类:

本地数据目录:位于每个计算节点的本地存储上,为每个计算节点私有

共享数据目录:位于共享存储上,被所有计算节点共享

由于本地数据目录中的目录和文件不涉及数据库的核心数据,因此在备份数据库时,备份本地数据目录是可选的。可以仅备份共享存储上的数据目录,然后使用 initdb 重新生成新的本地存储目录。但是计算节点的本地配置文件需要被手动备份,如 postgresql.conf、pg_hba.conf 等文件。


本地数据目录

通过以下 SQL 命令可以查看节点的本地数据目录:

postgres=# SHOW data_directory;

data_directory

------------------------

/home/postgres/primary

(1 row)

本地数据目录类似于 PostgreSQL 的数据目录,大多数目录和文件都是通过 initdb 生成的。随着数据库服务的运行,本地数据目录中会产生更多的本地文件,如临时文件、缓存文件、配置文件、日志文件等。其结构如下:

$ tree ./ -L 1

./

├── base

├── current_logfiles

├── global

├── pg_commit_ts

├── pg_csnlog

├── pg_dynshmem

├── pg_hba.conf

├── pg_ident.conf

├── pg_log

├── pg_logical

├── pg_logindex

├── pg_multixact

├── pg_notify

├── pg_replslot

├── pg_serial

├── pg_snapshots

├── pg_stat

├── pg_stat_tmp

├── pg_subtrans

├── pg_tblspc

├── PG_VERSION

├── pg_xact

├── polar_cache_trash

├── polar_dma.conf

├── polar_fullpage

├── polar_node_static.conf

├── polar_rel_size_cache

├── polar_shmem

├── polar_shmem_stat_file

├── postgresql.auto.conf

├── postgresql.conf

├── postmaster.opts

└── postmaster.pid

21 directories, 12 files


共享数据目录

通过以下 SQL 命令可以查看所有计算节点在共享存储上的共享数据目录:

postgres=# SHOW polar_datadir;

polar_datadir

-----------------------

/nvme1n1/shared_data/

(1 row)

共享数据目录中存放 PolarDB for PostgreSQL 的核心数据文件,如表文件、索引文件、WAL 日志、DMA、LogIndex、Flashback Log 等。这些文件被所有节点共享,因此必须被备份。其结构如下:

$ sudo pfs -C disk ls /nvme1n1/shared_data/

Dir 1 512 Wed Jan 11 09:34:01 2023 base

Dir 1 7424 Wed Jan 11 09:34:02 2023 global

Dir 1 0 Wed Jan 11 09:34:02 2023 pg_tblspc

Dir 1 512 Wed Jan 11 09:35:05 2023 pg_wal

Dir 1 384 Wed Jan 11 09:35:01 2023 pg_logindex

Dir 1 0 Wed Jan 11 09:34:02 2023 pg_twophase

Dir 1 128 Wed Jan 11 09:34:02 2023 pg_xact

Dir 1 0 Wed Jan 11 09:34:02 2023 pg_commit_ts

Dir 1 256 Wed Jan 11 09:34:03 2023 pg_multixact

Dir 1 0 Wed Jan 11 09:34:03 2023 pg_csnlog

Dir 1 256 Wed Jan 11 09:34:03 2023 polar_dma

Dir 1 512 Wed Jan 11 09:35:09 2023 polar_fullpage

File 1 32 Wed Jan 11 09:35:00 2023 RWID

Dir 1 256 Wed Jan 11 10:25:42 2023 pg_replslot

File 1 224 Wed Jan 11 10:19:37 2023 polar_non_exclusive_backup_label

total 16384 (unit: 512Bytes)

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright ALL Rights Reserved 京ICP备11008061号-1

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com www.cuug.net

电话:010-59426307 010-59426319 邮政编码:100089

地址:北京市海淀区北清路164号28-38号院