【OceanBase】v4.2.1 集群命令汇总

查看集群信息

# 查看所有集群
obd cluster list# 启动集群ob3cluster
obd cluster start ob3cluster# 停止集群
obd cluster stop ob3cluster

登录数据库

# root用户的sys租户登录数据库
obclient -hxxx.xxx.xxx.xxx -uxxx:sys:root -P2883 -pxxxxxx -c -A -DOceanbase

NFS 配置

mount -tnfs4 -o rw,nfsvers=4.1,sync,lookupcache=positive,hard,timeo=600,wsize=1048576,rsize=1048576,namlen=255 192.168.xx.xx:/storage/ob421 /storage/ob421  

nfsvers=4.1 :由于备份依赖 nfs 4 原生的文件锁,建议使用 nfs 4.1 及以上版本。nfs 4.0 有一个已知 Bug,在重命名文件以后可能会读到旧文件。

sync: 使用同步写保证数据能及时刷到服务端,从而保证数据的一致性.

lookupcache=positive: 用于避免并发访问目录或者文件时误报目录或文件不存在的问题,保证数据的一致性。

hard: 在 NFS 不可用的情况下,系统会卡住应用的读写请求,以保证数据的一致性。不能使用 soft 选项,会有数据错误的风险。

timeo :用于指定重试的等待时间,单位为 0.1s。在设置时,建议不要设置得过大,建议值为 600 。

wsize :表示写的数据块大小,建议设置为 1048576 。

rsize :表示读的数据块大小,建议设置为 1048576 。

namlen :建议设置为 255 。

192.168.xx.xx :表示 NFS 服务器的 IP 地址。

日志归档

设置日志归档目录

ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///storage/ob421/archive/mysqlt' TENANT = mysqlt;

设置好之后的目录情况:

[root@localhost mysqlt]# pwd
/storage/ob421/archive/mysqlt
[root@localhost mysqlt]# ll
total 8
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 09:56 check_file
-rw------- 1 nfsnobody nfsnobody  148 Dec 14 09:56 format.obbak
[root@localhost mysqlt]# ll check_file/
total 4
-rw------- 1 nfsnobody nfsnobody 145 Dec 14 09:56 1002_connect_file_20231214T095621.obbak
[root@localhost mysqlt]# 

开启日志归档模式

ALTER SYSTEM ARCHIVELOG TENANT = mysqlt;

但日志归档状态为BEGINNING,多了目录piece_d1001r0p1, rounds:

[root@localhost mysqlt]# ll
total 16
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 09:56 check_file
-rw------- 1 nfsnobody nfsnobody  148 Dec 14 09:56 format.obbak
drwx------ 4 nfsnobody nfsnobody 4096 Dec 14 10:01 piece_d1001r1p1
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 10:01 rounds
[root@localhost mysqlt]#

当日志归档状态变成DOING,目录情况:

[root@localhost mysqlt]# ll
total 20
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 09:56 check_file
-rw------- 1 nfsnobody nfsnobody  148 Dec 14 09:56 format.obbak
drwx------ 5 nfsnobody nfsnobody 4096 Dec 14 10:03 piece_d1001r1p1
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 10:03 pieces
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 10:01 rounds
[root@localhost mysqlt]#

关闭日志归档模式

ALTER SYSTEM NOARCHIVELOG TENANT = mysqlt;

查看日志归档进度

SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG\G

刚开始的归档状态是BEGINING:

obclient [Oceanbase]> SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG\G
*************************** 1. row ***************************TENANT_ID: 1002DEST_ID: 1001ROUND_ID: 1INCARNATION: 1DEST_NO: 0STATUS: BEGINNINGSTART_SCN: 1702519281626895202START_SCN_DISPLAY: 2023-12-14 10:01:21.626895CHECKPOINT_SCN: 1702519281626895202CHECKPOINT_SCN_DISPLAY: 2023-12-14 10:01:21.626895COMPATIBLE: 1BASE_PIECE_ID: 1USED_PIECE_ID: 1PIECE_SWITCH_INTERVAL: 86400000000UNIT_SIZE: 1COMPRESSION: noneINPUT_BYTES: 0INPUT_BYTES_DISPLAY: 0.00MBOUTPUT_BYTES: 0OUTPUT_BYTES_DISPLAY: 0.00MBCOMPRESSION_RATIO: 0.00DELETED_INPUT_BYTES: 0DELETED_INPUT_BYTES_DISPLAY: 0.00MBDELETED_OUTPUT_BYTES: 0
DELETED_OUTPUT_BYTES_DISPLAY: 0.00MBCOMMENT: PATH: file:///storage/ob421/archive/mysqlt
1 row in set (0.004 sec)obclient [Oceanbase]>

过一会归档完成,状态就变成DOING了:

obclient [Oceanbase]> SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG\G
*************************** 1. row ***************************TENANT_ID: 1002DEST_ID: 1001ROUND_ID: 1INCARNATION: 1DEST_NO: 0STATUS: DOINGSTART_SCN: 1702519281626895202START_SCN_DISPLAY: 2023-12-14 10:01:21.626895CHECKPOINT_SCN: 1702519401550565270CHECKPOINT_SCN_DISPLAY: 2023-12-14 10:03:21.550565COMPATIBLE: 1BASE_PIECE_ID: 1USED_PIECE_ID: 1PIECE_SWITCH_INTERVAL: 86400000000UNIT_SIZE: 1COMPRESSION: noneINPUT_BYTES: 69213550INPUT_BYTES_DISPLAY: 66.01MBOUTPUT_BYTES: 69213550OUTPUT_BYTES_DISPLAY: 66.01MBCOMPRESSION_RATIO: 1.00DELETED_INPUT_BYTES: 0DELETED_INPUT_BYTES_DISPLAY: 0.00MBDELETED_OUTPUT_BYTES: 0
DELETED_OUTPUT_BYTES_DISPLAY: 0.00MBCOMMENT: PATH: file:///storage/ob421/archive/mysqlt
1 row in set (0.003 sec)obclient [Oceanbase]> 

查看归档参数

SELECT * FROM oceanbase.CDB_OB_ARCHIVE_DEST\G

数据备份

设置数据备份目录

ALTER SYSTEM SET DATA_BACKUP_DEST= 'file:///storage/ob421/data/mysqlt' TENANT = mysqlt;-- 如果想清空备份目录配置,将DATA_BACKUP_DEST置为空即可。 
ALTER SYSTEM SET DATA_BACKUP_DEST='' TENANT=mysqlt;

设置数据备份目录之后的目录情况:

[root@localhost mysqlt]# pwd
/storage/ob421/data/mysqlt
[root@localhost mysqlt]# ll
total 8
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 10:07 check_file
-rw------- 1 nfsnobody nfsnobody  145 Dec 14 10:07 format.obbak
[root@localhost mysqlt]# ll check_file/
total 4
-rw------- 1 nfsnobody nfsnobody 142 Dec 14 10:07 1002_connect_file_20231214T100726.obbak
[root@localhost mysqlt]#

集群转储与合并

Oceanbase数据分为MemTable(内存数据)和SSTable(静态数据)两部分。

当MemTable的大小超过一定阈值时,需要将MemTable中的数据转存到SSTable中以释放内存,这一过程称为转储

转储的前置动作: 内存冻结。
租户MemTable的内存分为两种:Active MemTable和Frozen MemTable,当一个租户MemTable内存的使用量达到阈值时,会自动触发冻结,生成新的Active MemTable,原来的Active MemTable成为Frozen MemTable,然后再自动调度转储,转储完成后释放Frozen MemTable部分的内存。

转储生成新的SSTable,当转储次数超过一定阈值时,或在业务低峰期,会将基线SSTable与之后转储的增量SSTable合并为一个SSTable,这一过程称为合并

发起转储

alter system minor freeze

发起合并

ALTER SYSTEM MAJOR FREEZE;

获取合并进度

SELECT * FROM oceanbase.CDB_OB_MAJOR_COMPACTION;

发起全量数据备份

ALTER SYSTEM BACKUP TENANT=mysqlt;

发起全量数据备份之后的目录结构:

[root@localhost mysqlt]# ll
total 16
drwx------ 5 nfsnobody nfsnobody 4096 Dec 14 10:14 backup_set_1_full
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 10:14 backup_sets
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 10:07 check_file
-rw------- 1 nfsnobody nfsnobody  145 Dec 14 10:07 format.obbak

发起增量数据备份

ALTER SYSTEM BACKUP INCREMENTAL TENANT=mysqlt;

增量数据备份之后的目录结构:

[root@localhost mysqlt]# ll
total 20
drwx------ 5 nfsnobody nfsnobody 4096 Dec 14 10:14 backup_set_1_full
drwx------ 5 nfsnobody nfsnobody 4096 Dec 14 10:21 backup_set_2_inc
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 10:21 backup_sets
drwx------ 2 nfsnobody nfsnobody 4096 Dec 14 10:07 check_file
-rw------- 1 nfsnobody nfsnobody  145 Dec 14 10:07 format.obbak

停止备份

ALTER SYSTEM CANCEL BACKUP TENANT = mysqlt;

