OceanBase数据库日常运维快速上手

news2025/1/11 8:04:05

这里为大家汇总了从租户创建、连接数据库,到数据库的备份、归档、资源配置调整等,在OceanBase数据库日常运维中的操作指南。

创建租户

方法一:通过OCP 创建

  1. 确认可分配资源

想要了解具体可分配的内存量,可以通过【资源管理】功能来查看各节点的剩余资源情况。

2. 新建租户

3. 填写租户信息

zone的优先级主要通过设置primary_zone来确定leader的优先顺序。在优先级完全一致的情况下,leader会均匀地分布在所有节点上。

方法二:手动创建

1. 确认可分配资源

新租户可以分配的内存大小为 memory_limit - system_memory - sys 租户内存,CPU 数量为 cpu_count - sys 租户 cpu。

# 查询参数
show parameters where name in ('memory_limit','system_memory','cpu_count');
# 查询 sys 租户资源
select * from DBA_OB_UNIT_CONFIGS;

2. 创建租户

# 创建资源规格,5C14G,日志40G,IOPS 10000000。
create resource unit unit_1 max_cpu 5, min_cpu 5, memory_size '15G', log_disk_size '50G', max_iops 10000000;
# 创建资源池,指定 资源规格以及 zone_list。
create resource pool pool_1 unit = 'unit_1', unit_num = 1, zone_list = ('zone1','zone2','zone3');
# 创建租户,指定副本数量3,primary_zone,以及资源池和白名单。
create tenant perf replica_num = 3,primary_zone='RANDOM', resource_pool_list=('pool_1') set ob_tcp_invited_nodes='%';

3. 修改 root 用户密码

创建完租户,默认的 root 密码为空,如果需要可以修改密码。

# 租户的 root 用户登陆后执行修改 sql
set password for root=password('xxx');

连接数据库

主要有两种连接方式:

1. 通过 OBServer 直连(默认端口 2881)

mysql -h xxx.xxx.xxx.xxx -uroot@sys -P2881 -p -c -A oceanbase

2. 通过 OBProxy 连接(默认端口2883)

mysql -h xxx.xxx.xxx.xxx -uroot@sys#obdemo -P2883 -p -c -A oceanbase

使用 OBProxy 连接时,用户信息需要包括【用户名@租户名#集群名】;如果是 OBServer 连接,那么只需要包括【用户名@租户名】。

参数和变量

区别:

参数(parameter)可以控制集群的负载均衡、合并时间、合并方式、资源分配和模块开关等功能,主要针对集群、Zone、OBServer 和 租户级别进行配置。

参数分集群级别和租户级别,可以通过查询 SHOW PARAMETERS LIKE'max_syslog_file_count'; 中的scope 列来确定,cluster为集群级别,tenant为租户级别。

变量(variable)可以控制数据库系统的各种行为,如缓存大小、并发连接数等,主要是针对租户级别内 Global 和 Session 级别进行设置。

查看参数和变量

OBServer 参数 :

# 方法一
show parameters like '%enable_rebalance%';
# 方法二
show parameters where name in ('memstore_limit_percentage','freeze_trigger_percentage','writing_throttling_trigger_percentage');
# 方法三
select * from oceanbase.GV$OB_PARAMETERS where NAME in ('memstore_limit_percentage','freeze_trigger_percentage','writing_throttling_trigger_percentage');

OBProxy 参数:

show proxyconfig like '%query_digest_time_threshold%';

查看变量

show variables like '%timeout%';

修改参数和变量

要注意,这里的参数修改会自动变更到安装目录的 etc 下的配置文件,但是如果是 OBD 创建的集群,不会自动同步到 OBD 的配置文件中,如果后续需要使用 OBD 重启,那么需要手动修改 OBD 的配置,防止启动后配置有差异影响业务。

OBServer 参数 :

alter system set enable_rebalance=False;

OBProxy 参数:

alter proxyconfig set query_digest_time_threshold='101ms';

修改变量

# 设置全局级别变量,当前 session 不生效,新 session 生效。
set global ob_query_timeout=10000000;
# 设置会话级别变量,当前 session 生效,其他 session 不生效。
set session ob_query_timeout=10000000;

转储合并

转储

主动触发转储

## 不带租户则表示所有租户
alter system minor freeze tenant=xxx;

查看进行中的转储任务

