二、Mysql运维技术之Mysql日志

  •  错误日志(error log)
这类日志记录服务器启动和关闭过程的信息,服务器运行过程中的错误信息,可通过命令show variables like 'log_error';
mysql> show variables like 'log_error';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***

+---------------+---------------------------------+
| Variable_name | Value                           |
+---------------+---------------------------------+
| log_error     | /usr/local/mysql/log/mysqld.log |
+---------------+---------------------------------+
1 row in set (0.01 sec)
  • 二进制日志(bin log) 
这类日志记录修改数据或者有可能引起数据改变的语句,可通过命令show variables like 'log_bin%';
可以在Mysql配置文件中添加log_bin=/usr/local/mysql/binlog/mysql-bin 进行配置,此类日志需用mysqlbinlog来解析。
mysql> show variables like 'log_bin%';
+---------------------------------+---------------------------------------+
| Variable_name                   | Value                                 |
+---------------------------------+---------------------------------------+
| log_bin                         | ON                                    |
| log_bin_basename                | /usr/local/mysql/data/mysql-bin       |
| log_bin_index                   | /usr/local/mysql/data/mysql-bin.index |
| log_bin_trust_function_creators | OFF                                   |
| log_bin_use_v1_row_events       | OFF                                   |
+---------------------------------+---------------------------------------+
5 rows in set (0.00 sec)


[root@localhost bin]# vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 4306
socket=/usr/local/mysql/socket/mysql.sock
symbolic-links=0
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/usr/local/mysql/pid/mysqld.pid
log_bin=/usr/local/mysql/binlog/mysql-bin

[root@localhost data]# service mysql restart 
Shutting down MySQL.... SUCCESS! 
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/pid/mysqld.pid).

# 启动出现异常,查看日志:
[root@localhost log]# cat /usr/local/mysql/log/mysqld.log
mysqld: File '/usr/local/mysql/binlog/mysql-bin.index' not found (Errcode: 2 - No such file or directory)
2020-03-20T05:44:32.092678Z 0 [ERROR] Aborting

[root@localhost mysql]# mkdir binlog
[root@localhost mysql]# chown -R mysql:mysql binlog/
[root@localhost mysql]# service mysql restart 
# 查看生成的日志文件
[root@localhost binlog]# pwd
/usr/local/mysql/binlog
[root@localhost binlog]# ll
总用量 8
-rw-r-----. 1 mysql mysql 154 3月  20 13:48 mysql-bin.000001
-rw-r-----. 1 mysql mysql  41 3月  20 13:48 mysql-bin.index
# 增加软链接
[root@localhost bin]#  ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin
[root@localhost mysql]# cd binlog/
[root@localhost binlog]# ls
mysql-bin.000001  mysql-bin.index
[root@localhost binlog]# mysqlbinlog mysql-bin.000001
  • 通用日志(general log) 
这类日志会记录数据库的所有操作,可通过命令show variables like 'general_log%'; 可以通过mysql配置文件中添加general_log=on来进行配置
mysql> show variables like 'general_log%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***

+------------------+-------------------------------------+
| Variable_name    | Value                               |
+------------------+-------------------------------------+
| general_log      | OFF                                 |
| general_log_file | /usr/local/mysql/data/localhost.log |
+------------------+-------------------------------------+
2 rows in set (0.01 sec)

# 默认 Mysql general log是关闭,下面进行开启。

[root@localhost binlog]# vi /etc/my.cnf

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 4306
socket=/usr/local/mysql/socket/mysql.sock
symbolic-links=0
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/usr/local/mysql/pid/mysqld.pid
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log_bin=/usr/local/mysql/binlog/mysql-bin
general_log=on
[root@localhost binlog]# service mysql  restart 
Shutting down MySQL..... SUCCESS! 
Starting MySQL. SUCCESS!

mysql> show variables like 'general_log%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
\Connection id:    2
Current database: *** NONE ***

