当前位置: 首页 > news >正文

openGauss数据库备份与恢复实践

准备

数据库版本:

openGauss-All-6.0.1-openEuler22.03-x86_64

数据库:

testdb1

参数设置:

gs_guc set -I all -N all -c "enable_cbm_tracking=on"

gs_guc set -I all -N all -c "synchronous_commit=off"

gs_guc set -N all -I all -c "archive_mode=on"

gs_guc set -N all -I all -c "archive_dest='/opt/software/openGauss/install/archive'"

gs_guc set -N all -I all -c "wal_sender_timeout =10s"

表:

表初始数据:

开始备份

初始化备份目录:

执行:

#gs_probackup init -B /opt/software/openGauss/install/backup/bak1

添加一个新的备份实例:

执行:

#gs_probackup add-instance -B /opt/software/openGauss/install/backup/bak1 --instance bak20250605_1

进行全量备份:

执行:

#gs_probackup backup -B /opt/software/openGauss/install/backup/bak1 --instance bak20250605_1 -b full

[omm@hostName1 data]$ gs_probackup backup -B /opt/software/openGauss/install/backup/bak1 --instance bak20250605_1 -b full
INFO: Backup start, gs_probackup version: 2.4.2, instance: bak20250605_1, backup ID: SXDEOH, backup mode: FULL, wal mode: STREAM, remote: false, compress-algorithm: none,compress-level: 1
LOG: Backup destination is initialized
LOG: This openGauss instance was initialized with data block checksums. Data block corruption will be detected
LOG: Database backup start
LOG: started streaming WAL at 0/8000000 (timeline 1)
[2025-06-05 14:43:30]: check identify system success
[2025-06-05 14:43:30]: send START_REPLICATION 0/8000000 success
[2025-06-05 14:43:30]: keepalive message is received
INFO: PGDATA size: 639MB
[2025-06-05 14:43:30]: keepalive message is received
INFO: Start backing up files
LOG: Creating page header map "/opt/software/openGauss/install/backup/bak1/backups/bak20250605_1/SXDEOH/page_header_map"
[2025-06-05 14:43:35]: keepalive message is received
Progress: [==================================================] 100% (3210/3210, done_files/total_files). backup file
[2025-06-05 14:43:40]: keepalive message is received
[2025-06-05 14:43:45]: keepalive message is received
INFO: Finish backuping file
INFO: Data files are transferred, time elapsed: 15s
INFO: wait for pg_stop_backup()
INFO: pg_stop backup() successfully executed
LOG: stop_lsn: 0/80001E8
LOG: Looking for LSN 0/80001E8 in segment: 000000010000000000000008
LOG: Found WAL segment: /opt/software/openGauss/install/backup/bak1/backups/bak20250605_1/SXDEOH/database/pg_xlog/000000010000000000000008
LOG: Thread [0]: Opening WAL segment "/opt/software/openGauss/install/backup/bak1/backups/bak20250605_1/SXDEOH/database/pg_xlog/000000010000000000000008"
LOG: Found LSN: 0/80001E8
LOG: finished streaming WAL at 0/9000000 (timeline 1)
LOG: Getting the Recovery Time from WAL
LOG: Thread [0]: Opening WAL segment "/opt/software/openGauss/install/backup/bak1/backups/bak20250605_1/SXDEOH/database/pg_xlog/000000010000000000000008"
INFO: Syncing backup files to disk
Progress: [==================================================] 100% (3210/3210, done_files/total_files). Sync backup file
INFO: Finish Syncing backup files.
INFO: Backup files are synced, time elapsed: 0
INFO: Validating backup SXDEOH
INFO: Begin validate file
Progress: [==================================================] 100% (3212/3212, done_files/total_files). validate file
INFO: Finish validate file.
INFO: Backup SXDEOH data files are valid
INFO: Backup SXDEOH resident size: 655MB
INFO: Backup SXDEOH completed
[omm@hostName1 data]$

备份成功后返回备份ID:SXDEOH

查看备份信息:

执行:

#gs_probackup show -B /opt/software/openGauss/install/backup/bak1

检查备份:

执行:

#gs_probackup validate -B /opt/software/openGauss/install/backup/bak1 --instance bak20250605_1 -i SXDEOH 

查看备份目录:

备份目录中已经有备份的文件信息了

模拟业务删除数据

delete表:t_1的数据

truncate表: t_2

drop表:t_3

切换wal日志:

执行:

#select pg_xlogfile_name(pg_switch_xlog());

#checkpoint;

记录日志号:

#select pg_switch_xlog();

日志号(LSN)为:0/A000288

记录事务ID:

执行:

#select * from pg_get_variable_info();

其中:latest_completed_xid字段值为事务ID:92739

模拟故障

停止数据库:

执行:

#gs_ctl stop

删除数据目录:

为保险起见,使用mv命令:

进入数据库安装目录:

#cd /opt/software/openGauss/install

#mv data data_bak20250605_1

启动数据库:

执行:

#gs_ctl start

发现启动失败

 

开始恢复

全量恢复

执行:

#gs_probackup restore -B  /opt/software/openGauss/install/backup/bak1 --instance bak20250605_1 -i SXDEOH

[omm@hostName1 install]$ gs_probackup restore -B  /opt/software/openGauss/install/backup/bak1 --instance bak20250605_1 -i SXDEOH
LOG: Restore begin.
LOG: there is no file tablespace_map
LOG: check tablespace directories of backup SXDEOH
LOG: check external directories of backup SXDEOH
INFO: Validating backup SXDEOH
INFO: Begin validate file
Progress: [==================================================] 100% (3212/3212, done_files/total_files). validate file
INFO: Finish validate file.
INFO: Backup SXDEOH data files are valid
LOG: Thread [1]: Opening WAL segment "/opt/software/openGauss/install/backup/bak1/backups/bak20250605_1/SXDEOH/database/pg_xlog/000000010000000000000008"
INFO: Backup SXDEOH WAL segments are valid
INFO: Backup SXDEOH is valid.
INFO: Restoring the database from backup at 2025-06-05 14:43:29+08
LOG: there is no file tablespace_map
LOG: Restore directories and symlinks... in /opt/software/openGauss/install/data/dn1
INFO: Start restoring backup files. DATA size: 655MB
INFO: Begin restore file
Progress: [==================================================] 100% (3212/3212, done_files/total_files). Restore file
INFO: Finish restore file
INFO: Backup files are restored. Transfered bytes: 655MB, time elapsed: 3s
INFO: Restore incremental ratio (less is better): 100% (655MB/655MB)
INFO: Start Syncing restored files to disk
Progress: [==================================================] 100% (3212/3212, done_files/total_files). Sync restore file
INFO: Finish Syncing restored files.
INFO: Restored backup files are synced, time elapsed: 6s
INFO: Restore of backup SXDEOH completed.
[omm@hostName1 install]$

查看数据目录是否恢复

#ll

 数据目录已经恢复了

配置恢复文件:

在数据目录:/opt/software/openGauss/install/data/dn1

增加recovery.conf文件:

如果想基于时间点恢复,可配置为:

recovery_target_time = '2025-06-05 14:12:06'
recovery_target_inclusive = false
restore_command = 'cp /opt/software/openGauss/install/archive/%f %p'

如果想基于事务ID恢复,可配置为:

recovery_target_xid = '92739'
recovery_target_inclusive = true
restore_command = 'cp /opt/software/openGauss/install/archive/%f %p'

如果想基于LSN恢复,可配置为:

recovery_target_lsn = '4FD/13021790'
recovery_target_inclusive = true
restore_command = 'cp /opt/software/openGauss/install/archive/%f %p'

注:启动数据库后recovery.conf文件名称变为recovery.done

启动数据库:

执行:

#gs_ctl start

数据库可以启动了!

启动数据库后recovery.conf文件名称变为recovery.done

进入数据库查看数据是否恢复:

delete表:t_1表数据全部恢复 

truncate表:t_2表数据全部恢复

drop的表:t_3居然没有恢复过来!好奇怪!

http://www.dtcms.com/a/233739.html

相关文章:

  • Python中的self参数介绍
  • Cilium动手实验室: 精通之旅---6.Cilium IPv6 Networking and Observability - Lab
  • ROS2里面与话题 /move_base_simple/goal 和 /move_base/status 相对应的话题名字及其含义
  • 基于SSM框架的医院电子病历管理系统,分为用户网页和管理后台,包括科室模块、医生模块、预约挂号模块、就诊记录模块、就诊评价模块、轮播图模块和系统基础模块
  • 【PhysUnits】15.15 变量类型(variable.rs)
  • 【SSM】SpringBoot学习笔记1:SpringBoot快速入门
  • 链表相关知识
  • python技巧:pyvisa打开hislip设备;IEEE 488.2
  • 一日总结0605
  • Spring MVC 之 异常处理
  • 腾讯云服务器端口怎么全部打开?CVM和轻量端口开通教程
  • w10激活方法
  • Java中线程创建的三种方式
  • Java 9 新特性全整理
  • 快递电子面单便宜吗?怎样申请呢
  • 短视频矩阵系统技术saas源头6年开发构架
  • Python使用总结之Mac安装docker并配置wechaty
  • 鸿蒙Next开发真机调试签名申请流程
  • 基于eclipse进行Birt报表开发
  • 轨道交通可视化,赋能智慧车站运维
  • NumPy 比较、掩码与布尔逻辑
  • UDP:简洁高效的报文结构解析与关键注意事项
  • 45、web实验-抽取公共页面
  • 电商实践 基于token防止订单重复创建
  • Python基于方差-协方差方法实现投资组合风险管理的VaR与ES模型项目实战
  • Spring Boot 项目集成 Redis 问题:RedisTemplate 多余空格问题
  • 论文笔记——相干体技术在裂缝预测中的应用研究
  • 智慧停车设备选型指南:何时应优先考虑免布线视频桩方案?
  • 口语考试准备part1(西电)
  • Linux共享内存原理及系统调用分析