SELECT * FROM oceanbase.GV$OB_TABLET_COMPACTION_PROGRESS WHERE TYPE='MINI_MERGE'\G;

需要关注的字段:

  • TYPE:表示 Compaction 任务的类型。
    • MINOR_MERGE:表示 Minor,多个 Mini SSTable 合成一个 Minor SSTable。
    • MINI_MERGE:表示转储,冻结 MemTable 通过转储变成 Mini SSTable。
    • MEDIUM_MERGE:表示分区级合并。
    • MAJOR_MERGE:表示合并。
    • META_MAJOR_MERGE :Buffer 表转储。
  • STATUS:表示任务状态。任务正在运行中时,该字段值为 NODE_RUNNING。
  • DATA_SIZE:表示需要转储的总数据量。
  • UNFINISHED_DATA_SIZE:表示转储未完成的数据量。
  • ESTIMATED_FINISH_TIME:表示预计完成时间。

查看转储历史

SELECT * FROM oceanbase.GV$OB_TABLET_COMPACTION_HISTORY WHERE TYPE='MINI_MERGE'\G

合并

手动触发合并

## 不带租户则表示所有租户
ALTER SYSTEM MAJOR FREEZE TENANT = xxx;

查看租户各个zone的合并过程

SELECT*FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION\G

查看所有租户的合并信息

SELECT*FROM oceanbase.CDB_OB_MAJOR_COMPACTION\G

查看合并历史

SELECT * FROM oceanbase.GV$OB_TABLET_COMPACTION_HISTORY where type='MAJOR_MERGE' order by START_TIME desc limit 5\G

问题分析常用

查看耗时超过 5s 的转储合并任务。

SELECT * FROM GV$OB_MERGE_INFO WHERE tenant_id=1002 AND (END_TIME-START_TIME)>5 LIMIT 10;

查看某张表的合并记录。

SELECT * FROM GV$OB_TABLET_COMPACTION_HISTORY WHERE TABLET_ID IN (SELECT TABLET_ID FROM oceanbase.CDB_OB_TABLE_LOCATIONS WHERE TABLE_NAME = 'sbtest1') ORDER BY START_TIME DESC;

查看转储次数以及内存阈值

select * from gv$ob_memstore;

查看转储配置

show parameters where name in ('memstore_limit_percentage','freeze_trigger_percentage','writing_throttling_trigger_percentage','memory_limit');

备份归档

备份

查看备份信息

查看当前所有租户的备份任务

select * from  CDB_OB_BACKUP_TASKS\G
SELECT * FROM oceanbase.CDB_OB_BACKUP_JOBS\G

查看历史备份任务

SELECT * FROM oceanbase.CDB_OB_BACKUP_JOB_HISTORY\G
SELECT * FROM oceanbase.CDB_OB_BACKUP_TASK_HISTORY\G

查看备份路径信息

SELECT*FROM oceanbase.CDB_OB_BACKUP_PARAMETER\G

查看备份集的文件状态

SELECT * FROM oceanbase.CDB_OB_BACKUP_SET_FILES

操作备份任务

指定备份路径

ALTER SYSTEM SET DATA_BACKUP_DEST='data_backup_path'  [TENANT = mysql_tenant];

启动备份

ALTER SYSTEM BACKUP DATABASE [TENANT = mysql_tenant];  // 系统租户发起则全部租户,业务租户发起则自己

停止备份

ALTER SYSTEM CANCEL BACKUP [TENANT = mysql_tenant];

强制停止备份

ALTER SYSTEM CANCEL BACKUP FORCE;

更改备份目的端。

一定要先停止备份任务,并且保证新的备份目的端所在的目录为空以后再更改

ALTER SYSTEM SET DATA_BACKUP_DEST='data_backup_path'  [TENANT = mysql_tenant];

日志归档

查看归档信息

查看租户的归档模式

SELECT TENANT_NAME, LOG_MODE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_TYPE ='USER‘

查看 piece信息

SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG_PIECE_FILES\G

查看归档状态

SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG\G

查看归档历史

SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG_SUMMARY\G

查看归档参数

SELECT * FROM oceanbase.CDB_OB_ARCHIVE_DEST;

操作日志归档

配置归档目的端

ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOG_ARCHIVE_DEST'  [TENANT = mysql_tenant];

设置归档目的端的状态

# 启动
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE='ENABLE' TENANT = tenant_name;
# 暂停
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE='DEFER' TENANT = tenant_name;

