• ADADADADAD

    MySQL:简单记录删除binary log的接口[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:10:07

    作者:文/会员上传

    简介:

    欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下:![image.png](https://upload-images.jianshu.io/upload_images/7398834-0ffa3bdc078cddf4.png?imageMogr2/auto-orient/s

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下:

    ![image.png](https://upload-images.jianshu.io/upload_images/7398834-0ffa3bdc078cddf4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    如果图片不能显示可查看下面链接:

    https://www.jianshu.com/p/d636215d767f



    一、栈帧
    #0my_delete(name=0x7ffff0fa0490"./binlog.000005",MyFlags=0)at/root/softm/percona-server-5.7.22-22/mysys/my_delete.c:25#10x000000000186416fininline_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#20x0000000001871497inMYSQL_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#30x0000000001870b35inMYSQL_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#40x0000000001868839inpurge_master_logs(thd=0x7fffa4000b70,to_log=0x7fffa4006570"binlog.000007")at/root/softm/percona-server-5.7.22-22/sql/binlog.cc:3127#50x00000000015b7874inmysql_execute_command(thd=0x7fffa4000b70,first_level=true)at/root/softm/percona-server-5.7.22-22/sql/sql_parse.cc:2989#60x00000000015c0362inmysql_parse(thd=0x7fffa4000b70,parser_state=0x7ffff0fa2600)at/root/softm/percona-server-5.7.22-22/sql/sql_parse.cc:5901#70x00000000015b3ef6indispatch_command(thd=0x7fffa4000b70,com_data=0x7ffff0fa2d70,command=COM_QUERY)at/root/softm/percona-server-5.7.22-22/sql/sql_parse.cc:1490#80x00000000015b2c83indo_command(thd=0x7fffa4000b70)at/root/softm/percona-server-5.7.22-22/sql/sql_parse.cc:1021#90x00000000016fb8fcinhandle_connection(arg=0x38f2910)at/root/softm/percona-server-5.7.22-22/sql/conn_handler/connection_handler_per_thread.cc:312#100x0000000001932112inpfs_spawn_thread(arg=0x3860a50)at/root/softm/percona-server-5.7.22-22/storage/perfschema/pfs.cc:2190#110x00007ffff7bc6aa1instart_thread()from/lib64/libpthread.so.0#120x00007ffff6719bcdinclone()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-----1rootroot80Jun2610:25binlog.index-rw-r-----1rootroot32Jun2610:38binlog.~rec~-rw-r-----1rootroot48Jun2610:39binlog.index_crash_safe
    然后就删除binlog.~rec~记录中的binary log文件。最后删除binlog.~rec~文件。整个过程集中在。
    函数MYSQL_BIN_LOG::purge_logs中,我们可以将断点设置在my_delete函数上很容易看出这种过程。

    下面是我的debug中的一部分:

    (gdb)ppurge_index_file->file$6=61OS中我们可以看到这个文件描述符为61->/root/softm/percona-server-5.7.22-22/mysql-test/var/mysqld.1/data/binlog.~rec~


    MySQL:简单记录删除binary log的接口.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlbinarylog