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

这里为大家汇总了从租户创建、连接数据库,到数据库的备份、归档、资源配置调整等,在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;';

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

百度最新AI旋转验证码

一、简介 先来说说百度旋转验证码的历史。 1、百度旋转验证码 这是百度最早的旋转验证码,只有有限的数量,图片以风景为主,没有随机阴影,没有干扰线条等。所以这种验证码识别比较简单,正确率在99%左右。如下图所示 2…

卸载微软的浏览器: Edge

前言: Edge 崩溃了,无法访问网路: 错误代码: STATUS_STACK_BUFFER_OVERRUN 然后,windows不提供卸载,这下好了,它不能用,你也不能卸载,重新安装也无法解决,咋办&#xff…

hadoop编程之词频统计

数据集实例 java代码,编程 实例 我们要先创建三个类分别为WordCoutMain、WordCoutMapper、WordCoutReducer这三个类 对应的代码如下 WordCoutMain import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Pat…

亚马逊---设计安全架构

会从以下三个方面展开: 1、AWS资源访问安全 2、应用程序负载的网络安全 3、云中数据的安全 责任共担模式 就像租房子(房东和你的责任) AWS资源访问安全 需要掌握以下几点: 1、跨多个账户的访问控制和管理 2、AWS联合访问和身份服…

买了个三星i9300(S3)供以后给黑莓Q10开发软件用(安卓4.3)

买了个三星i9300(S3)供以后给黑莓Q10开发软件用(安卓4.3) 前段时间的时候一心想给黑莓Q10开发个软件用用,开发到一半因为过程太过繁琐才叫停了。 一、黑莓Q10安卓应用开发为什么繁琐? Q10的开发过程是这样的: 因为黑莓Q10 里面运行的是Andr…

深度学习之视觉特征提取器——VGG系列

VGG 提出论文:1409.1556.pdf (arxiv.org) 引入 距离VGG网络的提出已经约十年,很难想象在深度学习高速发展的今天,一个模型能够历经十年而不衰。虽然如今已经有VGG的大量替代品,但是笔者研究的一些领域仍然有大量工作选择使用VG…

layabox手游全面屏、ipad屏幕适配方案

1设置 手游平台在项目设置中,场景适配模式选择”固定宽模式 fixedwidth“,设计宽度以全面屏比例为主,我这里设置的设计宽高为640 * 1386 2代码和场景 laya的UI面板有三种类型,分别是Scene、View和Dialog 1)Scene和V…

Java web应用性能分析服务端慢之Nginx慢

一般Nginx作为整个应用的入口,即做静态服务器,也做负载均衡、反向代理;同时也因为位置靠前,还可以通过Nginx对于访问的IP、并发数进行相应的限制。在Java web应用性能分析中,Nginx是重要环节,Nginx的性能也…

Flink Job提交分析

1.概述 Flink 应用程序的提交方式为:打成jar包,通过 flink 命令来进行提交。 flink 命令脚本的底层是通过 java 命令启动:CliFrontend 类 来启动 JVM 进程,执行任务的构造和提交。 flink run xxx.jar class arg1 arg2flink.sh 脚…

Springboot+Vue项目-基于Java+MySQL的影城管理系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

Unity 新版输入系统(Input System)

前言 官方教程 注意 新的输入法系统需要 Unity 2019.4 和 .NET 4 运行时。它不适用于 .NET 3.5 的项目。 教程版本:Unity 2021.3.26 1. 安装 1.1 打开 Package Manager 导航栏 -> Window -> Package Manager 1.2 安装 Input System 选择 Unity Registry 在…

【WEB前端2024】开源元宇宙:乔布斯3D纪念馆-第8课-新增摆件

【WEB前端2024】开源元宇宙:乔布斯3D纪念馆-第8课-新增摆件 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&#…

mysql基础20——数据备份

数据备份 数据备份有2种 一种是物理备份 一种是逻辑备份 物理备份 物理备份 通过把数据文件复制出来 达到备份的目的 用得比较少 逻辑备份 逻辑备份 把描述数据库结构和内容的信息保存起来 达到备份的目的 是免费的 数据备份工具 mysqldump (3种模式&#x…

C++笔试强训day4

目录 1.游游的you 2.腐烂的苹果 3.孩子们的游戏 1.游游的you 链接: 分析题意之后,发现就是一道简单的贪心,当然也可以把他看作纯数学题。 因为you和oo里面都有o,但是you可以得两分,所以贪心策略尽可能的去凑更多的…

【嵌入式】keil5安装(同时兼容C51和STM32)

最近在开发STM32的时候,安装Keil5,遇到STM32和C51的共存的问题,在网上找了很多方法,又遇到一些bug,最终还是弄好了。因此将处理的过程记录下来,希望对遇到相同问题的朋友一些启发。 1、下载安装包 Keil P…

vue-Router 路由(常量路由)

1、安装 pnpm i vue-router 2、新建文件:src/routes.ts import { RouteRecordRaw } from vue-routerexport const constantRoute: RouteRecordRaw[] [{//path: /,redirect: /login,},{//path: /login,component: () > import(/views/Login/index.vue),name…

mysql基础6——多表查询

外键 把分散在多个不同表里面的数据查询出来的操作,就是多表查询 把两个表连接:使用外键(foreign key)和连接(join) 外键在表创建的阶段定义也可以通过修改表定义,连接在查询字段把相同意义的字段连接起来 外键就是从表中用来引用主表中数…

【MATLAB源码-第190期】基于matlab的32QAM系统相位偏移估计EOS算法仿真,对比补偿前后的星座图误码率。

操作环境: MATLAB 2022a 1、算法描述 1. 引言 M-QAM调制技术的重要性 现代通信系统追求的是更高的数据传输速率和更有效的频谱利用率。M-QAM调制技术,作为一种高效的调制方案,能够通过在相同的带宽条件下传输更多的数据位来满足这一需求…

舍得酒业陷入瓶颈期:业绩增速再放缓,股价低迷,市场信心缺失?

撰稿|行星 来源|贝多财经 被誉为“川酒六朵金花”之一的舍得酒业,混的不算好。 近日,舍得酒业股份有限公司(SH:600702,下称“舍得酒业”)披露2023年年度报告。在白酒行业活性整体趋弱的大环境下,舍得酒业…

加入新团队时,为什么你需要一个“WTF 笔记本”

原文:Nat Bennett - 2021.09.04 我有一个子弹日记。我并不是你在 Pinterest 上看到的那种用精美排版的人——大部分只使用黑色墨水,标准设置,偶尔会有自定义的集合。 每当我加入新的团队,都会翻到下一页,然后在那一页…