【OceanBase系列】—— OceanBase V4.x 中的常用备份恢复 SQL 总结

OceanBase 数据库的物理备份分为数据备份和日志归档。

  • 数据备份指的是备份数据的功能,分为全量备份和增量备份两种:
    • 全量备份是指备份所有的宏块
    • 增量备份是指备份上一次备份以后新增和修改过的宏块
  • 日志归档是基于 clog 日志数据的一种流式的自动归档功能,OBServer 会定期将日志数据归档到指定的备份路径。这个动作是全自动的,由后台日志归档工作线程自动完成,不需要外部定期触发。

在进行物理备份操作时,需要先开启日志归档模式后,然后才能执行数据备份。

跟之前的 OceanBase 数据库 V2.x/V3.x 版本相比,OceanBase 数据库 V4.x 版本最大的改变是将物理备份的配置和调度从以前的集群级别下拆到了租户级别,对应的,相关的 SQL 语句和查询视图也有了较大的调整。

本文总结了 OceanBase 数据库 V4.x 中常用的备份恢复相关的 SQL 语句。

适用版本

OceanBase 数据库 V4.x 版本

配置日志归档的路径

连接到 root@sys 租户,执行以下命令。

MySQL [oceanbase]> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1006/clog BINDING=Optional PIECE_SWITCH_INTERVAL=1d' TENANT=obmysql;

连接到普通业务租户的管理员用户,执行以下命令。

obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1006/clog BINDING=Optional PIECE_SWITCH_INTERVAL=1d';

查看日志归档的参数

连接到 root@sys 租户查看日志备份的路径,执行以下命令。

MySQL [oceanbase]> select * from cdb_ob_archive_dest;
+-----------+---------+-----------------------+--------------------------------------------------------------------+
| TENANT_ID | DEST_NO | NAME                  | VALUE                                                              |
+-----------+---------+-----------------------+--------------------------------------------------------------------+
|      1002 |       0 | binding               | OPTIONAL                                                           |
|      1002 |       0 | dest_id               | 1002                                                               |
|      1002 |       0 | path                  | file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1002/clog |
|      1002 |       0 | piece_switch_interval | 1d                                                                 |
|      1002 |       0 | state                 | ENABLE                                                             |
+-----------+---------+-----------------------+--------------------------------------------------------------------+
5 rows in set (0.049 sec)

连接普通业务租户查看日志备份的路径,执行以下命令。

obclient> select * from dba_ob_archive_dest;
+---------+-----------------------+--------------------------------------------------------------------+
| DEST_NO | NAME                  | VALUE                                                              |
+---------+-----------------------+--------------------------------------------------------------------+
|       0 | binding               | OPTIONAL                                                           |
|       0 | dest_id               | 1002                                                               |
|       0 | path                  | file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1002/clog |
|       0 | piece_switch_interval | 1d                                                                 |
|       0 | state                 | ENABLE                                                             |
+---------+-----------------------+--------------------------------------------------------------------+
5 rows in set (0.042 sec)

启动日志归档

使用 root 用户登录 sys 租户,执行以下命令。

MySQL [oceanbase]> ALTER SYSTEM ARCHIVELOG;

或者:

MySQL [oceanbase]> ALTER SYSTEM ARCHIVELOG TENANT=ALL;

或者:

MySQL [oceanbase]> ALTER SYSTEM ARCHIVELOG TENANT = mysql_tenant;

使用 root 用户登录 MySQL 模式租户,执行以下命令。

MySQL [(none)]> ALTER SYSTEM ARCHIVELOG;

使用 SYS 用户登录 Oracle 模式租户,执行以下命令。

obclient [SYS]> ALTER SYSTEM ARCHIVELOG;

查看当前日志归档的状态

使用 root 用户登录 sys 租户,执行以下命令。

MySQL [oceanbase]> select * from cdb_ob_archivelog\G

使用 root 用户登录 MySQL 模式租户,执行以下命令。

MySQL [oceanbase]> select * from dba_ob_archivelog\G

使用 SYS 用户登录 Oracle 模式租户,执行以下命令。

obclient [SYS]> select * from dba_ob_archivelog\G

查看历史以及当前所有的日志归档的状态

使用 root 用户登录 sys 租户,执行以下命令。

MySQL [oceanbase]> select * from cdb_ob_archivelog_summary\G

使用 root 用户登录 MySQL 模式租户,执行以下命令。

MySQL [oceanbase]> select * from dba_ob_archivelog_summary;

使用 SYS 用户登录 Oracle 模式租户,执行以下命令。

obclient [SYS]> select * from dba_ob_archivelog_summary;

