【OceanBase相关】02-OceanBase数据库NFS备份实践

文章目录

    • 一、前言
      • 1、概述
      • 2、备份方式
      • 3、备份流程
      • 4、恢复流程
    • 二、NFS备份
      • 1、注意事项
      • 2、服务端配置
      • 3、客户端配置
      • 4、备份策略配置
    • 三、常用操作
    • 四、Q&A
      • 1、数据备份任务执行失败,提示`start log archive backup when not STOP is not supported`
        • 1.1、问题说明
        • 1.2、解决措施
      • 2、数据备份任务执行失败,提示`data backup pre-check failed, log backup not started`
        • 2.1、问题说明
        • 2.2、解决措施
    • 五、性能调优
      • 1、备份性能调优
        • 1.1、备份性能分析
        • 1.2、备份性能调优
          • 1.2.1、网络配置调整
            • - 分析过程
            • - 解决措施
        • 1.3、备份性能复测

一、前言

1、概述

物理备份与恢复概述

OceanBase集群支持三副本冗余机制,本身已经做了一层数据保护,OceanBase数据库提供备份恢复功能,用于增强数据库高可用,如后期出现存储介质损坏或者用户误删数据等情况导致数据丢失,可通过恢复的方式恢复用户数据
OceanBase数据库支持集群级别的物理备份,集群的物理备份指的是该集群中除 sys租户以外的其他所有租户的物理备份,物理备份由基线数据、日志归档数据两种数据组成,因此物理备份由日志归档数据备份两个功能组合而成:

  • 日志归档是指日志数据的自动归档功能,OBServer 会定期将日志数据归档到指定的备份路径。这个动作是全自动的,不需要外部定期触发。
    日志定期归档时间的计算公式如下:
    日志的定期归档时间 = checkpoint_interval /2
    其中,checkpoint_interval的值可由用户自行配置,详细配置操作请参见配置备份参数

  • 数据备份指的是备份数据的功能,该功能分为全量备份增量备份两种:
    全量备份是指备份所有宏块
    增量备份是指备份上一次备份以后新增和修改过的宏块

2、备份方式

使用S3协议对象存储OceanBase备份 | 物理备份与恢复概述

目前支持使用NFS(文件存储)、OSS(阿里云对象存储)、COS(腾讯云对象存储)、S3(兼容S3协议对象存储,如华为云OBS、谷歌GCS)等备份介质,提供了备份、恢复、管理三大功能

  • 官方推荐使用OSS作为备份介质,OSS作为无状态的对象存储,比有状态的NFS4有更高的稳定性,且NFS为保证数据库数据强一致性需要使用同步模式(禁用系统缓存,NFS性能会更差)
  • V4.2.1 BP7以上版本方可支持S3作为备份介质

3、备份流程

OceanBase支持集群级别租户级别的备份操作,且支持手动删除指定的备份和自动删除过期备份的功能

Image

备份流程大致如下:

  • 当用户用系统租户登录到备份集群以后,需要先用 SQL 发起日志归档,等日志归档发起完成启动阶段以后,才可以发起基线备份
  • 日志归档是定期备份到备份目的端的,只需要用户发起一次alter system archivelog,日志备份就会在后台持续进行。日志归档是由每个 PG(Partition Group)的 Leader 负责定期将该 PG 的日志归档到备份介质指定的路径,RS(Root Service)负责定期统计日志归档的进度,并更新到内部表。
  • 数据备份是需要用户触发的,比较常见的场景是周六触发一次全量备份,周二和周四触发一次增量备份。当用户发起数据备份请求时,该请求会首先被转发到 RS 所在的节点上;RS 会根据当前的租户和租户包含的 PG 生成备份数据的任务,然后把备份任务分发到 OBServer 上并行地执行备份任务;OBServer 负责备份 PG 的元信息和宏块到指定的备份目录,宏块按照 PG 为单位进行管理。

备份数据目录结构示意如下:

