OceanBase由于合并操作导致事务被杀死的情况。

简介: OceanBase是由蚂蚁金服和阿里巴巴自主研发的分布式关系型数据库。具有数据“零”丢失、可扩展、高性能、持续可用等特点,已广泛应用在阿里巴巴集团和蚂蚁金服集团。---源于OceanBase公众号。

       OceanBase是一台内存数据库,兼容MySQL协议以及SQL协议,拥有跟内存数据库一样的属性:所有的数据都需要先写入到内存里面,但是并不会立刻落盘写入到存储里面,需要等一次合并操作,将内存里面所有的改动落盘到存储里面。所以发生这种合并操作的时候,伴随着资源的使用,也会出现问题。我们来看其中一种由于合并操作导致数据库杀死事务的情况如何排查。


机器配置:

2c8g

应用端报错信息:

系统未知错误,请联系管理员: transaction error,need to rollback。

第一次遇到这种问题也是比较懵的,因为平常测试库的压力不大,而且合并时间都在凌晨,一般不会出现这种问题。所以排查也是冲头到尾一步一步梳理的。


排错过程:

首先确认一下所有的observe是否都正常。

可以直接使用observe机器所在的IP直接连接,或者是查看端口是否通等等的。确认无误。

然后查看相关监控信息如下:

6283e7f708a7668fd29f5400ea780a2ba7d639a1

b4f4fe4fc2793257eee65202f7f619926133c44f

96b39ee42e501318f8a6abfb721fda18cf4856e5

监控信息里面能反应出一些事情来,确实那个时间段相对的系统负载要比平时高。

然后,看一下是否由于压力的问题,导致了系统发生了合并操作。

OceanBase (root@oceanbase)> show tables like '%rootservice%';
+-------------------------------------+
| Tables_in_oceanbase (%rootservice%) |
+-------------------------------------+
| __all_rootservice_event_history     |
| __all_rootservice_job               |
+-------------------------------------+
2 rows in set (0.02 sec)
合并操作记录在__all_rootservice_event_history表中。

select * from __all_rootservice_event_history where gmt_create between '2017-09-25 16:00:00' and '2017-09-25 17:00:00' order by gmt_create;
查看发生故障时间段是否发生过合并状态。

e5585160d3090a2e95725df2838cf78cd0be18ed

发现在故障时间点确实是存在合并操作的。通过之前的操作可以看到75是这次合并操作的序号

select count(*) 
from __all_rootservice_event_history 
where gmt_create between '2017-09-25 16:00:00' and '2017-09-25 17:00:00' and
      value1 = 75
order by gmt_create;

5390cd0008a86dfcb70c893cd16a18f51f894eb9

show parameters like '%turn%';
发现enable_merge_by_turn打开,表示轮转合并是打开的,也就是3个zone不是同时合并,是依次合并。每个zone合并前,会把当前zone的所有leader切到别的不合并的zone,结束后再切回来
这是一次非计划的合并,说明性能测试写操作太猛,租户的memstore增长太快,达到一定阈值后就自动触发了合并操作。


目录
相关文章
|
Oracle 关系型数据库 MySQL
第四章:OceanBase集群技术架构(分布式事务、MVCC、事务隔离级别)
第四章:OceanBase集群技术架构(分布式事务、MVCC、事务隔离级别)
399 0
|
4月前
|
OLAP OLTP OceanBase
构建基于 OceanBase 的混合事务与分析处理(HTAP)系统
【8月更文第31天】 随着业务复杂性的增加,企业需要同时处理大量的在线事务处理(OLTP)和在线分析处理(OLAP)。传统的做法是维护两个独立的系统,分别用于事务处理和数据分析。然而,这种分离的方式不仅增加了运维的复杂度,还可能导致数据不一致的问题。为了解决这些问题,混合事务与分析处理(Hybrid Transactional/Analytical Processing, HTAP)的概念应运而生。OceanBase 作为一款支持 HTAP 的分布式数据库系统,能够同时满足事务处理和分析查询的需求。本文将介绍如何利用 OceanBase 构建 HTAP 系统。
88 1
|
5月前
|
DataWorks API 数据库
DataWorks操作报错合集之在使用 OceanBase (OB) 作为数据源进行数据集成时遇到报错,该如何排查
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
DataWorks 关系型数据库 MySQL
DataWorks操作报错合集之从OceanBase(OB)数据库调度数据到MySQL数据库时遇到连接报错,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
7月前
|
分布式计算 DataWorks 数据库
DataWorks操作报错合集之DataWorks使用数据集成整库全增量同步oceanbase数据到odps的时候,遇到报错,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
101 0
|
7月前
|
存储 数据库 OceanBase
OceanBase数据库的磁盘配置包括数据盘和事务日志盘的大小
OceanBase数据库的磁盘配置包括数据盘和事务日志盘的大小
66 1
|
7月前
|
数据库 OceanBase
在OceanBase数据库中,clog和slog文件夹的内容包含了事务日志和系统日志
在OceanBase数据库中,clog和slog文件夹的内容包含了事务日志和系统日志
198 7
|
存储 调度 数据库
OceanBase存储引擎高级技术——内存数据落盘策略-合并和转储
OceanBase存储引擎高级技术——内存数据落盘策略-合并和转储
1128 0
|
SQL 存储 数据库
OceanBase 源码解读(四):事务的一生
源码是 OceanBase 的“方向盘”,本系列主要围绕“源码解读”,通过文章阐述,帮助大家理清数据库的内在本质。此前,带你读源码第三篇《戳这里回顾:OceanBase 源码解读(三)分区的一生》为大家介绍了OceanBase 的存储层的相关内容。在第一节讲通信协议 obmp_query 时,跳过了事务控制的细节,本文为 OceanBase 数据库源码解读系列文章的第四篇,将主要为大家介绍事务的外部接口相关知识。
382 0
OceanBase 源码解读(四):事务的一生
|
存储 SQL 容灾
深入剖析数据库内核之事务的本质 | 附下一代分布式数据库 OceanBase 解决方案
在近日 OceanBase 开源技术直播上,OceanBase 分布式数据库事务研发负责人颜然以数据库事务的本质为主题,深入分享了事务的前世今生一季 OceanBase 在分布式事务上的解决方案。本文将从以下三方面进行阐述数据库事务:一、事务的前世,二、事务的挑战,三、分布式事务
深入剖析数据库内核之事务的本质 | 附下一代分布式数据库 OceanBase 解决方案

热门文章

最新文章