KingbaseES数据库物理备份还原sys_rman

2024-05-28 08:36

本文主要是介绍KingbaseES数据库物理备份还原sys_rman,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


数据库版本:KingbaseES V008R006C008B0014


        

简介

    sys_rman 是 KingbaseES 数据库中重要的物理备份还原工具,支持不同类型的全量备份、差异备份、增量备份,保证数据库在遇到故障时及时使用 sys_rman 来恢复到数据库先前状态。

        

文章目录如下

1. 备份前准备

1.1. 修改数据库配置

1.2. 备份配置说明

2. 非独立备份

2.1. 备份前准备

2.1.1. 配置备份参数

2.1.2. 初始化备份

2.2. 手动备份方法

2.2.1. 全量备份

2.2.2. 增量备份

2.2.3. 差异备份

2.3. 自动备份方法

2.3.1. 增加备份配置参数

2.3.2. 运行自动备份

2.3.3. 关闭自动备份

2.4. 管理备份

2.4.1. 查看备份列表

2.4.2. 按保留数清理备份

2.4.3. 按备份集名称清理

3. 非独立还原

3.1. 基于测试性质的还原

3.2. 基于最新备份的还原

3.3. 指定备份集还原

3.4. 指定事务ID还原

3.5. 指定时间点还原


        

1. 备份前准备

1.1. 修改数据库配置

保证数据库能够正常备份/还原,需要修改 data/kingbase.conf 以下几个参数后重启数据库生效

archive_mode = on    # 归档模式(on:表示在现有数据库节点上备份还原、always:表示在数据库节点外专门搭建一台用于备份的服务器)
archive_command = '/bin/cp -f %p /home/yt/archive/%f'  # 未注释就行,初始化时自动修改
wal_level = logical  # 决定多少信息写入wal中

重启数据库命令

sys_ctl -D data restart

        

1.2. 备份配置说明

根据不同情况修改备份配置 share/sys_backup.conf,说明如下:

# 备份的数据库模式:  single/cluster/single-pro
_target_db_style="cluster"
# 主节点IP
_one_db_ip="192.168.28.37"
# 存储备份物理文件的IP
_repo_ip="192.168.28.37"
# 集群标签(不用修改)
_stanza_name="kingbase"
# 连接数据库的操作系统用户名
_os_user_name="yt"
# 操作系统存放的备份目录(需要一个不存在的目录,自动创建)
_repo_path="/home/yt/kbbr_repo"# 保留备份数,超出后自动清理(例如配置未5,那么保留备份的文件达到第6份时自动清理1份)
_repo_retention_full_count=5
# 每隔几天执行1次全量备份
_crond_full_days=7
# 每隔几天执行1次差异备份
_crond_diff_days=0
# 每隔几天执行1次增量备份
_crond_incr_days=1
# 自动全量备份的备份时间(2表示凌晨2点执行)
_crond_full_hour=2
# 自动差异备份的备份时间(6表示早上6点执行)
_crond_diff_hour=6
# 自动增量备份的备份时间(17表示下午17点执行)
_crond_incr_hour=17
# 限制带宽(nMb/s),0表示不限制
_band_width=0
# 系统命令(不修改)
_os_ip_cmd="/sbin/ip"
_os_rm_cmd="/bin/rm"
_os_sed_cmd="/bin/sed"
_os_grep_cmd="/bin/grep"#################### 单机配置 ####################
# 数据库data目录
_single_data_dir="/home/kingbase/ES/single/data"
# 数据库bin目录
_single_bin_dir="/home/kingbase/ES/single/Server/bin"
# 数据库用户名
_single_db_user="system"
# 数据库端口号
_single_db_port="54321"# on表示sys_securecmd通信, off表示SSH通信
_use_scmd=on# 快速执行sys_start_backup(y、n)
_start_fast=y
# 备份文件类型(none、gz)
_compress_type=none
# 如果未归档的WAL文件,超过此设置显示ERROR并破坏backup-init(128MB ~ 1024MB)
_non_archived_space=1024#加密存储库的密码类型
#_repo_cipher_type="aes-256-cbc"# 加密/解密存储库文件的密码
#_repo_cipher_pass="c3k5ODQyLg=="# 禁用归档文件统计(n、y)
_archive_statistics=n

                

2. 非独立备份

  • 独立备份:指在数据库节点外单独使用一台用于备份的服务器(配置 archive_mode = always)
  • 非独立备份:指在现有数据库节点上进行备份还原(配置 archive_mode = on)

2.1. 备份前准备

