首页 > 数据库 >2023.6.16 09.数据库⽇志管理

2023.6.16 09.数据库⽇志管理

时间:2023-06-16 22:56:09浏览次数:46  
标签:log 16 mysql 09 查询 session 2023.6 sql root

09.数据库⽇志管理 1.错误⽇志 2.查询⽇志 3.慢查询⽇志 4.⼆进制⽇志 0. ⽇志作⽤   1. 排查故障 2. 性能优化 3. 安全审计 4. 统计分析 5. 数据备份与恢复   1. mysql⽇志管理  

 

2.错误⽇志

MySQL的错误⽇志 error log 记录 mysqld 服务进程启动/关闭或运⾏过遇到的错误⽇志。
1.在配置⽂件增加如下⾏

 

2.创建对应⽬录与⽇志⽂件, 并授权 [root@sql ~]# mkdir -p /log/mysql/ [root@sql ~]# touch /log/mysql/err.log [root@sql ~]# chown -R mysql.mysql /log/mysql/ //重启数据库⽣效 [root@sql ~]# systemctl restart mysqld   3.查看错误⽇志 [root@sql ~]# egrep -i "error" /log/mysql/err.log 2023-05-26T02:02:32.463347Z 0 [ERROR] unknown option '--dasdasdsadas' 2023-05-26T02:02:32.463362Z 0 [ERROR] Aborting   4.通过终端查看⽇志 mysql> show variables like "log_error%"; +---------------------+--------------------+ | Variable_name | Value | +---------------------+--------------------+ | log_error | /log/mysql/err.log | | log_error_verbosity | 3 | +---------------------+--------------------+ 2 rows in set (0.01 sec)   3.查询⽇志 普通查询⽇志 general query log 记录客户端连接信息和执⾏的所有 SQL 语句信息, 默认关闭 1.开启 general ⽇志 [root@sql ~]# cat /etc/my.cnf [mysqld] general_log=ON general_log_file=/log/mysql/select.log 2.创建对应⽬录与⽇志⽂件, 并授权 [root@sql ~]# mkdir -p /log/mysql [root@sql ~]# touch /log/mysql/select.log [root@sql ~]# chown mysql.mysql /log/mysql/select.log //重启数据库⽣效 [root@sql ~]# systemctl restart mysqld 3.查看⽇志 [root@sql mysql]# cat select.log /soft/mysql/bin/mysqld, Version: 5.7.30-log (MySQL Community Server (GPL)). started with: Tcp port: 0 Unix socket: /tmp/mysql.sock Time Id Command Argument 2023-05-26T02:04:05.071650Z 2 Connect [email protected] on using SSL/TLS 2023-05-26T02:04:05.072034Z 2 Query select @@version_comment limit 1 2023-05-26T02:04:13.981535Z 2 Query show databases 2023-05-26T02:04:32.152472Z 2 Query drop database test 2023-05-26T02:04:32.154171Z 2 Query SELECT DATABASE()   4.终端查询⽇志情况 mysql> show variables like 'general_log%'; +------------------+-----------------------+ | Variable_name | Value | +------------------+-----------------------+ | general_log | ON | | general_log_file | /log/mysql/select.log | +------------------+-----------------------+ 2 rows in set (0.01 sec) //临时开启查询⽇志 mysql> set global general_log = On; //临时关闭查询⽇志 mysql> set global general_log = Off;   4.慢查询⽇志 慢查询⽇志 slow query log 记录执⾏过⻓的 SQL 语句, 可利⽤慢查询优化进⾏调整优化 1.开启慢查询⽇志 [root@sql ~]# cat /etc/my.cnf [mysqld] slow_query_log = on slow_query_log_file=/log/mysql/slow.log long_query_time=2 log_queries_not_using_indexes #没有启⽤索引的查询语句   开启了慢查询⽇志 ⽇志⽂件存储在`/log/mysql/slow.log`` `long_query_time 参数设置为2秒,如果⼀个查询的执⾏时间超过2秒,它将被记录在慢查询⽇志中。 对于优化数据库性能⾮常有⽤,它可以帮助找出哪些查询需要优化。   注意 : 开启慢查询⽇志会对MySQL服务器的性能产⽣⼀定的影响,因此在⽣产环境中,应该谨慎地使⽤它。 2.创建对应⽬录与⽇志⽂件, 并授权 [root@sql ~]# mkdir -p /log/mysql [root@sql ~]# touch /log/mysql/slow.log [root@sql ~]# chown mysql.mysql /log/mysql/slow.log //重启数据库⽣效 [root@sql ~]# systemctl restart mysqld   3.执⾏过慢语句进⾏测试 mysql> SELECT BENCHMARK(150000000,2*3); MySQL中的BENCHMARK函数⽤于多次执⾏语句以测量系统性能。在这种情况下,被执⾏的语句是⼀个简单的算 术运算2*3。BENCHMARK的第⼀个参数指定了语句应该执⾏的次数。 因此,查询"SELECT BENCHMARK(150000000,2*3);"将执⾏语句"2*3" 1.5亿次,并返回重复执⾏此语句所需的总 时间。 这个查询的结果将是⼀个包含单个列的单⾏,该列包含重复执⾏语句所需的总时间。确切的结果将取决于执⾏查询 的系统的性能。   4.检查慢⽇志是否记录 [root@sql ~]# cat/log/mysql/slow.log # Time: 2023-05-27T02:27:02.843913Z # User@Host: root[root] @ mysql.server [10.1.106.70] Id: 3 # Query_time: 2.061564 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 SET timestamp=1685154422; SELECT BENCHMARK(150000000,2*3);   5.⼆进制⽇志 ⼆进制⽇志 binary log 记录数据被修改的相关信息 1.开启 binlog ⼆进制⽇志 [root@sql ~]# cat /etc/my.cnf [mysqld] server-id = 70 log-bin = /log/mysql/bin/sql_106_70 expire_logs_days = 30 #多少天天数后的⽇志将会被⾃动删除   server-id : MySQL服务器的唯⼀标识符,它⽤于在主从复制中识别服务器。每个服务器必须拥有⼀个唯⼀ 的 server-id 值。在这个例⼦中, server-id 被设置为70(根据服务器ip做唯⼀标识)   log-bin : 启⽤⼆进制⽇志记录(binary logging),记录了所有对MySQL数据库的修改操作,包括插⼊、 更新和删除等操作。这些⽇志可以⽤于恢复数据、备份数据、以及实现主从复制等功 能。 /log/mysql/bin/sql_106_70 指定了⼆进制⽇志⽂件的存储位置和⽂件名前缀,MySQL会⾃动在⽂件 名后⾯添加⼀些编号和扩展名。 expire_logs_days : 这个参数指定了⼆进制⽇志⽂件的过期时间,即MySQL会⾃动删除多久之前的⽇志⽂ 件。在这个例⼦中,⽇志⽂件会在30天后被⾃动删除。   2.创建对应⽬录与⽇志⽂件, 并授权 [root@vm-70-161 ~]# mkdir /log/mysql/bin [root@vm-70-161 ~]# chown -R mysql.mysql /log/mysql/ [root@vm-70-161 ~]# systemctl restart mysqld //重启数据库⽣效 [root@sql ~]# systemctl restart mysqld   3.查看 binlog ⽇志信息 [root@sql ~]# mysqlbinlog -v /log/mysql/bin/sql_106_70.000001 # at 219 #230527 12:09:02 server id 70 end_log_pos 306 CRC32 0xc85c6c41 Query thread_id=2 exec_time=0 error_code=0 use `wing`/*!*/; SET TIMESTAMP=1685160542/*!*/; SET @@session.pseudo_thread_id=2/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; SET @@session.sql_mode=1436549152/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C utf8 *//*!*/; SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation _server=8/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; TRUNCATE TABLE users /*!*/;s   # at 219 :表示该查询在⼆进制⽇志⽂件中的位置 #230527 12:09:02 :表示该查询执⾏的时间,⽇期格式为YYMMDD HH:MM:SS server id 70 :表示MySQL服务器的ID end_log_pos 306 :表示该查询在⼆进制⽇志⽂件中的结束位置 CRC32 0xc85c6c41 :表示该查询的CRC32校验和 Query :表示该⽇志记录是⼀个查询   thread_id=2 :表示执⾏该查询的线程ID exec_time=0 :表示该查询的执⾏时间为0毫秒 error_code=0 :表示该查询没有出错 use wing /!/; :表示该查询使⽤了 wing`数据库。 SET TIMESTAMP=1685160542/*!*/; :设置查询的时间戳。 SET @@session.pseudo_thread_id=2/*!*/; :设置当前会话的虚拟线程ID。 SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; :设置当前会话的⼀些参数,如外键检 查、⾃动提交等。 SET @@session.sql_mode=1436549152/*!*/; :设置当前会话的SQL模式。 SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; :设 置当前会话的⾃增计数器起始值和步⻓。 /*!\C utf8 *//*!*/; :设置当前会话的字符集为UTF-8。 SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collatio n_server=8/*!*/; :设置当前会话的字符集和排序规则。 SET @@session.lc_time_names=0/*!*/; :设置当前会话的时间格式。 SET @@session.collation_database=DEFAULT/*!*/; :设置当前会话的数据库排序规则。 TRUNCATE TABLE users/*!*/; :表示执⾏了⼀个 TRUNCATE TABLE 查询,将 users 表清空。   4.⽇志截断 1.切割binlog⽇志 重启 mysqld 服务, 在 mysql 控制台执⾏ mysql> flush logs 在 mysql 控制台执⾏ reset master 会清空所有 binlog (危险) 2.删除部分binlog⽇志 mysql> purge master logs to 'sql_106_70.000001'; #删除指定⽇志以前的⽇志⽂件 mysql> purge binary logs before '2023-05-27 12:44:00'; #删除指定时间以前的⽇志⽂件 5.恢复⽇志 use wing; CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 ; TRUNCATE TABLE users; insert into users(name,email) values('wing','[email protected]'); mysql> select * from users; +----+------+-------------+ | id | name | email | +----+------+-------------+ | 1 | wing | [email protected] | +----+------+-------------+ 1 row in set (0.01 sec)   使⽤时间节点进⾏恢复 # mysqlbinlog sql_106_70.000006 --start-datetime='2023-05-28 15:41:00' # mysqlbinlog sql_106_70.000005 --stop-datetime='2023-05-28 15:40:00' # mysqlbinlog sql_106_70.000005 --start-datetime='2023-05-28 12:00:00' --stop datetime='2023-05-28 15:40:00'   使⽤位置点进⾏恢复 # mysqlbinlog sql_106_70.000006 --start-position=219 # mysqlbinlog sql_106_70.000006 --stop-position=503 # mysqlbinlog sql_106_70.000006 --start-position=219 --stop-position=503        

