• mysql中的各种日志


    错误日志

    错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。
    该日志是默认开启的,默认存放目录/var/log/,默认的日志文件名为mysqld.log 。

    MySQL里查看位置  :

    1. mysql> show variables like '%log_error%';
    2. +---------------------+---------------------+
    3. | Variable_name | Value |
    4. +---------------------+---------------------+
    5. | binlog_error_action | ABORT_SERVER |
    6. | log_error | /var/log/mysqld.log |
    7. | log_error_verbosity | 3 |
    8. +---------------------+---------------------+
    9. 3 rows in set (0.01 sec)

    实例:

    在一台服务器修改MySQL的配置文件uuid,打开另一个窗口动态查看错误日志

    1. [root@zhuku ~]# vim /var/lib/mysql/auto.cnf
    2. 重启服务
    3. [root@zhuku ~]# systemctl restart mysqld
    4. Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
    5. 报错了
    6. 修改uuid 加一位,然后打开另一个终端 动态查看错误日志
    7. [root@zhuku ~]# tail -f /var/log/mysqld.log -----这是另一个窗口显示
    8. 2023-10-03T08:02:12.032739Z 0 [ERROR] Garbage characters found at the end of the server_uuid value in auto.cnf file. It should be of length '36' (UUID_LENGTH). Clear it and restart the server.
    9. 2023-10-03T08:02:12.032782Z 0 [ERROR] Initialization of the server's UUID failed because it could not be read from the auto.cnf file. If this is a new server, the initialization failed because it was not possible to generate a new UUID.
    10. 2023-10-03T08:02:12.032789Z 0 [ERROR] Aborting

    二进制日志

    二进制日志记录所有的DDL语句和DNL语句,但不包括数据查询语句。

    作用:1.灾难时的数据恢复

    2.MySQL的主从复制,在MySQL8版本中,默认二进制日志时开启的,涉及的参数如下:

    1. mysql> show variables like '%log_bin%';
    2. +---------------------------------+--------------------------------+
    3. | Variable_name | Value |
    4. +---------------------------------+--------------------------------+
    5. | log_bin | ON |
    6. | log_bin_basename | /var/log/mysql/mysql-bin |
    7. | log_bin_index | /var/log/mysql/mysql-bin.index |
    8. | log_bin_trust_function_creators | OFF |
    9. | log_bin_use_v1_row_events | OFF |
    10. | sql_log_bin | ON |
    11. +---------------------------------+--------------------------------+
    12. 6 rows in set (0.00 sec)
    13. ### log_bin_basename是最终生成的二进制文件存放地址
    14. ### log_bin_index 是日志索引文件

    日志格式

    日志格式含义
    statement基于sQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中。
    row基于行的日志记录,记录的是每一行的数据变更(默认)
    mixed

    混合了STATEMENT和ROW两种格式,默认采用STATEMENT,在某些特殊情况下会自动切换为ROW进行记录。

    1. mysql> show variables like '%binlog_format%';
    2. +---------------+-------+
    3. | Variable_name | Value |
    4. +---------------+-------+
    5. | binlog_format | ROW |
    6. +---------------+-------+
    7. 1 row in set (0.00 sec)

    查看二进制日志

    日志查看
    由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具mysqlbinlog来查看,具体语法: 
    mysqlbinlog   [ 参数选项]    logfilename

    参数选项:
       -d              指定数据库名称,只列出指定的数据库相关操作。
       -o              忽略掉日志中的前n行命令。
       -v               将行事件(数据变更)重构为SQL语句
       -w              将行事件(数据变更)重构为SQL语句,并输出注释信息

    实验:

    由于默认是ROW,在MySQL中修改表的数据,查看二进制文件是如何显示的

    1. mysql> select * from zhucong;
    2. +------+------+------+
    3. | id | name | age |
    4. +------+------+------+
    5. | 1 | aaa | 21 |
    6. | 2 | bbb | 21 |
    7. | 3 | ccc | 21 |
    8. +------+------+------+
    9. 3 rows in set (0.00 sec)
    10. mysql> update zhucong set id=101;
    11. Query OK, 3 rows affected (0.01 sec)
    12. Rows matched: 3 Changed: 3 Warnings: 0

    查看二进制日志

    1. [root@zhuku mysql]# mysqlbinlog -v mysql-bin.000001
    2. ### UPDATE `db2`.`zhucong`
    3. ### WHERE -------where是更新条件
    4. ### @1=100 -----@是字段
    5. ### @2='aaa'
    6. ### @3=21
    7. ### SET
    8. ### @1=101
    9. ### @2='aaa'
    10. ### @3=21
    11. ### UPDATE `db2`.`zhucong`
    12. ### WHERE
    13. ### @1=100
    14. ### @2='bbb'
    15. ### @3=21
    16. ### SET
    17. ### @1=101
    18. ### @2='bbb'
    19. ### @3=21
    20. ### UPDATE `db2`.`zhucong`
    21. ### WHERE
    22. ### @1=100
    23. ### @2='ccc'
    24. ### @3=21
    25. ### SET
    26. ### @1=101
    27. ### @2='ccc'
    28. ### @3=21
    29. # at 457
    30. #231003 17:31:47 server id 1 end_log_pos 488 CRC32 0xec1bf22b Xid = 21
    31. COMMIT/*!*/;
    32. SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
    33. DELIMITER ;
    34. # End of log file
    35. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    36. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
    语法是:mysqlbinlog   参数   二进制日志文件名字

    修改日志格式

    默认是ROW

    1. [root@zhuku ~]# vim /etc/my.cnf #修改配置文件
    2. 进去添加:
    3. binlog-format=statement
    4. 重启服务:
    5. # systemctl restart mysqld
    6. 查看是否修改成功
    7. mysql> show variables like '%binlog_format%';
    8. +---------------+-----------+
    9. | Variable_name | Value |
    10. +---------------+-----------+
    11. | binlog_format | STATEMENT |
    12. +---------------+-----------+
    13. 1 row in set (0.00 sec)

    实验2

    创建一个新表,添加数据

    1. mysql> use db2;
    2. mysql> create table student(id int,name varchar(10),age int);
    3. mysql> insert into student(id,name,age) values(1,'tom',18),(2,'jack',19),(3,'ml',20);
    4. mysql> select * from student;
    5. +------+------+------+
    6. | id | name | age |
    7. +------+------+------+
    8. | 1 | tom | 18 |
    9. | 2 | jack | 19 |
    10. | 3 | ml | 20 |
    11. +------+------+------+
    12. 3 rows in set (0.00 sec)

    观察二进制日志是否有记录

    1. [root@zhuku mysql]# cd /var/lib/mysql
    2. [root@zhuku mysql]# ls
    3. [root@zhuku mysql]# mysqlbinlog mysql-bin.000002
    4. 切记: 修改完数据的日志格式以后,将产生新的二进制日志文件

    日志删除

    查询日志

    查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的SQL语句。默认情况下,查询日志是未开启

    1. mysql> show variables like '%general%';
    2. +------------------+---------------------------+
    3. | Variable_name | Value |
    4. +------------------+---------------------------+
    5. | general_log | OFF |
    6. | general_log_file | /var/lib/mysql/congku.log |
    7. +------------------+---------------------------+
    8. 2 rows in set (0.01 sec)

    想要打开查询日志,可以设置配置文件

    1. vim /etc/my.cnf
    2. 加入下面俩行
    3. general_log=1
    4. #该选项用来开启查询日志,可选值: 0或者1 ; 0代表关闭,1 代表开启
    5. general_log_file=/var/lib/mysql/mysql_chaxun.log
    6. #设置日志的文件名,如果没有指定,默认的文件名为host_ name.log
    7. 重启MySQL服务;
    8. systemctl restart mysqld

    由于查询日志的存放路径是/var/lib/mysql 因此我们可以通过动态查看

    实践

    1. 窗口一输入:
    2. [root@zhuku ~]# mysql -pzyq123
    3. mysql> show databases;
    4. mysql> use db1;
    5. mysql> show tables;
    6. mysql> select * from hh;
    7. 窗口二动态查询:
    8. tail -f /var/lib/mysql/mysql_chaxun.log
    9. 2023-10-04T03:22:25.293695Z 5 Connect root@localhost on using Socket
    10. 2023-10-04T03:22:25.294124Z 5 Query select @@version_comment limit 1
    11. 2023-10-04T03:22:29.661774Z 5 Query show databases
    12. 2023-10-04T03:23:23.658351Z 5 Query SELECT DATABASE()
    13. 2023-10-04T03:23:23.658684Z 5 Init DB db1
    14. 2023-10-04T03:23:23.659608Z 5 Query show databases
    15. 2023-10-04T03:23:23.660486Z 5 Query show tables
    16. 2023-10-04T03:23:23.660882Z 5 Field List hh
    17. 2023-10-04T03:23:23.682859Z 5 Field List idol
    18. 2023-10-04T03:23:27.395442Z 5 Query show tables
    19. 2023-10-04T03:23:32.343584Z 5 Query select * from hh

    慢查询日志

    慢查询日志记录了所有执行时间超过参数long_ query_ _time设置值并且扫描记录数不小于min_ examined_ _row_ _limit的所有的SQL语句的日志,默认未开启。long_ query_ _time 默认为10秒,最小为0,精度可以到微秒。

    1. #慢查询日志
    2. slow_ query_ _log=1
    3. #执行时间参数
    4. long_ query_ _time=2

    默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。可以使用log_ _slow_ _admin_ statements和更改此行为log_ _queries_ not_ _using_ indexes, 如下所述。

    1. #记录执行较慢的管理语句
    2. log_ slow_ admin_ statements =1
    3. #记录执行较慢的未使用索引的语句
    4. log_ _queries_ not_ using_ indexes = 1

  • 相关阅读:
    C语言实现通讯录详细教学
    C语言- 基础数据结构和算法 - 09 栈的应用_中缀表达式转后缀表达式20220611
    java毕业设计单车管理系统Mybatis+系统+数据库+调试部署
    基础算法C++讲解(目前更新至:双指针)
    解密zkLogin:探索前沿的Sui身份验证解决方案
    Qt 自定义控件
    CSS盒子定位的扩张
    问题解决:NPM 安装 TypeScript出现“sill IdealTree buildDeps”
    Rust 数据类型 之 结构体(Struct)
    甘特图组件DHTMLX Gantt示例 - 如何有效管理团队工作时间?(一)
  • 原文地址:https://blog.csdn.net/m0_59933574/article/details/133521334