KingbaseES数据库物理备份还原sys_rman

news2024/12/25 9:19:36

数据库版本: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=kingbase
    info

头部说明 

  • 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 expire

sys_rman
    --config=/home/yt/kbbr_repo/sys_rman.conf
    --stanza=kingbase
    expire

        

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=kingbase
    info

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

        

手动清理最后一份

sys_rman
    --config=/home/yt/kbbr_repo/sys_rman.conf
    --stanza=kingbase
    expire
    --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=kingbase
    restore

        

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1704866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Laravel和ThinkPHP框架比较

一、开发体验与易用性比较 1. 代码可读性: - Laravel以其优雅的语法和良好的代码结构著称,使得代码更加易读易懂。 - 相比之下,ThinkPHP的代码可读性较为一般,在一些复杂业务场景下,可能会稍显混乱。 让您能够一站式…

【leetcode 141】环形链表——快慢指针(龟兔赛跑)

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(…

浙江大学数据结构MOOC-课后习题-第六讲-图2 Saving James Bond - Easy Version

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 测试点 思路分享 ①解题思路概览 我的想法是,先建立一个图,然后再利用DFS或者BFS来遍历判断当前顶点能否跳到岸上去 ②怎么建图? 首先要考虑采用什么数据结构来存储图…

计算机网络导论

网络结构的演变 网状结构 最开始的网络,主机之间都是两两相连 好处 这样连接,好处是安全性比较高(A与B之间的连线断了,可以绕一下C); 另外通信不需要互相等待(没有中间交换设备,所…

yolov8+ROS+ubuntu18.04——学习记录

参考文献 1.Ubuntu配置Yolov8环境并训练自己的数据集 ROS实时运行 2.https://juejin.cn/post/7313979467965874214 前提: 1.CUDA和Anaconda,PyTorch 2.python>3.8 一、创建激活环境,安装依赖 1.创建虚拟环境 conda create -n yol…

【Qt Creator】跨平台的C++图形用户界面应用程序开发框架---QT

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.互联网的核心岗位以及职…

一个基于预训练的DenseNet121模型的人脸年龄分类系统

这篇文章采用预训练的DenseNet121模型并使用自定义的数据集类和自定义的类似正态分布的标签平滑策略来训练了一个人脸年龄分类模型,最后基于这个模型用tk实现了一个娱乐向的小系统。 数据集展示: 两个文件夹,分别是训练集和测试集&#xff0…

空压机的热回收原理介绍

空压机运行时会产生大量的压缩热,通常这部分能量通过机组的风冷或水冷系统释放到大气当中。压缩机的热回收是持续降低空气系统损耗,提高客户生产力的必要手段。 余热回收的节能技术目前研究很多,但大多只针对喷油螺杆式空压机的油路改造而言…

【Linux】使用pip3安装pexpect,解决报错:the ssl module in Python is not available

pip3是python3的包管理工具,安装、卸载、更新等管理python包。 pexpect是其中一个python库,用于自动化与终端交互。 centos7使用pip3安装pexpect,报错: pip3 install pexpect 原因:使用python3解释器导入ssl库检查ss…

【网络协议】划重点啦!TCP与UDP的重点面试题!!!

1. 为什么建立TCP连接是三次握手,而关闭连接却是四次挥手呢? 这是因为服务端的 LISTEN 状态下的 SOCKET 当收到 SYN 报文的建连请求后,它可以把 ACK和 SYN(ACK 起应答作用, 而 SYN 起同步作用) 放在一个报文…

建立FTP服务器

文章目录 建立FTP服务器1. 使用VMware安装CentOS 7虚拟机。2. 安装完虚拟机后,进入虚拟机,修改网络配置(onboot改为yes)并重启网络服务,查看相应IP地址,并使用远程连接软件进行连接。3.配置yum源&#xff0…

图形学概述

图形学应用 游戏 游戏的画面好坏如何鉴定呢? 看游戏画面是否够亮:渲染中全局光照的好坏 《只狼》 为什么卡通游戏画面看起来是卡通的呢? 《无主之地3》 这些都是图形学需要着手解决的问题 电影 电影《黑客帝国》的特效也是通过计算机…

AI大模型探索之路-实战篇9:探究Agent智能数据分析平台的架构与功能

系列篇章💥 AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5:探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6:掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

OWASP top10--SQL注入(三、手工注入)

目录 access数据库 手工注入过程: 猜解数据库表名 猜解数据库表名里面的字段 猜解字段内容 SQL注入中的高级查询 mssql数据库 手工注入过程: sa权限 ​编辑dbowner权限 public权限 mysql数据库 1、对服务器文件进行读写操作(前提条件) 需要知…

二叉树顺序结构的实现(堆)

二叉树的基本概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点,称为根结…

浙江大学数据结构MOOC-课后习题-第九讲-排序1 排序

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 文章目录 冒泡排序插入排序希尔排序堆排序归并排序 冒泡排序 void buble_Sort() { int A[MAXSIZE];int N;std::cin >> N;for (int i 0; i < N; i)std::cin >> A[i];bool flag false;i…

滑动窗口-java

主要通过单调队列来解决滑动窗口问题&#xff0c;得到滑动窗口中元素的最大值和最小值。 目录 前言 一、滑动窗口 二、算法思路 1.滑动窗口 2.算法思路 3.代码详解 三、代码如下 1.代码如下 2.读入数据 3.代码运行结果 总结 前言 主要通过单调队列来解决滑动窗口问题&#xff…

(免费领源码)java#SSM#mysql第三方物流系统37852-计算机毕业设计项目选题推荐

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

EasyCode生成的SQL语句中无逗号分隔

EasyCode生成的SQL语句中无逗号分隔 EasyCode是一款非常好用的插件&#xff0c;可以帮助我们生成相关的一些代码&#xff0c;但是在生成SQL对应的xml文件之后&#xff0c;发现语句中多个字段之间没有逗号分隔&#xff0c;而是直接连在了一起。接下来&#xff0c;让我们一起去解…

Kubernetes——Kubectl详解

目录 前言 一、陈述式资源管理方法 二、Kubectl命令操作 1.查 1.1kubectl version——查看版本信息 1.2kubectl api-resources——查看资源对象简写 1.3kubectl cluster-info——查看集群信息 1.4配置Kubectl补全 1.5journalctl -u kubelet -f——查看日志 1.6kubec…