返回首页
当前位置: 主页 > 数据库 > Mysql教程 >

Mysql或Mariadb产生大量的mysql-bin.xxx日志文件

时间:2018-08-31 23:55来源:电脑教程学习网 www.etwiki.cn 编辑:admin

CentOS7下部署了Mysql的分支Mariadb。每天数据盘都增长100M左右的数据占用空间。进入系统查询Mariadb数据库每天才产生几十M的空间,于是找了半天才发现在其根目录下有很多mysql-bin.xxx的日志文件。这是由于启用mysql-bin日志记录的缘故。


mysql> show global variables like '%bin%';

+---------------------------------+----------------------+

| Variable_name | Value |

+---------------------------------+----------------------+

| binlog_cache_size | 32768 |

| innodb_locks_unsafe_for_binlog | OFF |

| log_bin | ON |

| log_bin_trust_function_creators | OFF |

| max_binlog_cache_size | 18446744073709547520 |

| max_binlog_size | 104857600 |

| sync_binlog | 0 |

+---------------------------------+----------------------+

7 rows in set (0.00 sec)

其中一个数据库,积累了大量的bin日志:


mysql> show binary logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000064 | 3175623 |

| mysql-bin.000065 | 104857696 |

| mysql-bin.000066 | 30124812 |

| mysql-bin.000067 | 104857882 |

| mysql-bin.000068 | 104857829 |

| mysql-bin.000069 | 104857910 |

| mysql-bin.000070 | 29627738 |

有三种解决方法:

1、关闭mysql主从,关闭binlog;

2、开启mysql主从,设置expire_logs_days;

3、手动清除binlog文件;


实现方法如下:

01、关闭mysql主从,关闭binlog

 

Bash
# vim /etc/my.cnf //注释掉log-bin,binlog_format
# Replication Master Server (default)
# binary logging is required for replication
# log-bin=mysql-bin
# binary logging format - mixed recommended
# binlog_format=mixed123456

然后重启数据库

02、重启mysql,开启mysql主从,设置expire_logs_days

 

Bash
# vim /etc/my.cnf //修改expire_logs_days,x是自动删除的天数,一般将x设置为短点,如10
expire_logs_days = x //二进制日志自动删除的天数。默认值为0,表示“没有自动删除”12

03、手动清除binlog文件

 

Bash
# /usr/local/mysql/bin/mysql -u root -p
> PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY); //删除10天前的MySQL binlog日志,附录2有关于PURGE MASTER LOGS手动删除用法及示例
> purge binary logs to 'mysql.bin.000071'; //删除指定日志文件;
> reset master; //这种清理法更狠,一键清除所有日志;
Query OK, 0 rows affected (0.06 sec)
> show master logs;123456

04、清除binlog时,对从mysql的影响

如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。

常用的命令:


Bash
mysql>show slave hosts -- 查看所有连接到Master的Slave信息
mysql>show master status -- 查看Master状态信息
mysql>show slave status -- 查看Slave状态信息
mysql>show binary logs -- 查看所有二进制日志
mysql>show binlog events [IN log_file] -- 查看二进制日志中的事件12345

------分隔线----------------------------
标签(Tag):mysql MySQL基本语句
------分隔线----------------------------
推荐内容
猜你感兴趣