MySQL:简单记录删除binary log的接口
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下:
如果图片不能显示可查看下面链接:
https://www.jianshu.com/p/d636215d767f
一、栈帧
#0 my_delete (name=0x7ffff0fa0490 "./binlog.000005", MyFlags=0) at /root/softm/percona-server-5.7.22-22/mysys/my_delete.c:25#1 0x000000000186416f in inline_mysql_file_delete (key=2, src_file=0x2293340 "/root/softm/percona-server-5.7.22-22/sql/binlog.cc", src_line=6735, name=0x7ffff0fa0490 "./binlog.000005", flags=0) at /root/softm/percona-server-5.7.22-22/include/mysql/psi/mysql_file.h:1331#2 0x0000000001871497 in MYSQL_BIN_LOG::purge_index_entry (this=0x2e39c40, thd=0x7fffa4000b70, decrease_log_space=0x0, need_lock_index=false) at /root/softm/percona-server-5.7.22-22/sql/binlog.cc:6735#3 0x0000000001870b35 in MYSQL_BIN_LOG::purge_logs (this=0x2e39c40, to_log=0x7ffff0fa0a80 "./binlog.000007", included=false, need_lock_index=true, need_update_threads=true, decrease_log_space=0x0, auto_purge=false) at /root/softm/percona-server-5.7.22-22/sql/binlog.cc:6495#4 0x0000000001868839 in purge_master_logs (thd=0x7fffa4000b70, to_log=0x7fffa4006570 "binlog.000007") at /root/softm/percona-server-5.7.22-22/sql/binlog.cc:3127#5 0x00000000015b7874 in mysql_execute_command (thd=0x7fffa4000b70, first_level=true) at /root/softm/percona-server-5.7.22-22/sql/sql_parse.cc:2989#6 0x00000000015c0362 in mysql_parse (thd=0x7fffa4000b70, parser_state=0x7ffff0fa2600) at /root/softm/percona-server-5.7.22-22/sql/sql_parse.cc:5901#7 0x00000000015b3ef6 in dispatch_command (thd=0x7fffa4000b70, com_data=0x7ffff0fa2d70, command=COM_QUERY) at /root/softm/percona-server-5.7.22-22/sql/sql_parse.cc:1490#8 0x00000000015b2c83 in do_command (thd=0x7fffa4000b70) at /root/softm/percona-server-5.7.22-22/sql/sql_parse.cc:1021#9 0x00000000016fb8fc in handle_connection (arg=0x38f2910) at /root/softm/percona-server-5.7.22-22/sql/conn_handler/connection_handler_per_thread.cc:312#10 0x0000000001932112 in pfs_spawn_thread (arg=0x3860a50) at /root/softm/percona-server-5.7.22-22/storage/perfschema/pfs.cc:2190#11 0x00007ffff7bc6aa1 in start_thread () from /lib64/libpthread.so.0#12 0x00007ffff6719bcd in clone () from /lib64/libc.so.6
二、大概过程
整个删除过程大概是:
- 先提取需要删除的binary log 记录到一个 临时的index文件binlog.~rec~中。
- 将需要保留的binary log文件存放到一个叫做binlog.index_crash_safe的文件中。
- 将原有的binlog.index进行删除,将binlog.index_crash_safe重新命名为binlog.index。
下面是中间时刻的文件列表。
-rw-r----- 1 root root 80 Jun 26 10:25 binlog.index-rw-r----- 1 root root 32 Jun 26 10:38 binlog.~rec~-rw-r----- 1 root root 48 Jun 26 10:39 binlog.index_crash_safe
- 然后就删除binlog.~rec~记录中的binary log文件。
- 最后删除binlog.~rec~文件。整个过程集中在。
函数MYSQL_BIN_LOG::purge_logs中,我们可以将断点设置在my_delete函数上很容易看出这种过程。
下面是我的debug中的一部分:
(gdb) p purge_index_file->file$6 = 61OS中我们可以看到这个文件描述符为61 -> /root/softm/percona-server-5.7.22-22/mysql-test/var/mysqld.1/data/binlog.~rec~
文件
过程
函数
主从
原理
图片
断点
时刻
链接
接口
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
大创网络安全项目
网络安全领域核心龙头
计算机网络技术对口专业
如何设置数据库默认路径
网络安全与教育心得
关于网络安全职责分工的通知
暨南大学网络安全改革
卓文网络技术学院
个软件开发模型的适用
阿里云服务器稳定
特岗未满服务器是否留任入编
国家网络安全局温锐松
券商交易软件开发属于什么部门
数据库sql举例
网络无法识别连接服务器
公安厅网络安全科长
成都安迈云网络技术
自学软件开发翻身
软件开发商如何计算利润
数据库中全体
混沌理论和软件开发的关系
27做软件开发 没经验
女孩子学习软件开发
外码添加数据库
秦风网络技术有限公司
服务器连接的基本原理
江苏火火网络技术有限公司
通信网络安全保护系列标准
服务器需要装office
北京银联网络技术服务信息中心