启动日志归档

ALTER SYSTEM ARCHIVELOG [TENANT = mysql_tenant];	

停止日志归档

ALTER SYSTEM NOARCHIVELOG [TENANT = mysql_tenant];

更改归档目的端,跟更改备份目的端同理,一定要先关闭归档,再改目的端

强制取消数据备份+日志备份:

ALTER SYSTEM CANCEL ALL BACKUP FORCE; 

物理恢复

可以参考官网

OceanBase分布式数据库-海量数据 笔笔算数

调整资源占用大小

调整 OBServer 的资源占用

CPU扩缩容

注意:集群下的其他配置可能会影响该配置项的生效方式。建议在该配置项配置后,在 GV$OB_SERVERS 内部表中查看 CPU_CAPACITY 字段实际生效的值。若未动态生效,需要重启整个集群。

ALTER SYSTEM SET cpu_count=32; 

内存扩缩容

ALTER SYSTEM SET memory_limit='32G';   // 优先级最高
或者
ALTER SYSTEM SET memory_limit_percentage='80';

缩容的话需要注意,memory_limit 的值必须大于 OBServer 节点实际已使用的内存。

SELECT value/1024/1024/1024 used_gb FROM v$sysstat WHERE name LIKE '%observer memory%' AND con_id = 1 AND stat_id=140008 AND name='observer memory used size';

磁盘扩容

ALTER SYSTEM SET datafile_size='80G';  // 优先级最高
或者
ALTER SYSTEM SET datafile_disk_percentage=90;

磁盘缩容

只有单zone情况下不支持缩减磁盘空间,多zone情况下可以缩减磁盘空间;多zone的模式的话,可以先下线observer,然后再上线,上线时可以指定参数启动;

bin/observer -o "datafile_size='100G'"

调整租户的资源占用

举例:ALTER RESOURCE UNIT unit1 MAX_CPU 2, MEMORY_SIZE '5G';

语法:

ALTER RESOURCE UNIT unit_name
MEMORY_SIZE [=] 'size_value',
MAX_CPU [=] cpu_num,
[MIN_CPU [=] cpu_num,]
[MAX_IOPS [=] iops_num,]
[MIN_IOPS [=] iops_num,]
[IOPS_WEIGHT [=]iopsweight,]
[LOG_DISK_SIZE [=] 'size_value'];

统计信息

手动收集

方法一:

# 收集 test 库下的 test3 表
call dbms_stats.gather_table_stats('test','test3');
# 收集 test 下的所有表,并且并行度 128
call dbms_stats.gather_schema_stats('test', degree=>128);

方法二:

ALTER SYSTEM SET enable_sql_extension = true;
ANALYZE TABLE test3 COMPUTE STATISTICS;

详情参照:

OceanBase分布式数据库-海量数据 笔笔算数

查看表的统计信息

select * from DBA_TAB_STATISTICS

执行计划缓存

查看

select * from oceanbase.GV$OB_PLAN_CACHE_PLAN_stat where query_sql like '%xx%';

清空缓存

1、清空指定的计划缓存。

ALTER SYSTEM FLUSH PLAN CACHE sql_id='xxxxxxxxxxx'  global;   // 不加 global 只会清理本地的plan cache

2、清空 aa、bb两个租户的所有计划缓存

ALTER SYSTEM FLUSH PLAN CACHE TENANT = 'aa','bb' global;

3、清空租户下面某个库的所有计划缓存

ALTER SYSTEM FLUSH PLAN CACHE databases='myob1' tenant='tenant1' GLOBAL;

日志保留

修改方式

通过 ALTER SYSTEM SET enable_syslog_recycle=True;

相关参数

  • enable_syslog_wf控制是否生成独立的wf结尾的日志,wf指warn级别以上的日志,关闭这个效果是只存在observer.log了。

注意:关闭后实际还会有一个observer.log.wf,但以时间戳结尾的历史日志文件不会再有对应的wf文件,实现的小问题

  • max_syslog_file_count:控制的磁盘里历史日志的最大保留数量。
  • enable_syslog_recycle:用于设置是否开启回收系统日志,仅当 max_syslog_file_count设置为非 0 正数时生效。
  • enable_async_syslog:是否启用异步写日志功能,默认为 True。关闭后将使用同步方式写日志,可以保证 observer 宕机前写完所有日志,但性能较差,不建议关闭。
  • syslog_io_bandwidth_limit:日志限流量,默认为 30M。
  • syslog_level:打印的日志的最低级别,日志级别见上文,默认为 WDIAG。

