北京SEO

MySQL下FLUSH命令mysql日志的轮询

2019/10/10/17:32:26  阅读:2428  来源:谷歌SEO算法  标签: Google

通过mysql的my.cnf文件可以设置mysql的日志,而日志文件如果长期不进行清理或回收,势必会造成日志文件越来越大,进而影响到mysql的性能,而利用rpm 包安装方式的自带有mysql日志的轮询刷新,通过源码包安装的一样能实现该功能,该功能的实现要通过flush命令和mysql自带脚本的修改来完成,当然,二进制日志文件除外,因为系统自带了expire_logs_days和max-binlog-size参数进行设置,并且二进制文件为系统数据恢复时的重要文件,不建议使用该方式进行配置,如果有其他备份策略也可以使用该方式进行轮询.

Flush命令的用法如下:

  1. mysql>helpflush;
  2. Name:'FLUSH'
  3. Description:
  4. Syntax:
  5. FLUSH[NO_WRITE_TO_BINLOG|LOCAL]
  6. flush_option[,flush_option]...
  7. …………
  8. TheRESETstatementissimilartoFLUSH.See[HELPRESET],for
  9. informationaboutusingtheRESETstatementwithreplication.
  10. URL:http://dev.mysql.com/doc/refman/5.5/en/flush.html

从上面的英文帮助文档中可以查看mysql的flush命令和日志相关的用法.

  1. BINARYclosesandreopensthebinarylogfiles.
  2. ENGINEclosesandreopensanyflushablelogsforinstalledstorageengines.Currently,thiscausesInnoDBtoflushitslogstodiskandperformacheckpoint.
  3. ERRORclosesandreopenstheerrorlogfile.
  4. GENERALclosesandreopensthegeneralquerylogfile.
  5. RELAYclosesandreopenstherelaylogfiles.
  6. SLOWclosesandreopenstheslowquerylogfile.
  7. Thelog_typeoptionswereaddedinMySQL5.5.3.

关于flush其他方面的用法,我不想直接翻译了,直接拿个网上别人现成的吧,如下:

MySQL的FLUSH句法(清除或者重新加载内部缓存)FLUSH flush_option [,flush_option],如果你想要清除一些MySQL使用内部缓存,你应该使用FLUSH命令,为了执行FLUSH,你必须有reload权限.

flush_option 可以是下列任何东西:

HOSTS 这个用的最多,经常碰见,主要是用来清空主机缓存表,如果你的某些主机改变IP数字,或如果你得到错误消息Host ... isblocked,你应该清空主机表,当在连接MySQL服务器时,对一台给定的主机有多于 max_connect_errors个错误连续不断地发生,MySQL为了安全的需要将会阻止该主机进一步的连接请求,清空主机表允许主机再尝试连接.

LOGS 关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1.

PRIVILEGES 这个也是经常使用的,每当重新赋权后,为了以防万一,让新权限立即生效,一般都执行一把,目地是从数据库授权表中重新装载权限到缓存中.

TABLES 关闭所有打开的表,同时该操作将会清空查询缓存中的内容.

FLUSH TABLES WITH READ LOCK 关闭所有打开的表,同时对于所有数据库中的表都加一个读锁,直到显示地执行unlock tables,该操作常常用于数据备份的时候.

STATUS 重置大多数状态变量到0.

MASTER 删除所有的二进制日志索引文件中的二进制日志文件,重置二进制日志文件的索引文件为空,创建一个新的二进制日志文件,不过这个已经不推荐使用,改成reset master 了,可以想象,以前自己是多土啊,本来一条简单的命令就可以搞定的,却要好几条命令来,以前的做法是先查出来当前的二进制日志文件名,再用purge 操作.

QUERY CACHE 重整查询缓存,消除其中的碎片,提高性能,但是并不影响查询缓存中现有的数据,这点和Flush table 和Reset Query Cache(将会清空查询缓存的内容)不一样的.

