• ADADADADAD

    mysql数据库日志binlog保存时效问题如何解决[ mysql数据库 ]

    mysql数据库 时间:2024-11-25 13:36:54 热度:1℃

    作者:文/会员上传 下载docx

    简介:

    一、设置语法1、方法一编辑/etc/my.cnf文件,在[mysqld]节点中增加如下两行max_binlog_size=500Mexpire_logs_days=15max_binlog_size:bin log日志每达到设定大小后,会使用新的b

    以下为本文的正文内容,请查阅,本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一、设置语法1、方法一

    编辑/etc/my.cnf文件,在[mysqld]节点中增加如下两行

    max_binlog_size=500Mexpire_logs_days=15

      max_binlog_size:bin log日志每达到设定大小后,会使用新的bin log日志。如mysql-bin.000002达到500M后,创建并使用mysql-bin.000003文件作为日志记录。

      expire_logs_days:保留指定日期范围内的bin log历史日志,上示例设置的15天内。

      2、方法二
      --mysql8.0以下版本查看当前数据库日志binlog保存时效以天为单位,默认0永不过期,最多只能设置99天showvariableslike'expire_logs_days';setglobalexpire_logs_days=60;--mysql8.0以上版本通过设置全局参数binlog_expire_logs_seconds修改binlog保存时间以秒为单位;默认259200030天144004小时;864001天;2592003天showvariableslike'%binlog_expire_logs_seconds%';setglobalbinlog_expire_logs_seconds=259200;
      二、过期删除策略

      总结:

      通过下面的实验,对于mysql binlog过期删除策略,我们可以做出如下推测。

      1. mysql是根据binlog文件的操作系统最近修改时间,来判断binlog是否过期(而不是根据binlog日志中事物发生的时间)。

      2. 在触发mysql过期删除时,mysql先检查*bin.index文件,找到目前最老的binlog,然后检查该文件的系统时间,会有如下两种情况:

      1) 如果发现该文件未过期,则认为目前没有binlog日志过期,不进行删除,即使此时有其他binlog已过期。

      2) 如果发现该文件已经过期,则会找下一个binlog,判断是否过期,同样存在两种情况(过期或者未过期),如此往复,直到找到第一个过期的binlog 即停止继续查找,并删除该binlog及所有该binlog之前的所有日志

        1. 查看数据库binlog列表

        1)mysql>showbinarylogs;+-----------------+------------+|Log_name|File_size|+-----------------+------------+|3306-bin.000006|1074742033||3306-bin.000007|1074580678||3306-bin.000008|1074739627||3306-bin.000009|250635228||3306-bin.000010|120|+-----------------+------------+5rowsinset(0.00sec)2)ls-lrttotal7402312-rw-r--r--1rootroot1747Mar2510:06test-rw-rw----1mysqlmysql1074742032May416:483306-bin.000006-rw-rw----1mysqlmysql1074580678May416:543306-bin.000007-rw-rw----1mysqlmysql1074739627May417:003306-bin.000008-rw-rw----1mysqlmysql168May417:003306-bin.index-rw-rw----1mysqlmysql250635182May417:023306-bin.000009-rw-rw----1mysqlmysql10448198May2705:04slow3306.log-rw-r-----1mysqlroot1096759May2705:06error3306.log-rw-rw----1mysqlmysql4093675902May2705:06general3306.log##我们看到mysql目前保留着4个binlog日志,序号从6到9,当前正在使用的为序号为9的日志

          2. 设定binlog过期时间

          setglobalexpire_logs_days=7;##在第1步中我们可以看到3306-bin.000006,3306-bin.000007,3306-bin.000008三个日志都是属于过期的(因为3306-bin.000009是当前正在使用的日志,所以不是过期日志)

            3. 修改3306-bin.000006文件系统时间

            使用 vi 查看3306-bin.000006文件,不做任何修改保存退出。

            4. 修改后查看binlog文件时间

            ls-lrttotal7402312-rw-r--r--1rootroot1747Mar2510:06test-rw-rw----1mysqlmysql1074580678May416:543306-bin.000007-rw-rw----1mysqlmysql1074739627May417:003306-bin.000008-rw-rw----1mysqlmysql168May417:003306-bin.index-rw-rw----1mysqlmysql250635182May417:023306-bin.000009-rw-rw----1mysqlmysql10448198May2705:04slow3306.log-rw-r-----1mysqlroot1096759May2705:06error3306.log-rw-rw----1mysqlmysql4093675902May2705:06general3306.log-rw-rw----1mysqlmysql1074742033May2710:133306-bin.000006##3306-bin.000006日志文件已经系统日志已经变成当天时间

              5. flush logs;

              ##我们知道flushlogs;会触发过期日志清除操作

                6. 查看现有binlog

                1)mysql>showbinarylogs;+-----------------+------------+|Log_name|File_size|+-----------------+------------+|3306-bin.000006|1074742033||3306-bin.000007|1074580678||3306-bin.000008|1074739627||3306-bin.000009|250635228||3306-bin.000010|120|+-----------------+------------+5rowsinset(0.00sec)2)ls-lrttotal7402316-rw-r--r--1rootroot1747Mar2510:06test-rw-rw----1mysqlmysql1074580678May416:543306-bin.000007-rw-rw----1mysqlmysql1074739627May417:003306-bin.000008-rw-r-----1mysqlroot1096759May2705:06error3306.log-rw-rw----1mysqlmysql1074742033May2710:133306-bin.000006-rw-rw----1mysqlmysql10448370May2710:14slow3306.log-rw-rw----1mysqlmysql4093676334May2710:14general3306.log-rw-rw----1mysqlmysql250635228May2710:143306-bin.000009-rw-rw----1mysqlmysql120May2710:143306-bin.000010-rw-rw----1mysqlmysql210May2710:143306-bin.index##我们发现3306-bin.000006,3306-bin.000007,3306-bin.000008三个日志并没有被删除(此时3306-bin.000006文件系统时间为当天,3306-bin.000007和3306-bin.000008文件时间都是4号)

                  7. purge 最早的3306-bin.000006日志

                  1)mysql>purgemasterlogsto'3306-bin.000007';QueryOK,0rowsaffected(0.31sec)2)mysql>showbinarylogs;+-----------------+------------+|Log_name|File_size|+-----------------+------------+|3306-bin.000007|1074580678||3306-bin.000008|1074739627||3306-bin.000009|250635228||3306-bin.000010|120|+-----------------+------------+4rowsinset(0.01sec)3)ls-lrttotal6352756-rw-r--r--1rootroot1747Mar2510:06test-rw-rw----1mysqlmysql1074580678May416:543306-bin.000007-rw-rw----1mysqlmysql1074739627May417:003306-bin.000008-rw-r-----1mysqlroot1096759May2705:06error3306.log-rw-rw----1mysqlmysql10448370May2710:14slow3306.log-rw-rw----1mysqlmysql250635228May2710:143306-bin.000009-rw-rw----1mysqlmysql120May2710:143306-bin.000010-rw-rw----1mysqlmysql168May2710:173306-bin.index-rw-rw----1mysqlmysql4093676603May2710:17general3306.log##3306-bin.000006日志已经被删除

                    8. 再次flush logs;

                    1)flushlogs;mysql>flushlogs;QueryOK,0rowsaffected(0.30sec)2)查看binlogmysql>showbinarylogs;+-----------------+-----------+|Log_name|File_size|+-----------------+-----------+|3306-bin.000009|250635228||3306-bin.000010|166||3306-bin.000011|120|+-----------------+-----------+3rowsinset(0.00sec)ls-lrttotal4253804-rw-r--r--1rootroot1747Mar2510:06test-rw-r-----1mysqlroot1096759May2705:06error3306.log-rw-rw----1mysqlmysql250635228May2710:143306-bin.000009-rw-rw----1mysqlmysql10448542May2710:17slow3306.log-rw-rw----1mysqlmysql4093676814May2710:17general3306.log-rw-rw----1mysqlmysql166May2710:173306-bin.000010-rw-rw----1mysqlmysql120May2710:173306-bin.000011-rw-rw----1mysqlmysql126May2710:173306-bin.index##此时我们发现3306-bin.000007,3306-bin.000008日志已经被自动删除

                      9.获取binlog文件列表

                      showbinarylogs;

                        查看指定binlog文件的内容

                        showbinlogeventsin'mysql-bin.000002';

                          只查看第一个binlog文件的内容

                          showbinlogevents;
    mysql数据库日志binlog保存时效问题如何解决.docx

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

    推荐度:

    下载
    热门标签: mysqlbinlog
    ADADAD