+------------------+-------------------------------------+
| Variable_name    | Value                               |
+------------------+-------------------------------------+
| general_log      | ON                                  |
| general_log_file | /usr/local/mysql/data/localhost.log |
+------------------+-------------------------------------+
2 rows in set (0.00 sec)
[root@localhost binlog]# tail -f /usr/local/mysql/data/localhost.log
/usr/local/mysql/bin/mysqld, Version: 5.7.28-log (MySQL Community Server (GPL)). started with:
Tcp port: 4306  Unix socket: /usr/local/mysql/socket/mysql.sock
Time                 Id Command    Argument
2020-03-20T06:03:53.033315Z	    2 Connect	root@localhost on  using Socket
2020-03-20T06:03:53.033565Z	    2 Query	show variables like 'general_log%'
2020-03-20T06:07:05.308082Z	    3 Connect	root@192.168.43.226 on  using TCP/IP
2020-03-20T06:07:05.308535Z	    3 Query	SET NAMES utf8
2020-03-20T06:07:05.317305Z	    3 Query	SHOW VARIABLES LIKE 'lower_case_%'
2020-03-20T06:07:05.319408Z	    3 Query	SHOW VARIABLES LIKE 'profiling'
2020-03-20T06:07:05.320778Z	    3 Query	SHOW DATABASES
2020-03-20T06:07:06.680541Z	    4 Connect	root@192.168.43.226 on  using TCP/IP
2020-03-20T06:07:06.680833Z	    4 Query	SET NAMES utf8
2020-03-20T06:07:06.680991Z	    4 Init DB	issue
2020-03-20T06:07:06.681278Z	    4 Query	SELECT @@character_set_database, @@collation_database
2020-03-20T06:07:07.310605Z	    4 Query	SHOW FULL TABLES WHERE Table_type != 'VIEW'
2020-03-20T06:07:10.629871Z	    5 Connect	root@192.168.43.226 on  using TCP/IP
2020-03-20T06:07:10.630188Z	    5 Query	SET NAMES utf8
2020-03-20T06:07:10.630752Z	    5 Init DB	issue
2020-03-20T06:07:10.631278Z	    5 Query	SHOW TABLE STATUS LIKE 'bu_issue'
2020-03-20T06:07:10.844625Z	    5 Query	SHOW ENGINES
2020-03-20T06:07:10.845162Z	    4 Query	SHOW CREATE TABLE `bu_issue`
2020-03-20T06:07:10.934508Z	    5 Query	SELECT * FROM `bu_issue` LIMIT 0, 1000
2020-03-20T06:07:10.941783Z	    5 Query	SHOW COLUMNS FROM `issue`.`bu_issue`

 慢查询日志(slow log)

这类日志会记录执行时间超过指定时间的查询语句,可通过命令show variables like 'slow%';查看是否开启,同时可以通过命令show variables like 'long%';查看超时时间的设置,可以设置Mysql配置文件中添加slow_query_log=on 来开启,同时用long_query_time= 1来设置超时时间为1秒.

mysql> show variables like 'slow%';
+---------------------+------------------------------------------+
| Variable_name       | Value                                    |
+---------------------+------------------------------------------+
| slow_launch_time    | 2                                        |
| slow_query_log      | OFF                                      |
| slow_query_log_file | /usr/local/mysql/data/localhost-slow.log |
+---------------------+------------------------------------------+
3 rows in set (0.00 sec)
mysql> show variables like 'long%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

# 开启慢日志查询
[root@localhost binlog]# vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 4306
socket=/usr/local/mysql/socket/mysql.sock
symbolic-links=0
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/usr/local/mysql/pid/mysqld.pid
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log_bin=/usr/local/mysql/binlog/mysql-bin
general_log=on
slow_query_log=on
long_query_time=1

# 重启服务
[root@localhost binlog]# service mysql restart 
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 
# 查看设置效果
mysql> show variables like 'slow%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***
+---------------------+------------------------------------------+
| Variable_name       | Value                                    |
+---------------------+------------------------------------------+
| slow_launch_time    | 2                                        |
| slow_query_log      | ON                                       |
| slow_query_log_file | /usr/local/mysql/data/localhost-slow.log |
+---------------------+------------------------------------------+
3 rows in set (0.00 sec)

# 查看慢日志文件
[root@localhost binlog]# tail -f /usr/local/mysql/data/localhost-slow.log
/usr/local/mysql/bin/mysqld, Version: 5.7.28-log (MySQL Community Server (GPL)). started with:
Tcp port: 4306  Unix socket: /usr/local/mysql/socket/mysql.sock
Time                 Id Command    Argument
/usr/local/mysql/bin/mysqld, Version: 5.7.28-log (MySQL Community Server (GPL)). started with:
Tcp port: 4306  Unix socket: /usr/local/mysql/socket/mysql.sock
Time                 Id Command    Argument
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值