标签:log,16,mysql,09,查询,session,2023.6,sql,root
From: https://www.cnblogs.com/BXXY5961/p/17486652.html

相关文章

  • C++通讯录管理系统[2023-06-16]
    C++通讯录管理系统[2023-06-16]通讯录管理系统手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(假设每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个联系人)。存储在手机中的联系人的信息只包含姓名和电话号码两项......
  • 刘铭诚:6.16黄金价格暴跌虚晃一枪!WTI原油行情分析操作建议
    黄金行情走势分析——昨夜公布的美国5月零售销售和制造业指数均好于预期,但初请失业金人数和续请失业金人数分别上升26.2万人和177.5万人,继续呈现出上升趋势,但是市场好像更加关心就业问题,数据公布后美债收益率下跌,美元指数也大幅下挫,这也让金价喘口气,在跌破1932之后,又快......
  • 6.16
    1.后台主页模块的设计 /1在apps文件夹中创建后台主页模块(一个模块一个app)python../../manage.pystartapphome/2规划表的建立:#分析表中具有哪些字段#idimg上传时间的记录是否已经删除是否显示排序字段#所以我可以表都会用到的公共字段放到一起,组成一张......
  • Day09-集合
    集合可以动态的保存任意多个类型,使用比较方便提供了一系列方便的操作对象:add、remove、set、get等使用集合添加,删除新元素的示意代码简洁了集合主要是两组(单列集合、双列集合)collection接口有两个重要的子接口ListSet,他们的实现子类都是单列集合Map接口的实现......
  • 2023-06-16:给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认
    2023-06-16:给你一份工作时间表hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于8小时的时候,那么这一天就是「劳累的一天」。所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格大于「不劳累的天数」。请你返回「表现良好时间段」......
  • 2023.6.16 构建回文串检测
    注意关键性质,可以重排。所以我们可以只考虑一种情况,其他情况都可以重排到这种情况。考虑在区间内:所有字符都有偶数个,此时不需要改变任何字符,我们可以把字符重排成回文的。只有一种字符有奇数个,其他字符都是偶数个。此时可以拿出这种字符的一个放在最中间。然后又回归到情况1,......
  • Python设计模式-09-外观模式
    外观模式是一种结构型设计模式,它提供了一个简单的接口,隐藏了系统的复杂性,使得客户端可以更容易地使用系统。外观模式通常包括以下几个角色:外观(Facade):提供了一个简单的接口,隐藏了系统的复杂性,使得客户端可以更容易地使用系统。子系统(Subsystem):实现了系统的功能,但对客户端是不可......
  • 2023.6.16 每日一题
    原题链接B-Technocup2020-EliminationRound1-DB.SequenceSorting-2000题目大意给定一个数组,定义一个操作:选定一个数,将所有值等于这个数的数移动到数组的一端(数组头或者数组尾)。问将数组变成非递减序列最少需要多少操作次数。解题思路对于每一种数,我们记录他们......
  • CKS 考试题整理 (09)-日志审计 log audit
    Task在cluster中启用审计日志。为此,请启用日志后端,并确保:日志存储在/var/log/kubernetes/audit-logs.txt日志文件能保留10天最多保留2个旧审计日志文件 /etc/kubernetes/logpolicy/sample-policy.yaml提供了基本策略。它仅指定不记录的内容。注意:基本策略位于clu......
  • 联想小新pro16 ubuntu18.04双系统、显卡驱动配置
    双系统安装注意了,所有的步骤都要按照这个链接来,跳过一步可能就出错了Ubuntu18.04安装教程每一步都有、多图卸载ubuntu方法一旦出错,先去计算机磁盘管理里面把ubuntu相关的区都给删掉,下面这个图不太清楚,主要就是上个链接中的四个区都格式化。然后,按照这个教程的第三步删除开......