停止的时候,备份状态为:CANCELING -> CANCELED

查看数据备份进度

SELECT * FROM oceanbase.CDB_OB_BACKUP_JOBS\G

备份进度,状态会从 INIT -> DOING -> COMPLETED, 结束之后再查询 oceanbase.CDB_OB_BACKUP_JOBS会变为空。

obclient [Oceanbase]> SELECT * FROM oceanbase.CDB_OB_BACKUP_JOBS\G
*************************** 1. row ***************************TENANT_ID: 1JOB_ID: 1INCARNATION: 1BACKUP_SET_ID: 0
INITIATOR_TENANT_ID: 1INITIATOR_JOB_ID: 1EXECUTOR_TENANT_ID: 1002PLUS_ARCHIVELOG: OFFBACKUP_TYPE: FULLJOB_LEVEL: CLUSTERENCRYPTION_MODE: NONEPASSWD: START_TIMESTAMP: 2023-12-14 10:11:19.263166END_TIMESTAMP: NULLSTATUS: DOINGRESULT: 0COMMENT: DESCRIPTION: PATH: 
*************************** 2. row ***************************TENANT_ID: 1002JOB_ID: 1INCARNATION: 1BACKUP_SET_ID: 1
INITIATOR_TENANT_ID: 1INITIATOR_JOB_ID: 1EXECUTOR_TENANT_ID: 1002PLUS_ARCHIVELOG: OFFBACKUP_TYPE: FULLJOB_LEVEL: USER_TENANTENCRYPTION_MODE: NONEPASSWD: START_TIMESTAMP: 2023-12-14 10:11:19.273702END_TIMESTAMP: NULLSTATUS: DOINGRESULT: 0COMMENT: DESCRIPTION: PATH: file:///storage/ob421/data/mysqlt
2 rows in set (0.003 sec)

查看数据备份结果

SELECT * FROM oceanbase.CDB_OB_BACKUP_JOB_HISTORY\G

数据备份结果:

obclient [Oceanbase]> SELECT * FROM oceanbase.CDB_OB_BACKUP_JOB_HISTORY\G
*************************** 1. row ***************************TENANT_ID: 1JOB_ID: 1INCARNATION: 1BACKUP_SET_ID: 0
INITIATOR_TENANT_ID: 1INITIATOR_JOB_ID: 1EXECUTOR_TENANT_ID: 1002PLUS_ARCHIVELOG: OFFBACKUP_TYPE: FULLJOB_LEVEL: CLUSTERENCRYPTION_MODE: NONEPASSWD: START_TIMESTAMP: 2023-12-14 10:11:19.263166END_TIMESTAMP: 2023-12-14 10:14:19.320221STATUS: COMPLETEDRESULT: 0COMMENT: DESCRIPTION: PATH: 
*************************** 2. row ***************************TENANT_ID: 1002JOB_ID: 1INCARNATION: 1BACKUP_SET_ID: 1
INITIATOR_TENANT_ID: 1INITIATOR_JOB_ID: 1EXECUTOR_TENANT_ID: 1002PLUS_ARCHIVELOG: OFFBACKUP_TYPE: FULLJOB_LEVEL: USER_TENANTENCRYPTION_MODE: NONEPASSWD: START_TIMESTAMP: 2023-12-14 10:11:19.273702END_TIMESTAMP: 2023-12-14 10:14:12.823506STATUS: COMPLETEDRESULT: 0COMMENT: DESCRIPTION: PATH: file:///storage/ob421/data/mysqlt
2 rows in set (0.003 sec)

查看租户备份路径信息

SELECT * FROM oceanbase.CDB_OB_BACKUP_PARAMETER\G

返回信息:

obclient [Oceanbase]> SELECT * FROM oceanbase.CDB_OB_BACKUP_PARAMETER\G
*************************** 1. row ***************************
TENANT_ID: 1002NAME: data_backup_destVALUE: file:///storage/ob421/data/mysqlt
1 row in set (0.009 sec)obclient [Oceanbase]>

备份集清理策略

-- 创建清理策略,名字叫policy_1, 可恢复窗口是7天,也可以设置其他比如:2h, 3w
ALTER SYSTEM ADD DELETE BACKUP POLICY 'policy_1' RECOVERY_WINDOW 
'7d' TENANT MySQL;-- 查看清理策略
SELECT * FROM oceanbase.CDB_OB_BACKUP_DELETE_POLICY;-- 删除清理策略
ALTER SYSTEM DROP DELETE BACKUP POLICY policy_name 
TENANT tenant_name;

恢复数据

恢复前准备

