未来往事
无论在哪里,都需要保持随时可以离开而且离开以后比现在过得更好的能力。——写给自己! [2019年 第25周/共52周]

MySQL bin-log日志及expire-logs-days参数详解

MySQL bin-log功能,bin-log清理及expire-logs-days参数详解

今天突然发现博客不能访问了,登录vps后发现磁盘/根目录可用空间为0:
root@antphp:/:# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/MyDebianVPS-root
                      9.3G  8.8G   0    100% /
tmpfs                 504M     0  504M   0% /lib/init/rw
udev                  493M   76K  493M   1% /dev
tmpfs                 504M     0  504M   0% /dev/shm
/dev/xvda1            228M   18M  199M   8% /boot
/dev/xvdb1            9.9G  2.7G  6.7G  29% /opt
来源:未来往事 http://fity.cn
经过排查发现是mysql bin-log占用了几个GB的空间,对于普通vps来说空间本来就几个GB,所以自然而然也就满了。于是本文呢就在这样的情况产生啦 [emot]grin[/emot]

看了上面内容,你可能会疑惑MySQL bin-log功能究竟有何作用?

1:数据恢复:如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。
2:主从服务器之间同步数据:主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。
简单地说,这些MySQL var目录下的形如mysql-bin.000***的文件是MySQL的事务日志。
PS:缺点是将无法使数据库恢复先前的状态

这里我们查看到mysql-bin log占用了至少大于5GB的空间:
root@antphp:/usr/local/mysql/var# du -sh *
108M    antphp.err
4.0K    antphp.pid
144K    blog@002eyuboya@002ecom
1.1M    mysql
28K     mysql-bin.000001
1.1M    mysql-bin.000002
4.0K    mysql-bin.000003
4.0K    mysql-bin.000004
2.7M    mysql-bin.000005
1.1G    mysql-bin.000006
1.1G    mysql-bin.000007
1.1G    mysql-bin.000008
1.1G    mysql-bin.000009
1.1G    mysql-bin.000010
………………………………
来源:未来往事 http://fity.cn
PS:命令行模式查看:mysql> show binary logs;

MySQL bin-log状态查看/管理

通过查看mysql配置文件我们可以看到该mysql服务的bin-log是开启的状态:
root@antphp:/# cat /etc/my.cnf | grep log-bin
log-bin=mysql-bin
来源:未来往事 http://fity.cn
PS:
1、这一行注释,重启mysql服务即可关闭bin日志的记录
2、命令行模式查看:mysql> show global variables like '%bin%';

MySQL bin-log如何删除清理?

如果没有主从复制,可以通过reset master的方式,重置数据库日志,清除之前的日志文件:
reset master;

但是如果存在复制关系,应当通过PURGE的方式来清理bin日志,语法如下:
PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
来源:未来往事 http://fity.cn
用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。

例如:
+阅读全文

thread_concurrency参数 - MySQL性能优化参数

在很多mysql系统配置文件中,都设置了thread_concurrency参数,具体修改方法是:
[mysqld]
thread_concurrency=8

设置thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那么thread_concurrency的应该为4; 2个双核的cpu, thread_concurrency的值应为8.”

......
+阅读全文

MySQL开启慢查询日志记录 - MySQL参数

MySQL慢查询记录日志对于跟踪PHP+MySQL体系下的MySQL负载调优问题很有用处,比如安装了很多Discuz!插件的用户,这样可以大概排查出那些插件有代码问题。其实启用MySQL的慢查询日志很简单,只需要在MySQL的配置文件里添加log-slow-queries和long_query_time两个参数即可。

Windows下开启MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上
long_query_time = 2    //查询的时间,即当一条 SQL 执行时间超过2秒的时候才记录
......
+阅读全文