datatenant_data_backup_info // 记录租户级别基线备份的信息tenant_backup_set_file_info // 比 tenant_data_backup_info 信息更加完整backup_set_1_full_date // 一个全量 Backup Set,后缀以日期结尾,例如:backup_set_1_full_20211014,包含所有数据备份的宏块信息,是一个单一超大文件backup_set_info // 记录本次备份single_backup_set_info //记录本次备份,比 backup_set_info 信息更加完整backup_1 // 1 为 backup_set_idsys_pg_listnormal_pg_listsys_meta_index_file_<task_id>// 系统表的索引,负责根据 pgkey 索引到对应的 PG Meta Filesnormal_meta_index_file_<task_id> // 普通表的索引meta_file_<task_id> // 记录 Meta 和宏块列表等信息data // 不区分版本pgkeymajor_data // 基线数据macro_block_1.<sub_task_id>   macro_block_index_1macro_block_2.<sub_task_id>macro_block_index_2minor_data // 转储数据task_id_1macro_block_1.<sub_task_id>macro_block_index_1task_id_2macro_block_2.<sub_task_id>macro_block_index_2backup_set_2_inc_date // 一个增量 Backup Set,后缀以日期结尾,例如:backup_set_2_inc_20211014backup_set_info // 记录本次备份single_backup_set_info backup_2sys_pg_listnormal_pg_listsys_meta_index_file_<task_id>normal_meta_index_file_<task_id>meta_file_<task_id>data...clogbackup_piece_info        // Piece 相关的信息tenant_clog_backup_info roundid_pieceid_date   // 例如:1_1_20211014 single_piece_info    archive_keytableid_partition_id  // 例如:1100611139403779_0....datatableid               // 例如:1100611139403779partition_id        // 例如:01                 // 数据文件2             ...index tableid               // 例如:1100611139403779partition_id        // 例如:01                 // 索引文件2          ..

4、恢复流程

OceanBase 支持租户级别的恢复操作,恢复是基于已有数据的备份重建新租户的过程。用户只需要一个 alter system restore tenant 命令,就可以完成整个恢复过程。
恢复过程包括租户系统表和用户表的RestoreRecover过程,Restore是将恢复需要的基线数据恢复到目标租户的 OBServer,Recover是将基线对应的日志恢复到对应 OBServer。

Image

恢复流程大致如下:
1、在目的集群上用 CREATE RESOURCE POOL命令建立恢复租户需要的资源池
2、通过ALTER SYSTEM RESTORE TENANT命令调度租户恢复任务,对于备份恢复来说,RESTORE TENANT命令的内部流程如下:

  • 创建恢复用的租户
  • 恢复租户的系统表数据
  • 恢复租户的系统表日志
  • 调整恢复租户的元信息
  • 恢复租户的用户表数据
  • 恢复租户的用户表日志
  • 恢复扫尾工作
    对于单个 PG 来说,恢复的流程就是将 PG 的元信息和宏块数据拷贝到指定的 OBServer,构建出一个只有基线数据的 PG;然后再把 PG 的日志拷贝到指定的 OBServer,回放到该 PG 的 MemTable 中。这个流程中如果日志的量比较大,可能会触发转储操作。

二、NFS备份

1、注意事项

由于OceanBase数据库备份需保证数据强一致性,在操作NFS备份过程中,需要注意以下事项

  • 添加新的机器后,在启动 OBServer 前,需要保证新的机器挂载 NFS 成功或者可以备份到其他介质。
  • 使用 NFS 环境时,需要保证先挂载 NFS,再开启备份。如果备份期间 NFS 出现问题,需要先停止数据备份和日志备份,再解决 NFS 的问题
  • 在重启 OBServer 所在的服务器时,需要先启动 NFS 服务,再启动 OBServer 服务
  • 由于 OceanBase 数据库备份的并发控制需依赖 NFS4 的文件锁功能,故在挂载 NFS 时,需使用 NFS 4.1 及以上版本。
  • 在使用 NFS 作为备份介质时,必须保证所有 OBServer 都挂载了同一个服务器的 NFS。同时,为保证备份的顺利进行,需要使用指定的参数挂载NFS

2、服务端配置

  • 配置nfs共享服务,修改/etc/exports配置文件,更改/cephnfs/cephfs/backup目录所有者和属组为nfsnobody:nfsnobody(确保客户端nfsnobody对共享目录有读写权限)
sudo yum install nfs-utils
echo '"/cephnfs/cephfs/backup" "*"(rw,sync,all_squash,no_subtree_check)' >> /etc/exports
chown nfsnobody:nfsnobody -R /cephnfs/cephfs/backup/
  • 配置nfs参数,修改/etc/sysconfig/nfs配置文件,重启nfs服务
  • RPCNFSDCOUNT=32

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

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

