澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2019-05-19 04:12 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

查看MySQL最近执行的语句,nginx日志切割shell脚本

 

2、mysql内实行如下指令:

代码:

MariaDB [xxx]> show variables where Variable_name="general_log";
 --------------- ------- 
| Variable_name | Value |
 --------------- ------- 
| general_log   | ON    |
 --------------- ------- 
1 row in set (0.01 sec)

set global sync_binlog=500;  

侦查意况:

[root@10-0-236-38 ~]# find / -name "10-0-236-38.log"
/var/lib/mysql/10-0-236-38.log

1、日志发生的习性影响:
出于日记的笔录带来的直白性能损耗正是数据库系统中不过昂贵的IO能源。MySQL的日记蕴涵错误日志(ErrorLog),更新日志(UpdateLog),二进制日志(Binlog),查询日志(QueryLog),慢查询日志(SlowQueryLog)等。当然,更新日志是老版本的MySQL才有的,这段日子曾经被贰进制日志替代。

#nginx日志切割脚本

#!/bin/bash
#设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
#设置pid文件
pid_path="/usr/local/nginx/nginx.pid"

#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday"  "%Y%m%d").log

#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
MariaDB [xxx]> show variables where Variable_name="general_log_file";
 ------------------ ----------------- 
| Variable_name    | Value           |
 ------------------ ----------------- 
| general_log_file | 10-0-236-38.log|
 ------------------ ----------------- 
1 row in set (0.00 sec)

注:再次开机后,该指令失效。可在劳务运营时,设置如上两项。

叁、定期工作
在crontab中安装作业

先查看一下2进制的笔录日志是还是不是展开。

当每进行500次职业提交未来,MySQL将开始展览2次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

# /opt/nginx/nginx -v
nginx version: nginx/1.6.2

下一场寻找一下它,获得日志路径:

一般景色下,在生养体系中很少有种类会张开查询日志。因为查询日志打开未来会将MySQL中进行的每一条Query都记录到日志中,会该系统带来相当的大的IO担当,而带来的实在效益却并不是特别大。一般唯有在开采测试情形中,为了长久有些功用具体运用了何等SQL语句的时候,才会在长时间段内张开该日记来做相应的剖析。所以,在MySQL系统中,会对品质发生影响的MySQL日志(不包括各存款和储蓄引擎本身的日记)首要正是Binlog了。

#!/bin/bash
# ==============================================================================
# chmod u x /opt/nginx/cut_nginx_log.sh
# crontab -e
# 0 0 * * * /opt/nginx/cut_nginx_log.sh > /opt/nginx/logs/cut_nginx_log.log 2>&1
# ==============================================================================

LOGS_PATH="/opt/nginx/logs"
ARCHIVE_YEAR=$(date -d "yesterday" " %Y")
ARCHIVE_MONTH=$(date -d "yesterday" " %m")
ARCHIVE_DATE=$(date -d "yesterday" " %Y%m%d_%H%M%S")
if [ -r /opt/nginx/nginx.pid ]; then
  mkdir -p "${LOGS_PATH}/${ARCHIVE_YEAR}/${ARCHIVE_MONTH}"
  mv "${LOGS_PATH}/access.log" "${LOGS_PATH}/${ARCHIVE_YEAR}/${ARCHIVE_MONTH}/access_${ARCHIVE_DATE}.log"
  kill -USR1 $(cat "/opt/nginx/nginx.pid")
  sleep 1
  gzip "${LOGS_PATH}/${ARCHIVE_YEAR}/${ARCHIVE_MONTH}/access_${ARCHIVE_DATE}.log"
else
  echo "Nginx might be down"
fi

# ==============================================================================
# Clean up log files older than 100 days
# ==============================================================================

# Change HOUSEKEEPING=1 to enable clean up
HOUSEKEEPING=0
KEEP_DAYS=100
if [ $HOUSEKEEPING == 1 ]; then
  if [ -d "${LOGS_PATH}" ]; then
    find "${LOGS_PATH}" -type f -name "access_*.log.gz" -mtime  ${KEEP_DAYS} -exec rm -f {} ;
  fi
fi

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:查看MySQL最近执行的语句,nginx日志切割shell脚本

关键词: 澳门威利斯人 mysql 数据库技术 IO