实例启动

启动命令

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/oceanbase/lib

cd /home/admin/oceanbase && bin/observer

配置调整

调整租户配置

修改 primary_zone

ALTER TENANT xxx PRIMARY_ZONE=RANDOM;

修改 unit_num

调大 unit

ALTER RESOURCE TENANT mysql001 UNIT_NUM =2;

调小 unit

unit group 可以通过 DBA_OB_UNITS 查询

方法一:随机删除 unit group

ALTER RESOURCE TENANT mysql001 UNIT_NUM = 1;

方法二:指定 unit group 删除实现调小

ALTER RESOURCE TENANT mysql001 UNIT_NUM = 1 DELETE UNIT_GROUP =(1006);

查看执行状态

SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE='ALTER_RESOURCE_TENANT_UNIT_NUM' AND TENANT_ID=1006;

确认迁移后的信息

SELECT * FROM oceanbase.DBA_OB_UNITS WHERE UNIT_ID =1006;

迁移 unit

租户 mq_t1 中 UNIT_ID = 1006 的 Unit 迁移到同 Zone 的另一个节点。

ALTER SYSTEM migrate unit =1006 destination ='xx.xx.xx.158:2882';

查看状态

SELECT * FROM oceanbase.DBA_OB_UNIT_JOBS WHERE JOB_TYPE ='MIGRATE_UNIT';

确认迁移后的信息

SELECT * FROM oceanbase.DBA_OB_UNITS WHERE UNIT_ID =1006;

修改 Locality

修改

ALTER TENANT mq_t1 locality="F{1}@sa128_obv4_1,F{1}@sa128_obv4_2,F{1}@sa128_obv4_3";

查看状态

SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE ='ALTER_TENANT_LOCALITY';

确认修改结果

SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS;

RS 切换

切换rs leader

alter system switch rootservice leader zone='z1';

查看 RS 任务

select * from __all_rootservice_event_history order by 1 desc limit 10;

日志流切主

命令

alter system switch replica leader ls=1 server='$z3_ip:$z3_port' tenant='sys';

查询leader的位置

select * from __all_virtual_log_stat where tenant_id=1;

OBProxy

开启后observer show create table输出会完全兼容mysql的语法,建议设置为租户级别。

alter proxyconfig set init_sql='set _show_ddl_in_compat_mode = 1;';

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

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

相关文章

华为OD机试 - 结队编程(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

Google DeepMind: Many-Shot vs. Few-Shot

本文介绍了如何通过增大上下文窗口,利用大型语言模型(LLMs)进行多实例上下文学习(Many-Shot In-Context Learning,ICL)的方法。主要描述了现有的几实例上下文学习方法虽然在推理时能够通过少量例子学习&…

MicroSIP电话呼叫软件使用及配置方法

MicroSIP是一款开源的SIP协议电话软件,它可以帮助你在计算机上进行语音和视频通话。下面是关于如何使用和配置MicroSIP的一些基本步骤: 安装MicroSIP 从MicroSIP官方网站下载适合你操作系统的安装包23。 解压下载的文件,并运行安装程序。 …

可以与 FastAPI 不分伯仲的 Python 著名的 Web 框架

正如你所理解的,任何领域都不可能停止进步,不断使用相同的工具意味着不思进取。这一点在信息技术领域,尤其是网络开发行业非常明显。 关于网络框架,不论是 Django 和 Flask 等传统框架还是 Python 的新型高级框架,一直…

算法课程笔记——常用库函数

memset初始化 设置成0是可以每个设置为0 而1时会特别大 -1的补码是11111111 要先排序 unique得到的是地址 地址减去得到下标 结果会放到后面 如果这样非相邻 会出错 要先用sort排序 O(n)被O(nlogn)覆盖

【智能算法】饥饿游戏搜索算法(HGS)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年,Yang等人受到自然界饥饿驱动的活动和动物的行为选择启发,提出了饥饿游戏搜索算法(Hunger Games Search, HGS)。 2.算法原理 2.1算法思想 HGS…

【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)

目录 1、网络编程 1.1、概述 1.1、网络编程三要素 2、UDP通信 2.1、DatagramPacket 与 DatagramSocket 2.1、 UDP发收数据示例 1、网络编程 1.1、概述 在网络通信协议下,不同计算机上运行的程序,进行的数据传输应用场景:即时通信、网游…

韩顺平Java | C27 正则表达式

入门介绍 需求:提取文本中某类字符 传统方法:遍历每个字符,判断其是否在ASCII码中某种类型得编码范围内,代码量大,效率不高 正则表达式(RegExp, regular expression):处理文本的利器,是对字符…

网络编程套接字(三)之TCP服务器简单实现

目录 一、服务端TcpServer 1、tcp_server.hpp 2、tcp_server.cc 二、客户端TcpClient tcp_client.cc 三、服务器和客户端进行通信 四、完整代码 一、服务端TcpServer 首先我们需要对服务端进行封装。我们需要的成员变量有IP地址,端口号port,以及监…

49.基于SpringBoot + Vue实现的前后端分离-爱心公益网站系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的爱心公益网站系统设计与实现管理工作…

Gartner发布信任、风险和安全管理领域的生成式人工智能创新指南:生成式AI整个生命周期运行中的攻击面

生成式人工智能带来了三类新风险:内容异常、数据保护和人工智能应用安全。使用或构建 GenAI 应用的 IT 领导者可以利用这项研究来了解市场动态并评估新兴的 GenAI TRiSM 技术和解决新风险的提供商。 主要发现 在企业应用中集成大语言模型(LLM &#xff0…

《QT实用小工具·三十》基于QT开发的访客管理平台demo

1、概述 源码放在文章末尾 该项目为访客管理平台demo,包含主界面、系统设置、警情查询、调试帮助、用户退出功能。 项目部分代码如下: #ifndef QTHELPER_H #define QTHELPER_H#include "head.h"class QtHelper { public://获取所有屏幕区域…

Vue 3 项目构建与效率提升:vite-plugin-vue-setup-extend 插件应用指南

一、Vue3项目创建 前提是已安装Node.js(点击跳转Node官网) npm create vuelatest这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示: ✔ Projec…

InstantMesh:利用稀疏视图大规模重建模型从单张图像高效生成3D网格

作者:Jiale Xu,Weihao Cheng,Yiming Gao等 编译:东岸因为一点人工一点智能 InstantMesh:利用稀疏视图大规模重建模型从单张图像高效生成3D网格在这项工作中,我们提出了InstantMesh,一个开源的…

5.MMD ray渲染天空盒的导入和参数介绍

现在已经有了一个TDAMiku的模型 1. Sky with box 导入Sky with box.pmx 天空盒 再把ray.x和ray_controler.pmx放进去 调节背景模型绘制顺序 天空盒在最上面 上材质 给miku上main.fx材质 在自发光一栏给天空盒添加对应的材质 Sky with lighting.fx 调节参数 按TAB…

python中的守护进程、僵尸进程、孤儿进程

继续上一篇文章的探讨:https://blog.csdn.net/weixin_39743356/article/details/137885419 守护进程 守护进程(Daemon Process)是一种在后台运行的特殊类型的进程,它独立于控制终端,并且周期性地执行某种任务或等待处…

性能分析与调优

性能分析方法 自底向上:通过监控硬件及操作系统性能指标(cpu、内存、磁盘、网络等硬件资源的性能指标)来分析性能问题(配置、程序问题) 先检查,再下药 自顶向下:通过生成负载来观察被测试的系…

解锁外贸财务系统宝藏:多语言多货币平台推荐汇总

本文将为您推荐几款主流的多语言多货币外贸财务系统有:Zoho Books 、SAP、Oracle、QuickBooks、Xero、TradeGecko,并分析了每款产品的主要特点,希望能帮助到你! 一、Zoho Books Zoho Books是一款支持180种货币、17种语言的外贸…

视频技术笔记-色差分量

色差分量接口采用YPbPr和YCbCr两种标识。 YPbPr:表示逐行扫描色差输出。 YCbCr:后者表示隔行扫描色差输出。 色差分量接口一般利用3根信号线分别传送亮色和两路色差信号。 色差分量接口是色差接口使用不是很普遍,主要的原因是一些CRT电视机…

CSS 格式化上下文 + CSS兼容处理

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 ✍CSS 格式化上下文🔥1 格式化上下文🌷1.1 块级格式化…