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
数据库版本:KingbaseES V008R006C008B0014 简介 sys_rman 是 KingbaseES 数据库中重要的物理备份还原工具,支持不同类型的全量备份、差异备份、增量备份,保证数据库在遇到故障时及时使用 sys_rman 来恢复到数据库先前状态。 文章目录如下 1.…...
【CV】视频图像背景分割MOG2,KNN,GMG
当涉及背景分割器(Background Subtractor)时,Mixture of Gaussians(MOG2)、K-Nearest Neighbors(KNN)和Geometric Multigid(GMG)是常用的算法。它们都用于从视频流中提取…...
使用 Python 简单几步去除 PDF 水印
推荐一个AI网站,免费使用豆包AI模型,快去白嫖👉海鲸AI 在处理 PDF 文件时,水印有时会影响文件的可读性或美观性。幸运的是,Python 提供了多种库来操作 PDF 文件,其中 PyMuPDF(又名 fitz…...

【香橙派 AIpro】OrangePi AIpro :教育、机器人、无人机领域的超级AI大脑,华为昇腾处理器驱动的AI开发板新标杆
【OrangePi AIpro:教育、机器人、无人机领域的超级AI大脑,华为昇腾处理器驱动的AI开发板新标杆】 文章目录 一、开箱与初印象1. 初印象2. 上手开机3. 安装和运行 TightVNC 远程桌面3.1. 安装 TightVNC 服务器3.2. 启动 VNC 服务器3.3. 在 Windows 上使用…...

【Mac】 CleanMyMac X for mac V4.15.2中文修复版安装教程
软件介绍 CleanMyMac X是一款为Mac设计的优秀软件,旨在帮助用户优化其设备的性能并提供清理和维护功能。以下是 CleanMyMac X的一些主要功能和特点: 1.系统性能优化:软件可以扫描和修复潜在的性能问题,包括无效的登录项、大文件…...

单片机通信协议(1):SPI简介
关于SPI SPI(串行外设接口)是板载设备间通信接口之一。它是由摩托罗拉公司(飞思卡尔半导体)推出的。由于其简单性和通用性,它被纳入各种外围设备中,并与飞利浦I2C总线并列。 SPI的三线或四线信号数量比IIC…...

免税商品优选购物商城,基于 SpringBoot+Vue+MySQL 开发的前后端分离的免税商品优选购物商城设计实现
目录 一. 前言 二. 功能模块 2.1. 登录界面 2.2. 管理员功能模块 2.3. 商家功能模块 2.4. 用户前台功能模块 2.5. 用户后台功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过…...
京准电子、NTP电子时钟系统(网络时钟系统)概述
京准电子、NTP电子时钟系统(网络时钟系统)概述 京准电子、NTP电子时钟系统(网络时钟系统)概述 时钟系统工作原理是由母钟接收GPS/北斗卫星的时间信息,母钟通过串口和NTP以太网接口为其他各系统提供统一的标准时间信号&…...

【常用的队列总结】
文章目录 队列的介绍Queue队列的基本概念与操作队列的基本概念 常见的队列介绍非阻塞队列LinkedList:ArrayDeque:PriorityQueue: 阻塞队列ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue DelayQueueSynchronousQueue 队列的介绍 Queue队列的基本概念与操作 在 …...
机器学习过拟合和欠拟合!看这一篇文章就够了 建议收藏!(上篇)
在机器学习中,有一项非常重要的概念,那就是:过拟合(Overfitting)和欠拟合(Underfitting)。 它们涉及到机器学习中常见的两种模型性能问题,分别表示模型在训练数据上表现得过于复杂或…...

关于阳光雨露外派联想的面试感想
最近在找工作,接到了一个阳光雨露外派联想的面试邀请。说实在的一开始就有不对劲的感觉。想必这就是大厂的自信吧,上就问能不能现场面试,然后直接发面试邀请。这时候我倒是没觉得有啥问题。 然后今天就去面试去了,住的比较偏&…...
深度神经网络介绍与实战
一、介绍 深度神经网络(Deep Neural Networks,DNNs)是一种强大的机器学习算法,被广泛应用于计算机视觉、自然语言处理、语音识别等领域。它是人工神经网络的一种扩展,包含多个隐藏层,每一层都由多个神经元组成。 与传统的机器学习算法相比,深度神经网络具有以下特点:…...

图解 Transformer
节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…...
SpringCloud配置文件bootstrap不生效问题解决
解决方案: 情况一、SpringBoot 版本 小于 2.4.0 版本,添加以下依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId> </dependency> 情况二、SpringBoot…...

Java面试八股之自旋是什么意思
Java中的自旋是什么意思 自旋是多线程编程中的一种同步机制,尤其在Java中与锁的实现密切相关。当一个线程尝试获取某个锁(如内置锁或显式锁)时,如果锁已被其他线程持有,通常的做法是将该线程置于阻塞状态,…...
做好随时离开的准备:前一天还在为618加班到凌晨,第二天就被裁了
今日感悟 最近,一则令人唏嘘的新闻在网络上引起了广泛关注:一名员工前一天还在为618大促活动加班到凌晨,身心疲惫,然而第二天却收到了裁员通知,顿时陷入了失业的困境。 这则新闻不仅揭示了职场竞争的残酷现实ÿ…...

利用ESP32(Arduino IDE)向匿名上位机发送欧拉角
文章目录 一. 匿名上位机介绍二. 匿名协议说明1. 匿名协议官方说明文档2. 协议说明 三. 向匿名上位机发送数据(基于Arduino IDE的esp32)四. 运行效果 一. 匿名上位机介绍 匿名上位机官方介绍视频 匿名上位机官方下载 二. 匿名协议说明 1. 匿名协议官方说明文档 官方对于协…...

Java开发工具类(JDK、Hutool、Guava)
目录 Java开发常用的工具类1、JDK自带程序读取控制台输入内容(调试程序或者学习的时候比较有用)Arrays工具类 数组转集合Collections 集合工具类 排序Collections 集合工具类 查找Lambda表达式 操作集合 收集、转map、分组 2、Apache 的 commons-lang3 和…...

TCP协议的相关特性
目录 正文: 1.可靠性 2.连接管理 3.滑动窗口 4.流量控制 5.拥塞控制 6.延迟应答 7.捎带应答 总结: 正文: 1.可靠性 TCP协议是一个有连接,可靠传输,面向字节流,全双工的协议。其中可靠传输的实现…...
Lombok,一款超级强大的Java工具库
在软件开发过程中,繁琐的模板代码经常让开发者感到烦恼。 Lombok 是一款 Java 库,能够帮助开发者减少这些冗余代码,提高开发效率。本文将介绍 Lombok 的基本概念、安装和配置方法,以及如何在实际项目中使用它。 Lombok 是什么 L…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...