SLAVE 类似于重置复制吧,让从数据库忘记主数据库的复制位置,同时也会删除已经下载下来的relay log,与Master一样,已经不推荐使用,改成Reset Slave了,这个也很有用的.

一般来讲,Flush操作都会记录在二进制日志文件中,但是FLUSH LOGS、FLUSH MASTER、FLUSH SLAVE、FLUSH TABLES WITH READ LOCK不会记录,因此上述操作如果记录在二进制日志文件中话,会对从数据库造成影响,注意:Reset操作其实扮演的是一个Flush操作的增强版的角色.

Mysql自的带的日志轮询脚本位于源码包的support-files目录中——mysql-log-rotate.sh文件.

具体操作如下(query日志为例):

先将query_log.log文件mv

  1. [root@localhostlogs]#ll
  2. total32
  3. -rw-rw----1mysqlmysql1Mar1214:28mysql.err
  4. -rw-rw----1mysqlmysql6Mar515:44mysql.pid
  5. -rw-rw----1mysqlmysql1015Mar1215:32query_log.log
  6. -rw-rw----1mysqlmysql704Mar515:44slow.log
  7. [root@localhostlogs]#mvquery_log.logquery_log.log.1

登陆mysql命令界面下,执行如下操作:

  1. mysql>flushgenerallogs;
  2. QueryOK,0rowsaffected(0.06sec)

注:这一步分关键,也容易错,我之前进行flush general操作老是出错,后来看了官方的文档后,才发现后面少了logs.

下面再看下日志文件:

  1. [root@localhostlogs]#ll
  2. total40
  3. -rw-rw----1mysqlmysql1Mar1214:28mysql.err
  4. -rw-rw----1mysqlmysql6Mar515:44mysql.pid
  5. -rw-rw----1mysqlmysql176Mar1215:38query_log.log
  6. -rw-rw----1mysqlmysql1285Mar1215:38query_log.log.1
  7. -rw-rw----1mysqlmysql704Mar515:44slow.log
  8. [root@localhostlogs]#catquery_log.log
  9. /usr/local/mysql/bin/mysqld,Version:5.5.21-log(Sourcedistribution).startedwith:
  10. Tcpport:3306Unixsocket:/tmp/mysqld.sock
  11. TimeIdCommandArgument

关于使用轮询脚本时的注意点:

  1. /data/mysql/mysqld.log{
  2. #create600mysqlmysql
  3. notifempty
  4. daily
  5. rotate3
  6. missingok
  7. compress
  8. postrotate
  9. #justifmysqldisreallyrunning
  10. iftest-x/usr/local/mysql/bin/mysqladmin&&
  11. /usr/local/mysql/bin/mysqladminping&>/dev/null
  12. then
  13. /usr/local/mysql/bin/mysqladminflush-logs
  14. fi
  15. endscript
  16. }

上面脚本中的二处在设置密码后进运行时会报错的,因为其要使用密码的直持,具体为:

/usr/local/mysql/bin/mysqladmin –uroot-ptest ping(其中用户名为root,密码为test)

/usr/local/mysql/bin/mysql -uroot -ptest -e "flush general logs"

设置完成后将该脚本放到/etc/logrotate.d目录就行了.

广告内容

MySQL下FLUSH命令mysql日志的轮询 MySQL下FLUSH命令mysql日志的轮询 MySQL下FLUSH命令mysql日志的轮询

相关阅读

热门评论

SEO研究中心 SEO研究中心

SEO研究中心提供免费SEO公开课

总篇数170

精选文章

JavaScript 浮点数及运算精度调整总结 linux中批量查找替换文本内容例子 HTML5 3D书本翻页动画 mysql关闭skip-grant-tables快速重置mysql密码 mysql limit的用法 每个程序员都需要学习 JavaScript 的7个理由 phpmyadmin导入大sql文件失败解决办法 Magic:轻量级JavaScript UI组件 Linux程序设计殿堂的善意提醒 mysql保存数据提示1366 Incorrect string value:

SEO最新算法