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

相关文章

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、