相关文章

一行命令打开iOS模拟器

要在 Mac 命令行打开 iPhone 15 Pro 模拟器&#xff0c;需满足已安装 Xcode 这一前提条件&#xff0c;以下是具体操作步骤&#xff1a; 步骤一&#xff1a;列出所有可用模拟器设备 打开终端&#xff08;Terminal&#xff09;&#xff0c;输入并执行以下命令&#xff0c;用于列…

Java虚拟机(JVM)家族发展史及版本对比

Java虚拟机&#xff08;JVM&#xff09;家族发展史及版本对比 一、JVM家族发展史 1. 早期阶段&#xff08;1996-2000&#xff09; Classic VM&#xff08;Java 1.0-1.1&#xff09;&#xff1a; 厂商&#xff1a;Sun Microsystems&#xff08;Oracle前身&#xff09;。特点&…

嘻游电玩三端客户端部署实战:PC + Android + iOS 环境全覆盖教程

本篇文章将针对“网狐系列嘻游电玩组件”的三端客户端&#xff08;PC端、安卓端、iOS端&#xff09;进行详细部署实操讲解。文章将以实测部署为核心&#xff0c;提供资源结构说明、平台适配调整、打包配置、常见问题修复&#xff0c;并辅以必要的关键配置代码。 一、客户端资源…

LabVIEW实现Voronoi图绘制功能

该 LabVIEW 虚拟仪器&#xff08;VI&#xff09;借助 MathScript 节点&#xff0c;实现基于手机信号塔位置计算 Voronoi 图的功能。通过操作演示&#xff0c;能直观展示 Voronoi 图在空间划分上的应用。 各部分功能详细说明 随机地形创建部分 功能&#xff1a;根据 “Maximum a…

web刷题笔记

2024isctf ezrce 禁用了一些关键字符&#xff0c;查询函数&#xff0c;系统执行函数&#xff0c;执行函数都有&#xff0c;空格也和斜杆也禁用了&#xff0c;但是其他一些很大一部分字符都没有禁用&#xff0c;属于关键词禁用的类型&#xff0c;正常的步骤是去查一下列表&#…

集结号海螺捕鱼游戏源码解析(第二篇):水浒传捕鱼模块逻辑与服务器帧同步详解

本篇将全面解构“水浒传”子游戏的服务端核心逻辑、帧同步机制、鱼群刷新规则、客户端命中表现与服务器计算之间的协同方式&#xff0c;聚焦于 C 与 Unity3D 跨端同步的真实实现过程。 一、水浒传捕鱼模块资源结构 该模块包含三部分核心目录&#xff1a; 子游戏/game_shuihuz…

【产品经理从0到1】原型及Axure介绍

原型分类 原型的三种分类&#xff1a; 草图原型&#xff1a;⼿绘稿&#xff0c;制作⽅便&#xff0c;修改不⽅便&#xff1b;低保真原型&#xff1a;简单交互&#xff0c;⽆设计图&#xff1b; 最好的原型是⿊⽩灰的&#xff1b;⾼保真原型&#xff1a;复杂交互&#xff0c;有…

CVE-2024-23897-Jenkins 2.441之前版本存在任意文件读取漏洞

1.漏洞介绍 Jenkins 2.441及更早版本&#xff0c;以及LTS 2.426.2及更早版本没有禁用其CLI命令解析器的一个功能&#xff0c;该功能会将参数中字符后跟的文件路径替换为该文件的内容&#xff0c;允许未经身份验证的攻击者读取Jenkins控制器文件系统上的任意文件。 2.poc利用 下…

PostgreSQL性能调优与内核优化怎么做?

PostgreSQL 的高级性能调优和内核优化是PGCM认证的核心能力之一&#xff0c;也是企业级数据库场景中解决性能瓶颈的关键手段。以下是直白易懂的实战解析&#xff1a; 一、性能调优&#xff1a;让数据库“跑得更快” 1. 执行计划优化 问题场景&#xff1a;一个复杂查询耗时10秒…

DeepSeek是否采用了混合专家(MoE)架构?它如何提升模型效率?

引言 最近&#xff0c;关于DeepSeek是否采用混合专家&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;架构的讨论越来越多。MoE技术因其高效的计算特性&#xff0c;已经成为大模型训练的热门选择。那么&#xff0c;DeepSeek到底有没有用MoE&#xff1f;如果用了&am…