2.1.1. 配置备份参数

 示例:单机配置需要修改的文件 share/sys_backup.conf

_target_db_style="single"
_repo_ip="备份IP"
_os_user_name="操作系统用户名"
_repo_path="备份目录"
_single_data_dir="数据库data目录"
_single_bin_dir="数据库bin目录"
_single_db_user="数据库用户名"
_single_db_port="数据库端口号"

        

2.1.2. 初始化备份

备份前需要初始化备份信息

sys_backup.sh init

系统提示 securecmdd 没有工作。这是因为我使用单机举例,没有启动 securecmdd 导致的错误。如果集群是基于 securecmdd 通信,那么备份就配置修改为 _use_scmd = on;如果是基于 ssh 通信,那么备份配置修改为 _use_scmd = off。

        

修改 share/sys_backup.conf 参数:

_use_scmd = off

初始化成功!

        

初始化完成后会自动修改数据库配置中 archive_command 参数:

并且会根据配置的备份目录生成一个文件夹(_repo_path=备份目录)。示例:

  • archive:归档WAL日志的目标目录
  • backup:保存各备份的目标目录
  • sys_rman.conf:运行时的配置文件(自动生成)

参考官网流程图(https://help.kingbase.com.cn/)

sys_rman 通过wal文件和数据文件来进行备份,但备份REPO与数据库实例处于同一个物理主机,冗余度较低。 

        

2.2. 手动备份方法

2.2.1. 全量备份

  • 全量备份是对所有数据文件进行一次备份,产生的备份集可以单独地构成还原的基础。

手动执行全量备份命令如下:

sys_rman--config=/kbbr_repo/sys_rman.conf  # 自动生成的配置文件--stanza=kingbase--archive-copy--type=full    # 类型为全量备份backup

        

备份完成后会在备份目录生成相对对应的备份目录(名称格式:日期-时间)

cd ./kbbr_repo/backup/kingbase

        

2.2.2. 增量备份

  • 增量备份是依赖于上一次全量备份及中间变化的备份,针对上一个备份有变化的数据文件进行一次备份,产生的备份集配合依赖的全量备份集及串行依赖备份集构成还原的基础。
  • 必须先执行全量备份才能操作增量备份。

增量备份又分为:

  • 文件粒度:当某个数据文件的一个数据块发生变化后,增量备份将拷贝整个数据文件
  • 块粒度:当某个数据文件的一个数据块发生变化后,块增量备份只拷贝变化的数据块

手动执行增量备份(文件粒度)命令如下:

sys_rman--config=/kbbr_repo/sys_rman.conf  # 自动生成的配置文件--stanza=kingbase--archive-copy--type=incr    # 类型为全量备份backup

        

 手动执行增量备份(块粒度)命令如下:

sys_rman--config=/kbbr_repo/sys_rman.conf  # 自动生成的配置文件--stanza=kingbase--archive-copy--type=page    # 类型为全量备份backup

        

2.2.3. 差异备份

  • 差异备份也是依赖于上一次全量备份,针对此全量备份有变化的数据文件进行一次备份,产生的备份集配合依赖的全量备份集构成还原的基础。
  • 必须先执行全量备份才能操作差异备份。

手动执行差异备份命令如下:

sys_rman--config=/kbbr_repo/sys_rman.conf  # 自动生成的配置文件--stanza=kingbase--archive-copy--type=diff    # 类型为全量备份backup

        

2.3. 自动备份方法

2.3.1. 增加备份配置参数

在目录《2.1.1》的基础上增加备份的自动时间 share/sys_backup.conf

# 保留备份数,超出后自动清理(例如配置未5,那么保留备份的文件达到第6份时自动清理1份)
_repo_retention_full_count=5# 每隔几天执行1次全量备份
_crond_full_days=3
# 每隔几天执行1次差异备份
_crond_diff_days=2
# 每隔几天执行1次增量备份
_crond_incr_days=1# 自动全量备份的备份时间(2表示凌晨2点执行)
_crond_full_hour=2
# 自动差异备份的备份时间(8表示早上8点执行)
_crond_diff_hour=8
# 自动增量备份的备份时间(17表示下午17点执行)
_crond_incr_hour=17

增加参数完成后不需要再次初始化,因为启动自动备份时间是读取 share/sys_backup.conf

        

2.3.2. 运行自动备份

初始化完成后直接运行

sys_backup.sh start

自动备份方法是基于系统的定时任务来实现,通过Linux命令 crontab -l 可以查看

启动自动备份后,通过命令反馈的日志信息可以得知,备份日志存放到:

  • log/sys_rman_backup_full.log
  • log/sys_rman_backup_diff.log
  • log/sys_rman_backup_incr.log

        

2.3.3. 关闭自动备份

关闭的方法也很简单,直接执行

sys_backup.sh stop

        

2.4. 管理备份

2.4.1. 查看备份列表

sys_rman--config=/kbbr_repo/sys_rman.conf  # 自动生成的备份配置--stanza=kingbaseinfo

头部说明 

  • full backup:全量备份信息
  • incr backup:增量备份信息
  • diff backup:差异备份信息

信息说明

  • timestamp start/stop:备份的开始/结束时间点
  • wal start/stop:备份开始/结束时的WAL日志文件
  • database size:数据库的运行时磁盘容量
  • database backup size:数据库的备份容量
  • backup set size:当前备份集的容量
  • backup size:当前备份集的实际磁盘容量,包含压缩因素和依赖备份集冗余

        

2.4.2. 按保留数清理备份

这种方法通常是在备份配置文件 share/sys_backup.conf 中的这个参数

_repo_retention_full_count=5  # 保留备份数量

初始化后会自动将参数配置到 kbbr_repo/sys_rman.conf 中,所以我们直接修改 kbbr_repo/sys_rman.conf 即可:例如只保留2份备份,那么修改为

_repo_retention_full_count=2

【示例】

1、先查看全量备份数

./bin/sys_rman --config=/home/yt/kbbr_repo/sys_rman.conf --stanza=kingbase info |grep 'full backup'

这里保留了4份

        

2、修改 kbbr_repo/sys_rman.conf

_repo_retention_full_count=2

        

3、手动清理

./bin/sys_rman --config=/home/yt/kbbr_repo/sys_rman.conf --stanza=kingbase expiresys_rman--config=/home/yt/kbbr_repo/sys_rman.conf--stanza=kingbaseexpire

        

4、查询剩余备份集

./bin/sys_rman --config=/home/yt/kbbr_repo/sys_rman.conf --stanza=kingbase info |grep 'full backup'

保留最新的2份

        

2.4.3. 按备份集名称清理

备份集名称就是查询备份列表时显示的名称:

sys_rman--config=/kbbr_repo/sys_rman.conf  # 自动生成的备份配置--stanza=kingbaseinfo

这里存在2份全量备份集,名称就是 full backup 后面的"20240526-060502F"

        

手动清理最后一份

sys_rman--config=/home/yt/kbbr_repo/sys_rman.conf--stanza=kingbaseexpire--set=20240422-194416F

注意:可以清理最新的备份集,但是不能全部清理,必须保留1个

        

3. 非独立还原

非独立还原对应前面的非独立备份,基于前面备份集来还原数据。

3.1. 基于测试性质的还原

  • 这种方式是指定新的 data 目录和临时禁止归档WAL文件
sys_rman--config=/home/yt/kbbr_repo/sys_rman.conf  # 配置文件绝对路径--stanza=kingbase--kb1-path=/home/yt/data_new # 还原的新data路径--archive-mode=off           # 临时禁制归档wal文件restore

还原后生成新的 data 目录,启动新 data 即可使用

        

3.2. 基于最新备份的还原

这种方法是将最新的备份集还原到数据库实例的 data 目录下(还原前需要关闭当前数据库实例),需要将原本 data 修改名称,还原自动生成 data 目录

sys_rman--config=/home/yt/kbbr_repo/sys_rman.conf  # 配置文件绝对路径--stanza=kingbaserestore

        

3.3. 指定备份集还原

如果不指定时间,工具将隐式地指定时间为备份集结束时间的后一秒

sys_rman --config=/home/yt/kbbr_repo/sys_rman.conf--stanza=kingbase--set='20200519-031336F'restore

指定时间,工具将验证指定时间是否晚于备份集结束时间

sys_rman--config=/home/yt/kbbr_repo/sys_rman.conf--stanza=kingbase--set='20200519-031336F'--type=time--target='2020-05-19 16:28:17'restore

        

3.4. 指定事务ID还原

sys_rman--config=/home/yt/kbbr_repo/sys_rman.conf--stanza=kingbase--type=xid--target='445566'--set='20210611-011416F_20210611-023050I'restore

使用指定的xid还原到特定状态,必须同时指定该xid之前的备份集,才能够恢复到该xid 

        

3.5. 指定时间点还原

sys_rman--config=/home/yt/kbbr_repo/sys_rman.conf--stanza=kingbase--type=time--target='2020-05-07 16:28:17'restore

这篇关于KingbaseES数据库物理备份还原sys_rman的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010067

相关文章

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN