遇到系统出问题时,第一个动作会是去查看系统上的Log纪录,各种日志都纪录着不同用途,透过日志纪录的内容能帮助管理者快速判断问题点,分析Mysql操作状况与错误资讯等,提供在MySQL管理和优化上的重要资讯。
前面有提到MYSQL设定档my.cnf用来设置Mysql全域参数初始化(EX:开启功能or调整参数限制&作用),没有设置会依照预设值运行,所以只要异动到设定档,需重启服务配置才会生效喔!
温馨提醒! 以下参数设定更动皆需重启Mysql服务来生效作用喔
systemctl restart mysql
首先从预设开启的错误日志开始,分别了解各日志纪录用途与设定 ~
1.错误日志- error log
内容: mysqld服务器(启动/关闭/运行)期间发生的错误,警告与注释。
EX:撷取error log 一小段关闭mysqld时纪录的log内容
用途: 查询mysql服务异常问题&诊断警告。
相关配置: my.cnf设定档(/etc/mysql/my.cnf)
[mysqld]
#错误日志路径&档名
log-error=/var/log/mysql/error.log
2.查询日志- general log
内容: 纪录所有mysql相关SQL操作指令
EX:撷取general log部分内容可以看到从使用者连线登入到对资料做异动的指令通通都会被纪录到log
用途: 排查错误时可能用到(还没遇过...XD) 或debug期间内有哪些执行语法。
相关配置: my.cnf设定档(/etc/mysql/my.cnf)
[mysqld]
#general log是否开启(default:0禁用 / 1启用)
general_log = 1
#查询日志路径&档名
general_log_file = /mnt/mysql_data/mysql/general.log
#指定日志输出目的地(default:FILE=记录到general.log / TABLE=纪录到mysql.general_log表)
log-output=TABLE
内容: 纪录超过设定秒数执行的SQL语法。
EX: 把long_query_time设定秒数改成0,等於执行语法都会被纪录到log
相关配置: my.cnf设定档(/etc/mysql/my.cnf)
[mysqld]
#slow log是否开启(1启用/0禁用)
slow-query-log = 1
#慢查询日志路径&档名
slow_query_log_file=/mnt/mysql_data/mysql/slow.log
#执行超过x秒就纪录 (EX: 1s)
long_query_time = 1
补充: 在生产环境上不是随时都能重启服务的,总不可能为了不是必要到需立即修改的功能而重启服务 (马上被抬走...
所以在运行中状态时部分变数可以透过修改环境变数的方式达到不停机生效的作用。不过要注意使用set修改的变数值重启後是会失效的。<< 想要永久生效,还是得写入my.cnf档 >>
#无需修改my.cnf 依旧能开启log功能
mysql> SET GLOBAL slow_query_log = 1
简单介绍一下设定上差异:
区分: 1.全域(GLOBAL)级变数 2.会话(SESSION)级变数
MYSQL官方文件:变数范围Var Scope & 可否动态变更参数Dynamic
EX:图中可以看到我们以SESSION级的方式更改。但因为slow_query_log属於GLOBAL变数级别所以会喷ERROR!以 global方式修改就能将日志功能关闭~
作用范围: 以long_query_time来看Both等於2种方式都支援,Yes等於可动态更改。
Example 图1-0中先开启2个SESSION连线资料库 SESSION-1 & SESSION-2,透过左边SESSION-1使用GLOBAL方式修改long_query_time变数,修改完成後再开启新连线SESSION-3。
SESSION-1 (左)
起始设定值: 0
参数修改後: SESSION = 0 , GLOBAL = 5
SESSION-2 (中)
起始设定值: 0
参数修改後: SESSION = 0 , GLOBAL = 5
SESSION-3 (右) 新建立的连线
参数修改後: SESSION = 5 , GLOBAL = 5
当变数同时拥有两个级别,在建立连线时用全域级变数初始化会话级变数,但一旦连线建立之後,全域级不会影响到会话级变数!! 看图自己做一次马上就能知道差异罗~
图.1-0
Example 图1-1中开启2个SESSION连线资料库使用,透过左边SESSION-1用session方式修改long_query_time变数。
SESSION-1 (左)
起始设定值: 0
参数修改後: SESSION = 5 , GLOBAL = 0
SESSION-2 (右)
起始设定值: 0
参数修改後: SESSION = 0 , GLOBAL = 0
图.1-1
以上内容目前配置参考:
[client]
#mysql 客户端连线服务端预设port
port=3306
socket=/mnt/mysql_data/mysql/mysql.sock
[mysqld]
#mysql使用socket方式登陆的sock档案路径
socket=/mnt/mysql_data/mysql/mysql.sock
#mysql 资料库档案所在目录
datadir=/mnt/mysql_data/mysql
#错误日志路径&档名
log-error=/var/log/mysql/error.log
#mysql服务端预设监听port
port=3306
# 设定字符集utf8
character_set_server=utf8
#general log是否开启(1启用/0禁用)
general_log = 1
#查询日志路径&档名
general_log_file = /mnt/mysql_data/mysql/general.log
#指定日志输出目的地(default: FILE) FILE=写入general.log , TABLE=写入mysql.general_log表
log-output=FILE
#slow log是否开启(1启用/0禁用)
slow-query-log = 1
#慢查询日志路径&档名
slow_query_log_file=/mnt/mysql_data/mysql/slow.log
#执行超过x秒就纪录 (EX: 1s)
long_query_time = 1
今天介绍了几个MYSQL日志的不同特点~
下集预告: 一样分享MYSQL相关日志但不同的是这些日志跟资料库的资料处理与数据恢复有关 !
还有( binlog / redo-log / undo-log / relay-log )後面都会提到....好多
第七天 各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是希望分享给点进来的朋友,知道...
这是我前几年作为学习/练习的例子。 看过与C交互後,接着来看看一个更实际应用的例子。不过不用C,来...
终於来到第二个练习了! 练习范例:https://www.sixvfx.com/northern_l...
本篇分享自制一个简易抽奖程序码啦!---以JQ为例 ▼完成图如下 为了让大家比较好懂,程序码用这张...
合并排序法(Merge Sort)原理是会先将原始资料分割成两个资料列,接着再将两个资料继续分割成两...