- 博客(818)
- 收藏
- 关注

原创 故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题
作者:戴骏贤网易游戏 技术部资深数据库系统工程师。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。1. 问题起源不久前用户反馈部门的 MySQL 数据库发生了数据更新丢失。为了解决这个问题,当时对用户使用的场景进行了分析。发现可能是因为用户在两台互为主从的机器上都进行了写入导致的数据丢失。如图所示,是正常和异常情况下应用写入数据库的示例。随后在更加深入调查问题的过程中,DBA 发现了故障引起数据丢失的原因:如图 1-2 所示为故障具体过程.
2020-08-11 16:44:48
403

原创 技术分享 | 怎么找到上锁的 SQL 语句
作者:岳明强爱可生北京分公司 DBA 团队成员,负责数据库管理平台的运维和 MySQL 问题处理。擅长对 MySQL 的故障定位。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。问题有的时候 SQL 语句被锁住了,可是通过 show processlist 找不到加锁的的 SQL 语句,这个时候应该怎么排查呢前提performance_schema = on;实验1、建一个表,插入三条数据mysql> use test1;Da.
2020-08-06 16:33:39
354
原创 OceanBase 4.1 全面测评及部署流程,看这篇就够了【建议收藏】
OceanBase 在 QPS、读写延迟、存储压缩方面均不错(生产 MySQL 一监控场景库空间:OceanBase 空间为 6:1 单副本,660G:110G 单副本);高 TPS 场景可以适当调整租户内存使用参数、转储参数;OceanBase 不同租户资源隔离(IOPS,内存,CPU)更好适配多业务场景;OBD 白屏部署方式更加高效、直观,OCP 管理平台功能全面;业务应用方使用 OceanBase 比 MySQL 有点区别(大表创建分区表,用户名需带租户名等)。
2023-06-07 16:42:01
198
原创 从 MySQL 到 OBOracle:如何处理自增列?
方法一(SEQUENCE + DML):也就是 OB 的官方文档中创建序列的操作,在每次做INSERT操作时需要指定自增列并加入,对业务不太友好,不推荐。方法二(SEQUENCE + DDL):相较于第一种该方法只需要指定 DDL 改写 DEFAULT 属性省去了 DML 的操作,但仍需再指定自己创建的序列名,每个表的序列名都不一致,管理不方便,不推荐。方法三(SEQUENCE + 触发器)延用 Oracle 的序列加触发器的方法,触发器会占用更多的计算资源和内存,对性能会有影响,因此也不推荐。
2023-06-05 16:57:37
167
1
原创 源码分析 | MySQL 的 commit 是怎么 commit 的?
作者:李鹏博爱可生 DBA 团队成员,主要负责 MySQL 故障处理和 SQL 审核优化。对技术执着,为客户负责。本文来源:原创投稿MySQL 的commit命令提交事务时,内部会进行两阶段(Prepare 和 Commit)提交,这篇文章基于 MySQL 8.0.33 对 MySQL 的两阶段提交进行源码分析,带你了解提交事务过程中都经历了什么。
2023-05-31 18:24:56
203
原创 技术分享 | 一文了解 MySQL Optimizer Trace 的神奇功效
详解 optimizer trace 功能,深入了解 MySQL 优化器
2023-05-30 17:36:56
86
原创 技术分享 | OB 慢查询排查思路
本文汇总了项目实践中前辈的经验和笔者的理解,旨在帮助初学 OceanBase(以下简称 OB)的工程师,快速解决 SQL 执行缓慢等性能问题。当遇到性能问题时,很多工程师可能会感到无从下手,本文将根据关键日志提供多种分析方向,以加速问题排查。
2023-05-25 16:44:10
639
原创 故障分析 | innodb_thread_concurrency 导致数据库异常的问题分析
作者通过分析源码定位数据库异常,梳理参数 innodb_thread_concurrency 设置的注意事项。
2023-05-22 16:55:09
406
1
原创 上海爱可生发布基于OceanBase开源内核的商业发行版ActionDB
基于OceanBase开源内核的商业发行版ActionDB于今日发布!
2023-05-19 18:24:10
42
1
原创 技术分享 | 一招解决 MySQL 中 DDL 被阻塞的问题
作者分享如何判断一个 DDL 是否被阻塞,以及如何定位阻塞 DDL 会话的解决思路。
2023-05-17 17:01:27
472
原创 故障分析 | 一条本该记录到慢日志的 SQL 是如何被漏掉的
虽然现在的 MySQL 数据库大多数部署在云上或者使用了数据库管理平台收集慢查询,慢查询日志可能不是首选的排查问题 SQL 的方法。但是对于没有额外配置慢查询监控的 MySQL,慢查询日志仍然是一个非常好的定位慢 SQL 的方法,配合工具使用分析某段时间的 TOP SQL 也十分方便。并且数据库管理平台收集的慢查询数据需要额外的数据库存放,一般都会设置保留一段时间,如果要回溯更早的慢 SQL 就只能通过慢查询日志了。
2023-05-16 17:15:51
433
原创 故障分析 | OceanBase 频繁更新数据后读性能下降的排查
本文分析并复现了 OceanBase 频繁更新数据后读性能下降现象的原因,并给出了性能改善建议。
2023-05-15 17:13:21
445
原创 MySQL 升级到 8.0 变慢问题分析
前段时间,客户线上 MySQL 版本从 5.7.29 升级到 8.0.25。升级完成之后,放业务请求进来,没到一分钟就开始出现慢查询,然后,慢查询越来越多,业务 SQL 出现堆积。整个过程持续了大概一个小时,直到给某条业务 SQL 对应的表加上索引,问题才得到解决。有一个比较奇怪的现象是:问题持续的过程中,服务器的系统负载、CPU 使用率、磁盘 IO、网络都处于低峰时期的水平,也就是说,问题很可能不是因为硬件资源不够用导致的。那么,根本原因到底是什么?让我们一起来揭晓答案~
2023-05-11 17:42:14
334
原创 MySQL多列字段去重的案例实践
当然,这种在会话级通过改动sql_mode实现的路径,还需要考虑场景,因为缺少only_full_group_by的校验,按照code聚类了,但cdate和ctotal的值很可能是不唯一的,返回的结果,只能准确描述code的数据情况,不能代表cdate和ctotal的真实数据情况。除了distinct,group by子句也可以去重,从需求的理解上,如果按照code做group by,应该就可以得到唯一的code了,但是实际执行,提示这个错误,此时,使用group by,就可以得到想要的效果了,
2023-05-11 17:22:51
394
原创 故障分析 | 执行sed命令卡死CPU消耗100%一例分析
1、注释符号和汉字之间养成使用空格分隔习惯。2、一些低版本工具在某些特殊情况下可能会触发bug,仔细分析及比对,总会找到问题根源。本文关键字:#sed# #cpu# #字符集#
2023-05-09 17:59:17
642
原创 故障分析 | 租户 memstore 内存满问题排查
因为有可能转储或合并之后,某些 MemTable 表又发生了 DML 操作,插入了新的数据,这种情况下,mt_is_frozen = 0、mt_protection_clock!= 9223372036854775807 就是正常的了。排除这种情况之后,剩下的 MemTable 就是冻结异常的表。
2023-04-28 11:15:06
481
原创 故障分析 | 从 Insert 并发死锁分析 Insert 加锁源码逻辑
死锁,作为数据库一个常见的并发问题。此类问题:1.触发原因往往与应用的逻辑相关,参与的事务可能是两个、三个、甚至更多;2.由于不同数据库的锁实现机制几乎完全不同、实现逻辑复杂,还存在多种锁类型;3.数据库发生死锁后,会立即终止部分事务,事后无法看到死锁前的等待状态。即,死锁问题具有业务关联、机制复杂、类型多样等特点,导致当数据库发生死锁问题时,不是那么容易分析。
2023-04-23 16:02:45
189
原创 技术分享 | 如何优雅的删除 Zabbix 的 history 相关历史大表
作者:徐文梁爱可生DBA成员,一个执着于技术的数据库工程师,主要负责数据库日常运维工作。擅长MySQL,redis,其他常见数据库也有涉猎,喜欢垂钓,看书,看风景,结交新朋友。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
2023-04-18 15:26:25
313
原创 故障分析 | 一次规律的 MySQL 主从延迟跳变
是的,从官方文档中我们可以看到,IO线程启动后,Seconds_Behind_Master在计算时确实会自动减去时间差,但很重要的一个前提是,这个时间差异在IO线程启动后"不会发生变化"。既然出现了规律性的变化,那么我们可以通过一个简单的命令来抓取Seconds_Behind_Master的值,观察是否与监控的曲线变化一致。第三,在进行时间校正时,如果时间差异过大,可以分多次进行缓步校正,即控制每次校正的时间幅度,而不是通过一次操作就校正为正确的时间,这样也可以在一定程度上降低对业务的影响。
2023-04-18 15:01:23
175
原创 故障分析 | OceanBase 一则函数报错问题分享
dbms_random 系统包存放在 OceanBase 安装目录下的 admin 子目录里,包含两个 SQL 文件,一个是包的声明 SQL:dbms_random.sql;直到最后经过和 Oracle 环境的对比,我才发现是 PLSQL 分隔符的问题。OceanBase 的 Oracle 租户里默认 PLSQL 的分隔符是/,刚好和除法/冲突,这样遇到除法符号就以为是函数定义结束,所以报语法错误。于是我把这个函数在我本地的 Oracle 环境中执行,一切正常:看来是 OceanBase 自身的环境问题。
2023-04-18 14:59:40
842
原创 故障分析 | 报错 ERROR 5270 -HY000-- object not in RECYCLE BIN 引发的几个思考
删除对象时,需要开启回收站,对象才会保存在回收站中;即使回收站关闭,我们也能看到回收站中的对象;即使回收站关闭,我们也能操作(闪回/清除)回收站中的对象;回收站中可以保存同名的对象,根据ORIGINAL_NAME闪回时,会闪回最新删除的对象,历史对象还会保存在回收站中;把对象从回收站中删除时,因为需要使⽤OBJECT_NAME(唯⼀属性),所以只会命中⼀条记录;
2023-04-18 14:55:44
358
原创 技术分享 | OMS 初识
作者:高鹏DBA,负责项目日常问题排查,广告位长期出租。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文主要贡献者:进行OMS源码分析的@操盛春(北分之光)
2023-04-18 14:52:41
397
原创 技术分享 | OceanBase 使用全局索引的必要性
比如语句:select * from p1 where id = 9;id 为分区键,可以直接定位到具体的表分区partitions(p9),仅需扫描一行记录。
2023-04-18 14:50:21
662
原创 故障分析 | 数据库服务器内存不足一例分析
作者:付祥现居珠海,主要负责 Oracle、MySQL、mongoDB 和 Redis 维护工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
2023-04-18 14:47:57
427
原创 技术分享 | OceanBase 手滑误删了数据文件怎么办
数据文件损坏或者丢失时,可通过调整参数 server_permanent_offline_time 来重建受影响的节点。1.设小 server_permanent_offline_time 阈值2.停止故障节点对外服务3.终止该节点进程。4.超过阈值后,节点将被标记为永久下线,系统会自动清空副本以及向同zone内其他节点迁移数据。5.启动 OB 进程,自动触发重建节点数据。6.开启故障节点服务。7.把server_permanent_offline_time参数改回原来的值。
2023-04-18 14:38:45
893
原创 技术分享 | MySQL级联复制下进行大表的字段扩容
使用级联,对于业务侧来说,时间成本主要在应用更改连接和回归验证。如果从库无流量,不需要等待业务低峰。OnlineDDL可通过修改参数,提高效率,其中双一参数会影响数据安全,推荐业务低峰期操作。Gh-ost 适合变更时间宽裕的场景,业务低峰期操作,可调整参数加快进度,自定义切换的时间。以上方式均不推荐多个DDL同时进行,即并行DDL。大表操作和大数据量操作,需要我们贴合场景找到合适的变更方案,不需要最优,需要合适。福利时间:分享一个速查表。
2023-04-18 14:32:09
372
原创 新特性解读 | MySQL 8.0 REDO 归档目录权限问题
作者:杨涛涛资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。特分享出来最近在整理 MySQL 热备工具的实验题目时遇到的 REDO 日志归档问题!
2023-04-18 14:30:50
536
原创 技术分享 | observer 资源水位介绍
作者:郭斌斌爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。OceanBase 集群界面会展示 Observer 的资源水位,今天简单了解一下资源水位的数值代表的含义以及关联参数现有 test_1 集群,只有一个sys租户Sys租户的资源配置: Cpu:2.5-5 Memory: 3G-3G Unit:1集群的资源水位信息。
2023-04-11 17:19:19
780
原创 故障分析 | 从一则错误日志到 MySQL 认证机制与 bug 的深入分析
根据以上认证过的分析,导致错误日志存在 PLUGIN_SHA256_PASSWORD 将被废弃的根本原因为:在当前版本,当使用不存在的用户登录数据库时,mysql会随机选择用户的密码认证插件,在当前的版本版本中,有1/3的概率会选择到 PLUGIN_SHA256_PASSWORD 插件。选择该插件后,在后续的认证逻辑将会触发警告日志生成。
2023-04-11 17:13:17
392
原创 OB运维 | tenant--删除租户的流程设计
作者:姚嵩不知道是地球人还是外星人,知道的可以留言告诉小编…本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
2023-03-23 09:49:13
225
原创 技术分享 | OceanBase 里的 BUFFER 表
所谓 BUFFER 表指的是某张表(表记录数可能并不多)被频繁的全量更新(所有记录被执行批量 DML 操作)、按一定比率更新(比如20%的记录被执行批量DML操作),短时间又对这张表进行全量检索,性能急剧下降或者说比之前性能有明显降低的这样一种现象。之前我以为 BUFFER 表就是全局临时表或者说是类似 MySQL 一次性整体导入的 MyISAM 表,对这类表的操作无非是划出一块内存区域对其进行读写,来避免频繁的 IO 操作。*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
2023-03-23 09:47:56
210
原创 技术分享 | 可能是目前最全的 MySQL 8.0 新特性解读(下)
作者:马文斌MySQL爱好者,任职于蓝月亮(中国)有限公司。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
2023-03-21 14:51:10
232
原创 技术分享 | 可能是目前最全的 MySQL 8.0 新特性解读(上)
作者:马文斌MySQL爱好者,任职于蓝月亮(中国)有限公司。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
2023-03-21 14:49:20
197
原创 技术分享 | PBM备份恢复
Percona Backup for MongoDB(PBM)是一个针对MongoDB副本集和分片的一致性备份开源工具,它支持逻辑备份、物理备份、增量备份以及选择性备份和恢复等特性,并且支持Point-in-Time恢复到指定时间点。但非常可惜的是物理备份相关功能目前仅适用于Percona Server for MongoDB的分支,因此下面主要围绕逻辑备份与Point-in-Time来展开,MongoDB Community版本要求4.0及以上。
2023-03-21 14:28:03
83
原创 OB运维 | tenant--删除租户的命令
删除租户后,租户下的数据库和表也同时被删除。但是租户使⽤的资源配置不会被删除,资源配置可以继续给其他租户使⽤。
2023-03-21 14:22:10
134
原创 故障分析 | Redis 主从复制风暴
Redis 主从架构下,使用默认的异步复制模式来同步数据,其特点是低延迟和高性能。当 Redis master 下有多个 slave 节点,且 slave 节点无法进行部分重同步时, slave 会请求进行全量数据同步,此时 master 需要创建 RDB 快照快照发送给 slave ,从节点收到 RDB 快照到开始解析与加载。
2023-03-21 14:19:13
164
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人