HTTP 请求头与请求体:数据存储的底层逻辑与实践指南

文章目录 一、数据承载的本质差异1.1、请求头:元数据的 "集装箱"1.2、请求体:业务数据的 "运输舱"二、请求方式的选择逻辑2.1、GET 请求:无体的轻量级交互2.2、POST 请求:体数据的主力军2.3、PUT/PATCH 请求:体数据的更新场景三、参数属性的深度解析3…

【网工第6版】第5章 网络互联②

目录 ■ IPV6 ▲ IPV6报文格式 ◎ IPV6扩展报头&#xff08;RFC2460&#xff09; ◎ IPv6相关协议 ▲ IPV6地址分类 ◎ IPv6地址基础 ◎ IPv6地址举例 ◎ IPv6地址分类 ◎ 特殊地址对比IPv4 vs IPv6 ▲ 过渡技术 本章重要程度&#xff1a;☆☆☆☆☆ ■ IPV6 与IPv4…

关于 梯度下降算法、线性回归模型、梯度下降训练线性回归、线性回归的其他训练算法 以及 回归模型分类 的详细说明

以下是关于 梯度下降算法、线性回归模型、梯度下降训练线性回归、线性回归的其他训练算法 以及 回归模型分类 的详细说明&#xff1a; 1. 梯度下降算法详解 核心概念 梯度下降是一种 优化算法&#xff0c;用于寻找函数的最小值。其核心思想是沿着函数梯度的反方向逐步迭代&a…

[SpringBoot]快速入门搭建springboot

默认有spring基础&#xff0c;不会一行代码一行代码那么细致地讲。 SpringBoot的作用 Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的。就像我们整个SSM框架时&#xff0c;就常常会碰到版本导致包名对不上、Bean非法参数类型的一系列问题&#xff08;原出…

ROS-真机向虚拟机器人映射

问题描述 ROS里的虚拟机械臂可以实现和真实机械臂的位置同步&#xff0c;真实机械臂如何动&#xff0c;ROS里的虚拟机械臂就如何动 效果 步骤 确保库卡机械臂端安装有EthernetKRL辅助软件和KUKAVARPROXY 6.1.101&#xff08;它是一个 TCP/IP 服务器 &#xff0c;可通过网络实…

ubuntu--安装双系统

教程 BIOS设置 启动盘生成和ubuntu安装 boot option #1设置USB为第一启动项 rufus下载 官网&#xff1a; 链接 点击“链接”下面的按钮&#xff0c;即可下载。(注意查看自己的电脑是x64还是x84) 网盘下载&#xff1a; 链接

Python项目--基于计算机视觉的手势识别控制系统

1. 项目概述 1.1 项目背景 随着人机交互技术的快速发展&#xff0c;传统的键盘、鼠标等输入设备已经不能满足人们对自然、直观交互的需求。手势识别作为一种非接触式的人机交互方式&#xff0c;具有操作自然、交互直观的特点&#xff0c;在智能家居、游戏控制、虚拟现实等领域…

LabVIEW数据采集与传感系统

开发了一个基于LabVIEW的智能数据采集系统&#xff0c;该系统主要通过单片机与LabVIEW软件协同工作&#xff0c;实现对多通道低频传感器信号的有效采集、处理与显示。系统的设计旨在提高数据采集的准确性和效率&#xff0c;适用于各种需要高精度和低成本解决方案的工业场合。 项…

java Springboot使用扣子Coze实现实时音频对话智能客服

一、背景 因公司业务需求&#xff0c;需要使用智能客服实时接听顾客电话。 现在已经完成的操作是&#xff0c;智能体已接入系统进行对练&#xff0c;所以本文章不写对联相关的功能。只有coze对接&#xff5e; 扣子提供了试用Realtime WebSocket&#xff0c;点击右上角setting配…

栈和字符串,力扣.43.字符串相乘力扣1047.删除字符串中的所有相邻重复项力扣.844比较含退格的字符串力扣227.基本计算器II

目录 力扣.43.字符串相乘 力扣1047.删除字符串中的所有相邻重复项 力扣.844比较含退格的字符串 力扣227.基本计算器II 力扣.43.字符串相乘 我们剩下的落两个数字即可。 class Solution {public static String multiply(String num1, String num2) {int mnum1.length();int n…