查看日志归档中的 piece 信息

连接到 root@sys 租户,执行以下命令。

MySQL [oceanbase]> select * from cdb_ob_archivelog_piece_files;   -- 查看集群中所有租户的所有 Piece 信息

连接到普通业务租户的管理员用户,执行以下命令。

obclient> select * from dba_ob_archivelog_piece_files;   -- 查看本租户的所有 Piece 信息

关闭日志归档

使用 root 用户登录 sys 租户,执行以下命令。

MySQL [oceanbase]> ALTER SYSTEM NOARCHIVELOG;

或者:

MySQL [oceanbase]> ALTER SYSTEM NOARCHIVELOG TENANT=ALL;

或者:

MySQL [oceanbase]> ALTER SYSTEM NOARCHIVELOG TENANT = mysql_tenant;

使用 root 用户登录 MySQL 模式租户,执行以下命令。

MySQL [(none)]> ALTER SYSTEM NOARCHIVELOG;

使用 SYS 用户登录 Oracle 模式租户,执行以下命令。

obclient [SYS]> ALTER SYSTEM NOARCHIVELOG;

配置数据备份的路径

系统租户为指定租户配置备份目的端。

ALTER SYSTEM SET DATA_BACKUP_DEST = 'file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1006/data' TENANT = mysql_tenant;

用户租户配置本租户的备份目的端。

ALTER SYSTEM SET DATA_BACKUP_DEST = 'file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1006/data';

查看数据备份的参数

连接 root@sys 租户查看数据备份的参数。

MySQL [oceanbase]> select * from cdb_ob_backup_parameter;
+-----------+------------------+--------------------------------------------------------------------+
| TENANT_ID | NAME             | VALUE                                                              |
+-----------+------------------+--------------------------------------------------------------------+
|      1002 | data_backup_dest | file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1002/data |
+-----------+------------------+--------------------------------------------------------------------+
1 row in set (0.054 sec)

连接普通业务租户查看数据备份的参数。

obclient> select * from dba_ob_backup_parameter;
+------------------+--------------------------------------------------------------------+
| NAME             | VALUE                                                              |
+------------------+--------------------------------------------------------------------+
| data_backup_dest | file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1002/data |
+------------------+--------------------------------------------------------------------+
1 row in set (0.015 sec)

发起全量数据备份

连接到 root@sys 租户,执行以下命令。

obclient [(none)]> ALTER SYSTEM BACKUP DATABASE;   -- 对集群中的所有租户发起全量数据备份
obclient [(none)]> ALTER SYSTEM BACKUP TENANT = mysql_tenant;   -- 仅对指定租户发起全量数据备份,不会影响集群中的其他租户

连接到普通业务租户的管理员用户,执行以下命令。

obclient> ALTER SYSTEM BACKUP DATABASE;   -- 对本租户发起全量数据备份

发起增量数据备份

连接到 root@sys 租户,执行以下命令。

obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL DATABASE;   -- 对集群中的所有租户发起增量数据备份
obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL TENANT = mysql_tenant;   -- 仅对指定租户发起增量数据备份,不会影响集群中的其他租户

连接到普通业务租户的管理员用户,执行以下命令。

obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL DATABASE;   -- 对本租户发起增量数据备份

查看正在进行中的数据备份的进度

连接到 root@sys 租户,执行以下命令。

MySQL [oceanbase]> select * from cdb_ob_backup_jobs;   -- 展示集群下所有租户的正在进行中的备份JOB 任务。用户发起一次备份任务,记录一条 JOB 任务记录。
MySQL [oceanbase]> select * from cdb_ob_backup_tasks;   -- 展示集群下所有租户的正在进行中的 TASK 级备份任务。一条 TASK 记录对应一个 backup_set 备份。TASK 任务记录和 JOB 任务记录为一一对应关系。

连接到普通业务租户的管理员用户,执行以下命令。

obclient> select * from dba_ob_backup_jobs;
obclient> select * from dba_ob_backup_tasks;

查看数据备份任务历史

连接到 root@sys 租户,执行以下命令。

MySQL [oceanbase]> select * from cdb_ob_backup_job_history;   -- 展示集群下所有租户的历史备份JOB 任务。用户发起一次备份任务,记录一条 JOB 任务记录。
MySQL [oceanbase]> select * from cdb_ob_backup_task_history;   -- 展示集群下所有租户的历史 TASK 级备份任务。一条 TASK 记录对应一个 backup_set 备份。TASK 任务记录和 JOB 任务记录为一一对应关系。

连接到普通业务租户的管理员用户,执行以下命令。

