
技术分享
文章平均质量分 86
爱可生开源社区
成立于 2017 年,以开源高质量的运维工具、日常分享技术干货内容、持续的全国性的社区活动为社区己任;目前开源的产品有:SQL审核工具 SQLE,分布式中间件 DBLE、数据传输组件DTLE。
展开
-
MySQL 隐式转换必知必会
在生产环境中经常会有一些隐式类型转换导致SQL索引失效,性能极差,进而影响影响集群负载和业务的情况。本文总结了隐式转换常见的场景,在生产中要尽量避免 SQL 隐式转换的出现。原创 2024-05-21 17:13:23 · 597 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 05 期 | 读事务和只读事务的变形记
如果执行的第一条 SQL 语句是 update 或 delete,在 SQL 语句执行过程中,读事务会变成读写事务,只读事务会分配事务 ID 和用户临时表的回滚段。如果执行的第一条 SQL 语句是 select,在后续第一次执行 insert、update、delete 三种语句的其中一种时,读事务会变成读写事务,只读事务会分配事务 ID 和用户临时表的回滚段。分配事务 ID。为用户普通表分配回滚段。把事务对象加入链表。本期问题:关于本期内容,如有问题,欢迎留言交流。下期预告。原创 2024-01-31 15:22:25 · 1095 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 04 期 | 终于要启动事务了
InnoDB 开启内部事务,是为了改变表中数据,所以,内部事务都以读写事务的身份启动。执行的第一条 SQL 语句是 select、update、delete,以读事务身份启动事务。执行的第一条 SQL 语句是 insert,以读写事务身份启动事务。如果只读事务执行的第一条 SQL 语句是插入记录到用户临时表的 insert,也会分配事务 ID。本期问题:mysql_trx_list、rw_trx_list 这两个链表分别用来干什么?欢迎留言交流。下期预告。原创 2024-01-24 13:20:51 · 931 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 01 期 | 事务的起源:事务池和管理器的初始化
InnoDB 只有一个事务池管理器,用于管理 N 个事务池(N >= 1),每个事务池可以管理 4228 个事务对象。MySQL 启动过程中,InnoDB 会先创建事务管理器。事务管理器会创建一个事务池,初始化 16 个事务对象放入事务池的事务队列。MySQL 运行过程中,如果这 16 个事务对象都正在被使用,InnoDB 需要一个新的事务对象时,会一次性初始化剩余的 4212 个事务对象并放入事务池的事务队列。本期问题:运行过程中,创建一个新的事务池,会分配多少内存?初始化多少个事务对象?原创 2024-01-04 14:56:36 · 1014 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 02 期 | MySQL 中 BEGIN 语句会马上启动事务吗?
一句话总结:BEGIN 语句执行过程中,要做的事情就是辞旧(提交老事务)迎新(准备新事务),并不会马上启动一个新事务。本期问题:对于 START TRANSACTION 同时指定 READ WRITE、READ ONLY,除了报错,你还有别的思路解决这个问题吗?欢迎大家留言交流。下期预告:我是一个事务,请给我一个对象。原创 2024-01-10 13:16:35 · 1294 阅读 · 0 评论 -
MySQL 核心模块揭秘 | 03 期 | 我是一个事务,请给我一个对象
先从事务池的事务队列中分配一个对象。如果事务队列中没有可用的事务对象,就初始化事务池的剩余小块内存,从得到的事务对象中分配一个对象。如果所有事务池都没有剩余未初始化的小块内存,就创建一个新的事务池,并从中分配一个事务对象。本期问题:InnoDB 怎么没有把内部事务也放入链表?欢迎大家留言交流。下期预告:准备那么久,终于要启动 InnoDB 事务了。原创 2024-01-17 14:12:51 · 937 阅读 · 0 评论 -
OceanBase 安全审计之身份鉴别
本文主要以 MySQL 和 OceanBase 对比的方式,来介绍 OceanBase(MySQL 模式)安全体系中关于身份鉴别的相关内容,包括身份鉴别机制、用户名组成、密码复杂度、密码过期策略等。作者:金长龙爱可生测试工程师,负责 DMP 产品的测试工作。原创 2023-06-12 17:15:58 · 1094 阅读 · 0 评论 -
MySQL 升级到 8.0 变慢问题分析
前段时间,客户线上 MySQL 版本从 5.7.29 升级到 8.0.25。升级完成之后,放业务请求进来,没到一分钟就开始出现慢查询,然后,慢查询越来越多,业务 SQL 出现堆积。整个过程持续了大概一个小时,直到给某条业务 SQL 对应的表加上索引,问题才得到解决。有一个比较奇怪的现象是:问题持续的过程中,服务器的系统负载、CPU 使用率、磁盘 IO、网络都处于低峰时期的水平,也就是说,问题很可能不是因为硬件资源不够用导致的。那么,根本原因到底是什么?让我们一起来揭晓答案~原创 2023-05-11 17:42:14 · 2368 阅读 · 0 评论 -
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 · 1234 阅读 · 0 评论 -
技术分享 | 如何优雅的删除 Zabbix 的 history 相关历史大表
作者:徐文梁爱可生DBA成员,一个执着于技术的数据库工程师,主要负责数据库日常运维工作。擅长MySQL,redis,其他常见数据库也有涉猎,喜欢垂钓,看书,看风景,结交新朋友。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-04-18 15:26:25 · 728 阅读 · 0 评论 -
技术分享 | OMS 初识
作者:高鹏DBA,负责项目日常问题排查,广告位长期出租。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文主要贡献者:进行OMS源码分析的@操盛春(北分之光)原创 2023-04-18 14:52:41 · 901 阅读 · 0 评论 -
技术分享 | 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 · 1309 阅读 · 0 评论 -
技术分享 | OceanBase 使用全局索引的必要性
比如语句:select * from p1 where id = 9;id 为分区键,可以直接定位到具体的表分区partitions(p9),仅需扫描一行记录。原创 2023-04-18 14:50:21 · 1117 阅读 · 0 评论 -
技术分享 | observer 资源水位介绍
作者:郭斌斌爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。OceanBase 集群界面会展示 Observer 的资源水位,今天简单了解一下资源水位的数值代表的含义以及关联参数现有 test_1 集群,只有一个sys租户Sys租户的资源配置: Cpu:2.5-5 Memory: 3G-3G Unit:1集群的资源水位信息。原创 2023-04-11 17:19:19 · 1054 阅读 · 0 评论 -
技术分享 | 可能是目前最全的 MySQL 8.0 新特性解读(上)
作者:马文斌MySQL爱好者,任职于蓝月亮(中国)有限公司。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-03-21 14:49:20 · 656 阅读 · 0 评论 -
技术分享 | 可能是目前最全的 MySQL 8.0 新特性解读(下)
作者:马文斌MySQL爱好者,任职于蓝月亮(中国)有限公司。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-03-21 14:51:10 · 643 阅读 · 0 评论 -
OB运维 | tenant--删除租户的命令
删除租户后,租户下的数据库和表也同时被删除。但是租户使⽤的资源配置不会被删除,资源配置可以继续给其他租户使⽤。原创 2023-03-21 14:22:10 · 361 阅读 · 0 评论 -
技术分享 | OceanBase 租户延迟删除
作者:杨涛涛资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-03-13 14:50:51 · 546 阅读 · 0 评论 -
技术分享 | LSM-Tree 和 OceanBase 分层转储
官方对于参数minor_compact_trigger的解释:“minor_compact_trigger 用于控制分层转储触发向下一层下压的阈值。当该层的 Mini SSTable 总数达到设定的阈值时,所有 SSTable 都会被下压到下一层,组成新的 Minor SSTable。如上测试时我们设置的minor_compact_trigger = 2,按理解在每两次触发MINI_MERGE之后,就会触发一次MINOR_MERGE,把L0层的SSTable下压到L1层。原创 2023-03-13 14:49:49 · 964 阅读 · 0 评论 -
OB运维 | 连接 kill 中的 session_id
1.视图 information_schema.processlist 的数据来源于 表oceanbase.__all_virtual_processlist;命令 “show create table information_schema.processlist \G” 可以确认。2.表oceanbase.__all_virtual_processlist 中记录的是所有到OB的连接信息;客户可能直连observer,也可能是通过obproxy连接OB,所有连接信息都会记录到表中;原创 2023-03-02 10:42:29 · 825 阅读 · 0 评论 -
技术分享 | OceanBase 集群扩容缩容
作者:杨文DBA,负责客户项目的需求与维护,会点数据库,不限于MySQL、Redis、Cassandra、GreenPlum、ClickHouse、Elastic、TDSQL等等。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-03-02 10:46:56 · 1219 阅读 · 0 评论 -
技术分享 | 使用 sync_diff_inspector 对两个 MySQL 进行数据校验
sync-diff-inspector 是由 PingCAP 开源的数据校验工具,用于校验MySQL/TiDB中两份数据是否一致。对比表结构和数据如果数据不一致,则生成用于修复数据的 SQL 语句支持不同库名或表名的数据校验支持分库分表场景下的数据校验支持 TiDB 主从集群的数据校验支持从 TiDB DM 拉取配置的数据校验sync-diff-inspector 的使用限制。原创 2023-03-02 10:45:26 · 572 阅读 · 0 评论 -
技术分享 | OceanBase 资源及租户管理
作者:何文超爱可生南区交付服务部 DBA 团队成员,主要负责MySQL故障处理,MySQL高可用架构改造,OceanBase相关技术支持。爱好足球,羽毛球。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-02-22 10:39:45 · 2010 阅读 · 0 评论 -
技术分享 | OceanBase 数据处理之控制文件
作者:杨文DBA,负责客户项目的需求与维护,会点数据库,不限于MySQL、Redis、Cassandra、GreenPlum、ClickHouse、Elastic、TDSQL等等。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-02-21 14:22:24 · 2016 阅读 · 0 评论 -
技术分享 | 浅谈一下大页
运维中为避免字符集引起的报错问题,有如下建议可供参考:(具体参数值根据业务需求选择)创建数据库实例时需指定参数 character_set_database(默认值:utf8mb4),character_set_server(默认值:utf8mb4)。当需要创建非默认字符集 database / table 时,需要在 sql 中明确指定字符集和排序规则。使用convert函数转换字符集时,当字段排序规则不是转换后字符集的默认排序规则,需要指定具体的排序规则。原创 2023-02-09 12:16:02 · 422 阅读 · 0 评论 -
技术分享 | 使用 RPM 部署 Oceanbase Proxy
作者:贲绍华爱可生研发中心工程师,负责项目的需求与维护工作。其他身份:柯基铲屎官。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-02-02 13:28:16 · 935 阅读 · 0 评论 -
技术分享 | MySQL 覆盖索引优化案例一则
根据2-8原则,可能我们平时碰到的SQL优化,很多都可以用基础的知识解决,只有一小部分,需要一些技巧,或者更深层次的知识,但这些所谓的基础知识,“了解"和"理解”,存在着区别,单从知识来讲,可能都知道是怎么个原理,但当碰到实际的场景,能不能将知识运用到实践中,就取决于对知识的理解程度了,这个不仅仅指数据库领域,其它任何领域,都是相通的,学习知识,重要的是能应用到实践中,能做到举一反三,这个的前提就是对知识是不是真正理解了,而不是停留在表面上。)复合索引的数据,还需要回表,访问数据行。CASE WHEN…原创 2023-02-02 17:45:00 · 237 阅读 · 1 评论 -
技术分享 | Redis 持久化之 RDB 与 AOF
RDB持久化方式能够在指定的时间间隔内(N秒内有M次改动时),对实例的数据进行快照存储,也就是全备的意思。AOF持久化方式即增备,记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。AOF命令以redis协议追加保存每次写的操作到文件末尾。Redis还能对AOF文件进行重写压缩,使得AOF文件的体积不至于过大。原创 2023-01-17 15:04:31 · 546 阅读 · 0 评论 -
技术分享 | ClickHouse & StarRocks 使用经验分享
总结一下,如果是需要分析日志流数据,更加推荐 ClickHouse ,因为 ClickHouse 单机强悍,可以支撑亿级别数据量,架构简单,相比于 StarRocks 也更加稳定,相比集群,更推荐单机 ClickHouse。如果是分析业务流数据,更加推荐 StarRocks ,因为 StarRocks 对于更新场景性能更加,而且 JOIN 性能更好,而且更加推荐部署 StarRocks 集群,可以充分发挥 StarRocks 的性能。原创 2023-01-17 15:03:02 · 1572 阅读 · 0 评论 -
技术分享 | OceanBase 4.X 最小化单机部署
作者:杨涛涛资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-01-16 13:25:35 · 1886 阅读 · 0 评论 -
技术分享 | MySQL Shell 收集 MySQL 诊断报告(上)
无主键的表死索引的表MySQL错误日志二进制日志元数据副本集状态(包含主库和从库)InnoDB Cluster 监控数据表锁、行锁等数据当前连接会话数据当前内存数据当前状态变量数据当前MySQL 慢日志(需主动开启开关)OS 数据(CPU、内存、IO、网络、MySQL进程严重错误日志过滤等)函数collect_diagnostics 有两个入参:一个是输出路径;另一个是可选字典配置选项,比如可以配置慢日志收集、定制执行SQL 语句、定制执行SHELL命令等等。原创 2023-01-16 13:23:38 · 721 阅读 · 0 评论 -
技术分享 | Redis 之分布式锁
分布式锁指的就是分布式系统下使用的锁(说了好像等于没说),在分布式系统中,常常需要协调组件间的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,这个时候,便需要使用到分布式锁。原创 2023-01-05 13:31:40 · 307 阅读 · 0 评论 -
技术分享 | 一款功能全面的 MySQL Shell 插件
作者:杨涛涛资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2023-01-05 13:26:25 · 470 阅读 · 0 评论 -
技术分享 | 新手如何调试 OceanBase
observer调试有三种⽅法:⽇志,gdb调试,vscode调试(本质上是gdb或lldb)。这里我们关注如何借助vscode进行调试调试版本OB代码基线:开源版本,社区版,3.1.5调试方式采用本地开发工具+远程gdb方式本地指的是调试者的电脑(windows或mac)远程指的是observer和gdb所在的linux服务器。原创 2023-01-05 13:17:56 · 780 阅读 · 0 评论 -
技术分享 | 缓存穿透 - Redis Module 之布隆过滤器
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。Redis提供了一个扩展模块的入口,使用户可以根据需要额外集成一些实用功能。官网连接:https://redis.io/resources/modules下边列出一些常见的功能模块。原创 2022-12-21 16:17:39 · 582 阅读 · 0 评论 -
技术分享 | MySQL 多版本并发控制「MVCC」
作者:贲绍华爱可生研发中心工程师,负责项目的需求与维护工作。其他身份:柯基铲屎官。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。原创 2022-12-15 15:02:52 · 487 阅读 · 0 评论 -
技术分享 | 使用 SQL 语句来简化 show engine innodb status 的结果解读
熟悉 MySQL 的同学,一定对如何实时监控InnoDB表内部计数器非常了解。 就一条命令:show engine innodb status ;这条命令非常简单,但是其结果的可读性却比较差! 那如何能简化输出,并且增加其结果的可读性呢?MySQL 本身有一张表,在元数据字典库里,表名为innodb_metrics。这张表用来记录 InnoDB 表内部的计数器:目前 MySQL 8.0.31 最新版有314个计数器模块。那这些计数器跟我们开头说的 show engine innodb status 有没有原创 2022-12-06 17:17:43 · 397 阅读 · 0 评论 -
技术分享 | Redis 集群架构解析
当我们只使用一台 Redis 实例也就是 Single 架构时,需要考虑一些非常实际的问题,如:单节点一但宕机则业务停摆、单节点的容量不可能是无限制的、性能同样存在瓶颈等…集群架构模式最主要的三个目的就是:高可用、提升资源限制瓶颈、提升网络吞吐:Redis Sentinel 是一个分布式系统, 可以在一个架构中运行多个 Sentinel 进程(progress)这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)原创 2022-12-06 17:14:08 · 206 阅读 · 0 评论 -
技术分享 | SQL 优化:ICP 的缺陷
ICP全称 Index Condition Pushdown,也就是常说的索引条件下推,在之前的一篇文章中介绍过它:explain 执行计划详解2–Extra使用二级索引查找数据时,where 子句中属于索引的一部分但又无法使用索引的条件,MySQL会把这部分条件下推到存储引擎层,筛选之后再进行回表,这样回表的次数就减少了。比如有这样一个索引查询语句的执行过程:1.根据 这个条件从 idx_test 索引中查找数据,假设返回数据 10万行;2.查找出来的10万行数据包含 hire_date 字段,MyS原创 2022-12-06 17:12:53 · 397 阅读 · 0 评论 -
技术分享 | OceanBase 在 Ubuntu 平台部署
OceanBase 在官方文档中提到支持的 OS 列表包括 CENTOS 、UBUNTU 、DEBIAN 等等,但是软件源只提供 CENTOS 版本,无法直接在其他平台远程自动部署。但是对于我这种喜欢用 UBUNTU / DEBIAN 系统的用户来讲,就稍感欠缺!OCP 平台本身对硬件(官方文档推荐配置CPU为32C,内存为128GB,磁盘为1.5TB ,并且要求 SSD)要求极高,故个人把玩的概率不大。通过这种方式部署,只要满足 OceanBase 本身对硬件的要求即可。比如可以用最低 2C ,8GB 的原创 2022-12-06 17:11:51 · 1366 阅读 · 0 评论