恢复前需要创建出资源单元和资源池,恢复出来的新租户要使用该资源池。

发起恢复

-- 恢复到指定时间戳
ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL TIME={timestamp} WITH 'pool_list=restore_pool';-- 恢复到指定SCN
ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL SCN={scn} WITH 'pool_list=restore_pool';-- 恢复到最新位点
ALTER SYSTEM RESTORE mysqlt_restore FROM 'file:///storage/data/mysqlt, file:///storage/archive/mysqlt' WITH 'pool_list=restore_pool';

取消恢复

ALTER SYSTEM CANCEL RESTORE tenant_name;

查看恢复进度

oceanbase.CDB_OB_RESTORE_PROGRESS这个视图只有在有恢复任务的时候才有数据,如果没有恢复任务,该视图内容为空。

SELECT * FROM oceanbase.CDB_OB_RESTORE_PROGRESS;

查看恢复结果

SELECT * FROM oceanbase.CDB_OB_RESTORE_HISTORY;

其他命令

ZONE

-- 获取集群zone信息
SELECT * FROM oceanbase.DBA_OB_ZONES;

租户

-- 查询租户
select tenant_id, tenant_name from __all_tenant;-- 删除租户
drop tenant tenant_name1;

资源单元

-- 获取资源单元
select * from DBA_OB_UnitS;
SELECT * FROM oceanbase.__all_unit_config;-- 创建资源单元
CREATE RESOURCE UNIT restore_unit MAX_CPU 1.5, MEMORY_SIZE = '5G', MAX_IOPS 10240, MIN_IOPS=10240;

资源池

-- 获取资源池
SELECT * FROM DBA_OB_RESOURCE_POOLS;
SELECT * FROM oceanbase.__all_resource_pool;-- 创建资源池
CREATE RESOURCE POOL restore_pool unit = 'restore_unit', unit_num = 1, zone_list = ('zone1');

参考资料

  • 转储与合并 https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639915

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

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

相关文章

了解一波经典的 I/O 模型

最近读了波网络 I/O 相关的文章,做下总结、摘录。(未完) 经典 I/O 模型 {% checkbox red checked, 阻塞式 I/O(blocking I/O) %}{% checkbox red checked, 非阻塞式 I/O(non-blocking I/O) %}…

Weblogic,静默安装!

安装JDK 第一步 安装软件 首先,将下载好的JDK文件放到/root目录中。 切换到 /usr/lib目录下 cd /usr/lib 新建jdk目录 sudo mkdir jdk 解压安装包 tar zxvf jdk-8u202-linux-x64.tar.gz -C /usr/lib/jdk/ 第二步 配置java环境变量 这里是将环境变量配置在e…

docker可视化界面 - portainer安装

目录 一、官方安装说明 二、安装portainer 2.1拉取镜像 2.2运行portainer容器 2.3登录和使用portainer 一、官方安装说明: Install PortainerChoose to install Portainer Business Edition or Portainer Community Edition.https://www.portainer.io/install…

【LAMMPS学习】三、构建LAMMPS(8)构建 LAMMPS 文档

3. 构建 LAMMPS 3.8.构建 LAMMPS 文档 根据您获取 LAMMPS 的方式以及您是否自己构建了手册,该目录有许多子目录和文件。这是一个包含描述的列表: README # brief info about the documentation src # content files for LAMM…

C# LINQ笔记

C# LINQ笔记 from子句 foreach语句命令式指定了按顺序一个个访问集合中的项。from子句只是声明式地规定集合中的每个项都要访问,并没有指定顺序。foreach在遇到代码时就执行其主体。from子句什么也不执行,只有在遇到访问查询变量的语句时才会执行。 u…

Unbtun环境切换

之前的环境都是下载到系统环境里面的,后面安装了anaconda发现切换不到系统环境里面了,通过查找资料可以发现: ubuntu的python可分为三大类: ubuntu自带的系统python环境 一般安装在/usr/bin/中python2和python3可以共存 anaconda…

[Qt学习笔记]Qt实现自定义控件SwitchButton开关按钮

1、功能介绍 在项目UI中使用较多的打开/关闭的开关按钮,一般都是找图片去做效果,比如说如下的图像来表征打开或关闭。 如果想要控件有打开/关闭的动画效果或比较好的视觉效果,这里就可以使用自定义控件,使用Painter来绘制控件。软…

JavaScript的学习笔记

<script src"index.js" defer></script>&#xff0c;defer的作用是延迟加载index.js文件 定义变量 变量的类型分为两大类&#xff1a;基本类型和复合类型 JavaScript是一种弱类型语言&#xff0c;所以没有强类型语言所具有的int,float,char等等&#x…

