二进制日志BINARY LOG清理

mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       126 |
| mysql-bin.000002 |       150 |
| mysql-bin.000003 |       150 |
| mysql-bin.000004 |       150 |
| mysql-bin.000005 |       107 |
+------------------+-----------+
5 rows in set (0.00 sec)

删除列于指定日志之前的所有日志,但不包括指定的日志:

mysql> purge binary logs to ‘mysql-bin.000002‘;
Query OK, 0 rows affected (0.10 sec)

mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000002 |       150 |
| mysql-bin.000003 |       150 |
| mysql-bin.000004 |       150 |
| mysql-bin.000005 |       107 |
+------------------+-----------+
4 rows in set (0.00 sec)

查看binlog是否开启:

mysql> show variables like ‘log_bin‘;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.01 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000007 |      368 | test,test2   |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

删除2016-08-22 16:00:00时间点之前的日志:

mysql> purge binary logs before ‘2016-08-22 16:00:00‘;
Query OK, 0 rows affected (0.16 sec)

mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000007 |       368 |
+------------------+-----------+
1 row in set (0.00 sec)

注意事项:

在删除binlog日志同时,也会清理MySQL-bin.index的文件记录,清理完后命令中指定的日志文件成为第一个。

[[email protected] data]# cat mysql-bin.index
./mysql-bin.000007

主从架构下,如果复制正在进行中,执行该命令是安全的,例如slave正在读取我们要删除的log,该语句将什么也不会做,并返回一个错误;如果复制是停止的,我们删除了一个slave还未读取的日志,则复制重新建立连接时将会失败。

指定过期天数(expire_logs_days):该参数为全局动态调整参数,默认值为0,即关闭,取值范围0-99;

mysql> SHOW VARIABLES LIKE ‘expire_logs_days‘;
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 0     |
+------------------+-------+
1 row in set (0.00 sec)

这里我设置过期天数为:一周

mysql> set global expire_logs_days = 7;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like ‘expire_logs_days‘;
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 7     |
+------------------+-------+
1 row in set (0.01 sec)

注意:在双机复制环境下,应确保过期天数不应小于从机追赶主机binlog日志的时间。

触发过期删除的条件:

1重启MYSQL;

2BINLOG文件大小达到参数max_binlog_size限制;

3手动执行命令。

重置binlog(reset master)

