随笔分类 - MySQL
摘要:最近一个MySQL 5.7.21备库告警当天的备份失败,登录上去看的时候发现前一天的备份任务还没有结束,通过查看日志发现无法备份成功的原因是一直无法获取FTWRL锁,登录MySQL查看会话状态发现其中几个复制worker一致处于异常状态,下发STOP SLAVE命令时命令也一直被卡住,当时的会话状态
阅读全文
摘要:内存统计信息的聚合 内存统计信息的聚合总共有5个维度,也分别对应以下5张表,分别是: MEMORY_SUMMARY_BY_ACCOUNT_BY_EVENT_NAME MEMORY_SUMMARY_BY_HOST_BY_EVENT_NAME MEMORY_SUMMARY_BY_THREAD_BY_EV
阅读全文
摘要:内存监控接口则是PSI_memory_service_v2对象数组中的函数,具体的相关函数有:pfs_memory_alloc_vc、pfs_memory_realloc_vc、pfs_memory_claim_vc、pfs_memory_free_vc。 内存跟踪的相关数据结构 PFS监控信息的存
阅读全文
摘要:InnoDB存储引擎层基础内存分配 如果在编译MySQL的时候不开启FPS的监控,InnoDB对动态内存(heap)的分配和释放使用基础的new、delete、malloc、free等。 默认InnoDB对内存的分配和回收会添加FPS的监控模块。InnoDB对动态内存(heap)的分配和回收使用封装
阅读全文
摘要:SETUP_INSTRUMENTS表 首先看一下PERFORMANCE_SCHEMA.SETUP_INSTRUMENTS的表结构: CREATE TABLE `setup_instruments` ( `NAME` varchar(128) NOT NULL, `ENABLED` enum('YES
阅读全文
摘要:MySQL的"commit"命令提交事务时,内部会进行两阶段提交,这篇文章基于MySQL 8.0.33源码分析一下MySQL的两阶段提交。 整体逻辑整理如下: Prepare阶段: 1. Binlog Prepare 1.1 获取上一个事务最大的last committed时间戳 2. Innodb
阅读全文
摘要:DROP TABLE的堆栈 #0 row_drop_table_from_cache (tablename=0x7f7d580295b0 "db/t", table=0x7f7d58008b20, trx=0x7f7e50c0b150) at /root/mysql-5.7.32/storage/i
阅读全文
摘要:STOP REPLICA的用户线程堆栈: #0 0x00007f73d8878de2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00000000048d9f56 in native_cond_
阅读全文
摘要:从MySQL 8.0.23版本开始,CHANGE MASTER TO开始被替换为CHANGE REPLICATION SOURCE TO,下面使用MySQL 8.0.32的代码分析语句的具体执行流程。 从语句的入口函数mysql_execute_command开始,在命令执行之前首先会检查语句执行用
阅读全文
摘要:源码编译安装MySQL Debug版本 安装依赖包 ## 5.7 yum -y install ncurses-devel bison openssl-devel cmake centos-release-scl devtoolset-7 scl enable devtoolset-7 bash #
阅读全文
摘要:随着MySQL版本的不断更新,对DDL操作的支持也在不断的完善和更新:比如从MySQL 5.6引入Online DDL,在MySQL 5.7对Online DDL进一步完善,到现在的8.0版本,则对DDL的实现重新进行了设计,比如DDL操作支持原子特性,在MySQL 8.0.27引入并行DDL。本篇
阅读全文
摘要:最近客户的一台MySQL Server告警处于TCP TIME_WAIT状态的连接过多,通过查看相关监控发现TCP Connections中处于TIME_WAIT状态的连接一直在3000~4000,如图: 在OS上查看TCP处于TIME_WAIT状态的连接: (其中161服务器是本地的MySQL S
阅读全文
摘要:最近发现客户的一台MySQL 5.7.32实例的监控线程状态一直处于Opening table状态,且都是在对information_schema.tables表做相关查询,如图: 通过show open tables;语句发现opened tables并不算太多: 相关参数也没有太大的不合理性:
阅读全文
摘要:MySQL 8添加了新的clone插件,被用于MGR的分布式恢复当中,也可以用来进行物理备份恢复。但是在进行clone操作的过程中,当拉取数据完成并进行自动重启server时,总是会出现重启失败的现象,如: 日志报错提示RESTART失败,需要在后面手动重启,错误代码3307,即:ERROR 370
阅读全文