obclient> select * from dba_ob_backup_job_history;
obclient> select * from dba_ob_backup_task_history;

查看数据备份集信息

连接到 root@sys 租户,执行以下命令。

MySQL [oceanbase]> select * from cdb_ob_backup_set_files;

连接到普通业务租户的管理员用户,执行以下命令。

obclient> select * from dba_ob_backup_set_files;

停止数据备份

连接到 root@sys 租户,执行以下命令。

obclient [(none)]> ALTER SYSTEM CANCEL BACKUP;   -- 停止集群中所有租户的数据备份任务
obclient [(none)]> ALTER SYSTEM BACKUP TENANT = mysql_tenant;   -- 仅停止指定租户正在执行的数据备份任务,不会影响集群中的其他租户

连接到普通业务租户的管理员用户,执行以下命令。

obclient [(none)]> ALTER SYSTEM CANCEL BACKUP;   -- 停止本租户正在执行的数据备份任务

更多信息

如何更改日志归档的目的端

操作步骤
  1. 租户管理员登录集群的 sys 租户或用户租户。
  2. 关闭归档模式,详细操作参见 关闭归档模式。
  3. 重新配置归档目的端。配置归档目的端时,要求新的归档目的端所在的目录为空。
  4. 完成后,在 sys 租户下查询视图 CDB_OB_ARCHIVE_DEST 的 LOG_ARCHIVE_DEST 列,或者在用户租户下查询视图 DBA_OB_ARCHIVE_DEST 的 LOG_ARCHIVE_DEST 列,确认新的归档目的端是否配置成功。
后续操作

归档目的端变更成功后,需要重新开启归档模式。

如何更改数据备份的目的端

操作步骤
  1. 租户管理员登录集群的 sys 租户或用户租户。
  2. 确认是否有正在进行的备份任务,详细操作请参见 查看数据备份进度。如果查询结果不为空,则表示有正在进行的数据备份,需要停止正在进行的备份任务。
  3. 重新配置备份目的端。配置备份目的端时,要求新的备份目的端所在的目录为空。
  4. 完成后,在 sys 租户下查询视图 CDB_OB_BACKUP_PARAMETER 或在用户租户下查询视图 DBA_OB_BACKUP_PARAMETER,确认新的备份目的端是否配置成功。
后续操作

备份目的端变更成功后,需要重新发起全量数据备份。

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

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

相关文章

C++牛客小白月赛题目分享(1)生不逢七,交换数字,幻兽帕鲁

目录 1.前言 2.三道题目 1.生不逢七 1.题目描述 2.输入描述: 3.输出描述: 4.示例: 5.题解: 2.交换数字 1.题目描述: 2.输入描述: ​编辑 3.输出描述: 4.示例: 5.题解: 3.幻兽帕…

Spring Boot 读取配置优先级顺序是什么?

在使用 Spring Boot 进行开发时,配置文件是非常重要的一部分,它可以用来配置应用程序的行为、数据源、日志级别等信息。 但是,当配置文件中存在多个配置来源时,Spring Boot 是如何确定读取配置的优先级顺序的呢? 本文…

探索震坤行API:一键解锁高效工业用品采购新纪元!

震坤行是一家专注于工业用品的B2B电商平台,为企业客户提供一站式的工业用品采购服务。虽然震坤行没有直接公开通用的API接口供开发者调用,但通常大型企业或合作伙伴之间可以通过API进行系统集成和数据交互。以下是一个假设性的震坤行API接口调用示例与代…

STM32_HAL_RTC_中断实现闹钟

1STM32设置 在STM32Cude中设置RTC//具体设置看先前发的文章 再打开闹钟中断(如下图) 2代码思路 2.1启动闹钟(HAL_RTC_SetAlarm_IT(&hrtc,&sAlarm,FORMAT_BCD)) 2.2设置回调函数(void HAL_RTC_AlarmAEventC…

ICRA 2024 成果介绍:基于 RRT* 的连续体机器人高效轨迹规划方法

近来,连续体机器人研究受到越来越多的关注。其灵活度高,可以调整形状适应动态环境,特别适合于微创手术、工业⽣产以及危险环境探索等应用。 连续体机器人拥有无限自由度(DoF),为执行空间探索等任务提供了灵…

YOLOv8火焰与烟雾智能检测系统

项目概述: 本项目旨在开发一款高效、实时的火焰与烟雾检测系统,利用先进的深度学习技术——YOLOv8,为安全监控领域提供智能化解决方案。系统不仅能够准确识别视频流或静态图像中的火焰与烟雾,还配备了用户友好的图形界面&#xff…

Spring框架中常见注解

Spring: SpringMVC: RequestMapping用在类上表示所有该类下方法的父路径 RequestParam 做映射,前端请求的参数映射到控制器Controller的处理方法上的参数上。 【当参数需要设置默认值(前端没有发送这个参数)、参数名…

机器人种类分析

2000年前,机器人主要应用于工业生产,俗称工业机器人,由示教器操控,帮助工厂释放劳动力,此时的机器人并没有太多智能而言,完全按照人类的命令执行动作,更加关注电气层面的驱动器、伺服电机、减速…

mysql中sql语句 exists 判断子句的用法

如果子查询成立才执行父查询 exists判断子查询的使用例子: 张三不存在所以前面的父查询不执行 后面的子句结果存在,所以前面的父查询被执行 where条件所连接的嵌套子查询都是,条件子查询 ———————————————————————…

STL——deque容器【双端动态数组】

deque容器的基本概念: 功能:双端数组,可以对头端进行插入删除操作 deque与vector的区别: vector队友头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度会比vecto…

QT+多线程TCP服务器+进阶版

针对之前的服务器,如果子线程工作类里面需要使用socket发送消息,必须要使用信号与槽的方法, 先发送一个信号给父进程,父进程调用socket发送消息(原因是QT防止父子进程抢夺同一资源,因此直接规定父子进程不能…

C脚本实现WIncc模拟量趋势窗口弹出

文章目录 前言一、步骤及解析二、运行画面演示三、总结 前言 本文给出了一种基于C脚本实现点击输入输出域对象,弹出对应模拟量趋势窗口的方法。 一、步骤及解析 在Wincc变量管理中,添加两个变量; 示例如下: 将以上两个变量添加到…

curl获取文件长度

在使用libcurl进行HTTP GET请求下载文件时,可以通过设置CURLOPT_WRITEFUNCTION回调来接收数据。在回调函数中,你可以通过传入的CURL*指针来获取HTTP响应头信息,从而获取content length(内容长度)。 以下是一个简单的例…

在新页面中跳转到指定 div容器位置

要在打开新的页面时跳转到指定 div,我们需要结合 HTML、JavaScript 和后端技术来实现。以下是两种常见的方法: 使用 URL 参数传递目标 div 信息 HTML (新页面): 在新页面的链接中,添加参数来指示目标 div 的 id,例如:…

生产离线安装ntp服务器

文章目录 @[toc]一、修改系统时间二、下载ntp的rpm包三、部署ntp四、修改配置文件五、配置防火墙六、开机自启动七、客户端同步时间九、同步硬件时钟十一、二进制部署ntp1)解压部署2)修改配置3)启动1)拷贝常用命令一、修改系统时间 #查看时区,不是则修改 [root@10-121-2-…

测试docker GPU性能损失

NVIDIA 3090 利用HSOpticalFlow代码测试docker GPU性能损失 docker介绍图如下: 形象生动展示了他们之间的关系 今天要测试docker容器运行HSOpticalFlow算法的性能损失,包括CPU和GPU 上一篇博客 http://t.csdnimg.cn/YW5kE 我已经介绍了使用docker和nvid…

Java手动分页工具类

手动分页是一种在 Java 中处理大量数据集时的常见技术。虽然现代框架通常提供自动分页功能,但有时你可能需要在没有框架支持的情况下手动进行分页。下面是一个简单的手动分页的 Java 工具类示例: import java.util.List;public class PaginationUtils&l…

[Linux_IMX6ULL驱动开发]-GPIO子系统和Pinctrl子系统

目录 Pinctrl子系统的概念 GPIO子系统的概念 定义自己的GPIO节点 GPIO子系统的函数 引脚号的确定 基于GPIO子系统的驱动程序 驱动程序 设备树修改 之前我们进行驱动开发的时候,对于硬件的操作是依赖于ioremap对寄存器的物理地址进行映射,以此来达…

【020】基于JavaWeb实现的批报管理系统

项目介绍 基于jspservlet实现的批报管理系统采用B/S架构,该项目设计了一个角色管理员,管理员实现了我的案件、查询统计、项目维护等三大功能模块 技术栈 开发工具:Idea2020.3 运行环境:jdk1.8tomcat9.0mysql5.7 服务端技术:j…

麦肯锡专访 Mistral AI CEO:三五年后的工作,要比现在更有意义

【编者按】总部位于巴黎的人工智能初创公司 Mistral AI 成立仅一年,就被誉为现有大模型巨头的有力挑战者。 今年 2 月,Mistral AI 正式发布了旗舰级大模型 Mistral Large,直接对标 OpenAI 的 GPT-4;几周前,Mistral AI…