mysql> reset master;
Query OK, 0 rows affected (0.26 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 | test,test2   |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> system cat mysql-bin.index
./mysql-bin.000001

该方法可以删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个以.000001为后缀新的二进制日制文件,并删除,过去生成的二进制日志,如下:

mysql> system ls
ceshi      DB-S-relay-bin.000104  DB-S-relay-bin.000108    ib_logfile0  mysql-bin.000001     sx
chenlin   DB-S-relay-bin.000105  DB-S-relay-bin.000109    ib_logfile1  mysql-bin.index     test
DB-S.err  DB-S-relay-bin.000106  DB-S-relay-bin.index    master.info  performance_schema  test2
DB-S.pid  DB-S-relay-bin.000107  ibdata1        mysql         relay-log.info
mysql> flush logs;
Query OK, 0 rows affected (0.24 sec)

mysql> system ls
ceshi               DB-S-relay-bin.000107  ib_logfile1      relay-log.info
chenlin               DB-S-relay-bin.000108  master.info      sx
DB-S.err           DB-S-relay-bin.000109  mysql          test
DB-S.pid           DB-S-relay-bin.000110  mysql-bin.000001      test2
DB-S-relay-bin.000104  DB-S-relay-bin.index   mysql-bin.000002
DB-S-relay-bin.000105  ibdata1              mysql-bin.index
DB-S-relay-bin.000106  ib_logfile0          performance_schema
mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       150 |
| mysql-bin.000002 |       107 |
+------------------+-----------+
2 rows in set (0.00 sec)

mysql> reset master;
Query OK, 0 rows affected (0.19 sec)

mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       107 |
+------------------+-----------+
1 row in set (0.00 sec)

mysql> system ls
ceshi               DB-S-relay-bin.000106  ibdata1        mysql-bin.index
chenlin               DB-S-relay-bin.000107  ib_logfile0    performance_schema
DB-S.err           DB-S-relay-bin.000108  ib_logfile1    relay-log.info
DB-S.pid           DB-S-relay-bin.000109  master.info    sx
DB-S-relay-bin.000104  DB-S-relay-bin.000110  mysql        test
DB-S-relay-bin.000105  DB-S-relay-bin.index   mysql-bin.000001    test2

该语法一般只用在主从环境下初次建立复制时。     在主从复制进行过程中,该语句是无效的。

主从环境下的配置步骤:
    a. 启动master和slave,开启replication(即复制)
    b. 在master上运行一些测试的语句,看数据是否能够复制到 slave上面
    c. 当复制运行正常的话,就在从上stop slave 然后执行 reset slave,去掉不需要的数据 
    d. 在master上面执行reset master 清除测试产生的数据

时间: 2024-10-07 01:42:25

二进制日志BINARY LOG清理的相关文章

MySQL 二进制日志(Binary Log)

同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.二进制日志,也叫binary log,是MySQL Server中最为重要的日志之一,本文主要描述二进制日志. 1.MySQL日志文件系统的组成   a.错误日志:记录启动.运行或停止mysqld时出现的问题.   b.通用日志:

mysql 二进制日志binary log操作简单命令

show master status \G; #查看当前正在记录的二进制日志 show binary logs; #查看binary log 所有文件列表 show binlog events; #查看第一个binary log日志文件 shaow binlog events in'binary log 文件名' #查看制定binary log文件内容 用mysqlbinlog工具查看 查看制定binary log文件内的制定时间段的代码: mysqlbinlog --start-datetim

关于binary log那些事

阅读目录(Content) 1 what's binary log 2 Binary Logging Options and Variables 2.1 基础参数 2.2 重要参数(sync_binlog=0丢失数据的描述有疑问,目前查阅相关资料跟咨询业界人士中....) 3 Binary Logging Formats 3.1 binlog_format=statement 3.2 binlog_format=row 3.2.1 binlog_row_image默认full,binlog_ro

关于binary log一点总结[转]

阅读目录(Content) 1 what's binary log 2 Binary Logging Options and Variables 2.1 基础参数 3 Binary Logging Formats 3.1 binlog_format=statement 3.2 binlog_format=row 3.2.1 binlog_row_image默认full,binlog_rows_query_log_events默认false 3.2.2 binlog_rows_query_log_

MySQl Study学习之--MySQl二进制日志管理

MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log):   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库(DML)的语句的执行时间信息    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新    用于在主复制服务器上记录所有将发送

使用mysqlbinlog提取二进制日志

MySQL binlog日志记录了MySQL数据库从启用日志以来全部对当前数据库的变更. binlog日志属于二进制文件,我们能够从binlog提取出来生成可阅读的SQL语句来重建当前数据库以及依据须要实现时点恢复或不全然恢复.本文主要描写叙述了假设提取binlog日志.并给出相关演示样例. 有关binlog的介绍与描写叙述请參考:MySQL 二进制日志(Binary Log) 1.提取mysqlbinlog的几种方式a.使用show binlog events方式能够获取当前以及指定binlo

MySQL二进制日志(binary log)总结

本文出处:http://www.cnblogs.com/wy123/p/7182356.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 今天无意中发现了一个云栖社区举行的MySQL“第一季:挑战玄惭之 慢SQL性能优化赛”,在测试服务器上执行其测试脚本写入数据的时候报错提示如下,Multi-statement transaction required more than 'max_binlog_cache_

mysql中如何开启binlog?开启二进制日志文件?binary log?

需求描述: 开启mysql的binlog即binary log日志功能,在此记录下. 版本描述: mysql版本:5.7.21-log 操作过程: 1.修改my.cnf并且将以下参数加入其中,重启mysql实例 server-id=11 #由于bug,所以需要设置该参数.否则无法启动mysql实例 log-bin = mysql-bin #其中mysql-bin代表的是basename就是生成二进制日志文件的前缀部分,默认的位置在datadir目录下,也可以设置为其他的路径 2.查看binlog

mysql二进制日志文件清理以及 管理

1:二进制日志 二进制日志记录了所有的DDL(数据定义语言)语句和DML(数据操作语言)语句,但是不记录包括数据查询的语句.语句以"事件"的形式保存,它描述了数据的更改过程,此日志对于灾难时的数据恢复起着极其重要的作用 2:日志的位置和格式 当用-log-bin[=file_name]选项启动时,mysqld将包含所有更新数据的SQL命令写入日志文件.如果没有给出file_name值,默认名为主机名后面跟_bin,如果给出了文件名,但没有包含路劲,则文件默认被写入参数DATADIR(数