openGauss PITR恢复

当数据库崩溃或希望回退到数据库之前的某一状态时,openGauss的即时恢复功能( Point-In-Time Recovery,简称PITR )可以支持恢复到备份归档数据之后的任意时间点。

前提条件

基于物理备份的全量数据文件。 基于归档的WAL日志文件。

限制要求

PITR仅支持恢复到物理备份数据之后的某一时间点。 仅主节点可以进行PITR恢复,备机需要进行全量build达成与主机数据同步。

PITR恢复流程

  1. 将物理备份的文件替换目标数据库目录。
  2. 删除数据库目录下pg_xlog/中的所有文件。
  3. 将归档的WAL日志文件复制到pg_xlog文件中(此步骤可以省略,通过配置recovery.conf恢复命令文件中的restore_command项替代)。
  4. 在数据库目录下创建恢复命令文件recovery.conf,指定数据库恢复的程度。
  5. 启动数据库。
  6. 连接数据库,查看是否恢复到希望预期的状态。
  7. 若已经恢复到预期状态,通过pg_xlog_replay_resume()指令使主节点对外提供服务。

recovery.conf 文件配置介绍

####  归档恢复配置  ####
restore_command = 'cp /gauss/bak/archive/%f %p'                      ## 该SHELL命令获取已归档的WAL文件。
archive_cleanup_command = 'pg_archivecleanup /gauss/bak/archive %r'  ## 清理备库WAL归档日志的shell命令,每次重启时会执行
recovery_end_command = string                                        ## (可选) 在恢复完成时执行的SHELL命令,为以后的复制或恢复提供一个清理机制
## 说明:
##  %f即归档检索中的文件名,%p即复制目的地的路径名,%r最新可用重启点的文件名
##  如果多个备机从相同的归档路径恢复时,需要确保该路径存在所有备机恢复所需要的WAL文件。

#### 恢复目标设置(四选一) ####
recovery_target_name = 'restore_point_1'      ## 还原到一个使用pg_create_restore_point()创建的还原点
recovery_target_time = '2020-01-01 12:00:00'  ## 还原到一个指定时间戳
recovery_target_xid = '3000'                  ## 还原到一个事务ID
recovery_target_lsn = '0/0FFFFFF'             ## 还原到日志的指定LSN点
recovery_target_inclusive = true              ## 声明是否在指定恢复目标之后停止(true) 或 之前停止(false),不支持recovery_target_name 配置
## 注意:如果不配置任何恢复目标 或 配置目标不存在,则默认恢复到最新的WAL日志点。

物理备份(源库)并恢复(至目标库)

-- 源库物理备份
[omm@db1 ~]$ gs_basebackup -D /home/omm/gs_bak -h 192.168.0.225 -p 26000 -U omm -W
Password:
INFO:  The starting position of the xlog copy of the full build is: 0/10000028. The slot minimum LSN is: 0/0.
begin build tablespace list
finish build tablespace list
begin get xlog by xlogstream
 check identify system success
 send START_REPLICATION 0/10000000 success
 keepalive message is received
 keepalive message is received
 keepalive message is received

-- 在目标库物理恢复(物理恢复后暂不启动数据库)
mkdir /gauss1/data/db1
cp -r /home/omm/gs_bak/*  /gauss1/data/db1/

准备测试数据(源库)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 PostgreSQL 的 PITR (Point-In-Time Recovery),备份和恢复的方法如下: 备份: 1. 首先,在 PostgreSQL 中开启 WAL 日志功能,通过修改 postgresql.conf 文件中的 `wal_level` 参数为 `replica` 或 `logical`。 2. 然后,在 pg_hba.conf 文件中添加一个用于备份的用户,并授权该用户访问需要备份的数据库。 3. 运行以下命令备份 WAL 日志文件: ``` pg_basebackup -X stream -U backup_user -D /path/to/backup/directory -P ``` 其中,`backup_user` 是在 pg_hba.conf 文件中添加的备份用户,`/path/to/backup/directory` 是备份文件保存的目录。 4. 定期备份 `pg_xlog` 目录下的 WAL 日志文件。 恢复: 1. 首先,停止 PostgreSQL 数据库。 2. 将备份文件复制到 PostgreSQL 数据库的数据目录中。 3. 将备份文件中的 `pg_xlog` 目录下的 WAL 日志文件复制到数据库数据目录的 `pg_xlog` 目录下。 4. 启动 PostgreSQL 数据库并执行以下命令: ``` pg_resetxlog -f /path/to/data/directory ``` 其中,`/path/to/data/directory` 是数据库数据目录的路径。 5. 然后,通过以下命令将数据库恢复到指定的时间点: ``` pg_restore -U postgres -d database_name -t table_name -I backup_file -c -n public -j 4 -v -F c -h localhost -p 5432 --time='YYYY-MM-DD HH24:MI:SS' ``` 其中,`database_name` 是要恢复数据库名称,`table_name` 是要恢复的表名称,`backup_file` 是备份文件的名称,`--time` 参数指定要恢复到的时间点,格式为 `YYYY-MM-DD HH24:MI:SS`。 以上就是 PostgreSQL PITR 的备份和恢复方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值