阿里云linux服务器数据盘待初始化

如果您的阿里云Linux服务器数据盘已经购买但未进行初始化和格式化&#xff0c;您可以按照以下步骤进行操作&#xff1a; 查看数据盘信息&#xff1a; 使用fdisk -l命令查看当前所有磁盘的信息&#xff0c;识别未初始化的数据盘设备名称&#xff0c;如/dev/xvdb。分区数据盘&am…

Spring 实现 OAuth2 授权之解决方案

Spring Security OAuth2 - 已经废弃的项目 早期的Spring 使用 Spring Security OAuth2 实现 OAuth 2.0 的认证服务器和资源服务器。OAuth2是一个授权框架,它允许第三方应用获取有限的访问权限,而无需获取用户的账号和密码等敏感信息。通过这种方式,OAuth2协议实现了安全的用…

java语言实现树莓派4b下的超远程高精度电子秤

通常情况下,Java语言基于jvm虚拟机,垃圾回收,代码优化等机制,无法直接通过Java语言来操控硬件,获取传感器数据,本文做个折中,通过编写c语言代码,编译为.so文件,Java使用jni调用.so文件的方式,springboot操作Java方法,来编写一套超远程高精度电子秤的代码。总成本:2…

VScode通过ssh连接github

通过ssh连接github 1.生成公钥和私钥2.设置config文件3.配置ssh免密登录4.远程仓库初始化 1.生成公钥和私钥 首先选择一个文件夹&#xff0c;右击 git bash here&#xff0c;在命令行输入命令&#xff0c;按下三次回车生成一个**.ssh文件夹**&#xff0c;一般在用户的user根目…

AI浪潮下,新闻媒体的新变革与记者职业的未来发展

中国媒体经历了从口口相传到报纸、再到电视&#xff0c;最后到互联网自媒体的演变过程。传统报业在新媒体冲击下面临着存亡的挑战。 中国媒体的演变概括如下&#xff1a; 19世纪初&#xff1a;主要依靠口口相传和阅读报纸获取信息&#xff1b;20世纪&#xff1a;电视逐渐取代报…

MyBatis:查询与连接池

一、查询 1、多表查询 尽量避免使用多表查询&#xff0c;尤其是对性能要求较高的项目。因为多表查询必然会导致性能变低。 例如&#xff1a;select *from ta运行需要10ms&#xff0c;select *from tb 运行也需要10s。但是&#xff0c;select *from ta left join tb on ta.xx…

zabbix监控vmware esxi

一、zabbix服务端配置 修改zabbix_server.conf配置文件 vim /etc/zabbix/zabbix_server.conf #######zabbix_server.conf底部第二行开始添加下面配置######## StartVMwareCollectors5 #StartVMwareCollectors - 预先启动Vmware collector收集器实例的数量。此值取决于要监控的…

android13实现切换导航模式功能

支持android13以上系统&#xff0c;需要系统签名。 public class NavigationHelper {/*** 设置导航模式** param context* param mode GESTURAL&#xff1a;手势 TWOBUTTON&#xff1a;二按钮 THREEBUTTON&#xff1a;三按钮*/public static void setNavigationMode(Contex…

GEE显示研究区sentinel-2每年可用影像

第一次使用GEE&#xff0c;用了别人的代码&#xff0c;想查看每年影像可用数量&#xff0c;但是老是报错&#xff0c;说是null geometry&#xff0c;之前我是用GAMMA软件导出的kml文件&#xff0c;后面在arcgis自己勾画了sho文件&#xff0c;线类型&#xff0c;然后我就在想会不…

android各种软件下载

Android Studio 历史版本下载地址&#xff1a;https://developer.android.google.cn/studio/archive 拉到网页底部&#xff0c;点击 I agree to the terms 按钮 buildTools历史版本下载地址&#xff1a;https://androidsdkmanager.azurewebsites.net/build_tools.html

MySQL进阶-----索引的结构与分类

目录 前言 一、认识索引 二、索引结构 1.概述 2. 二叉树 3 .B-Tree 4.BTree 5.Hash 三、索引的分类 1 .索引分类 2 .聚集索引&二级索引 前言 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维…

进制转换(Python)

一、把10进制数转换成N进制数 将10进制数转换为N进制数通常遵循以下步骤&#xff1a; 将10进制数除以N&#xff0c;记录下商和余数。将商作为新的被除数重复步骤1&#xff0c;直到商为0。将得到的余数逆序排列&#xff0c;这就是所求的N进制数。 假设我们要将10进制数29转换为N…