MySQL日志管理详解_MySQL binlog

MySQL日志管理详解_MySQL binlog概述 日志文件记录 MySQL 数据库运行期间发生的变化,当数据库遭到意外的损害时,可以通过日志文件查询出错原因,并进件数据恢复 MySQL 日志文件可以分成以下几类: 二进制日志:记录所有更改数据的

MySQL 日志管理

概述

日志文件记录 MySQL 数据库运行期间发生的变化,当数据库遭到意外的损害时,可以通过日志文件查询出错原因,并进件数据恢复

MySQL 日志文件可以分成以下几类:

  • 二进制日志:记录所有更改数据的语句,可以用于主从复制
  • 错误日志:记录 MySQL 服务出现的问题
  • 查询日志:记录建立的客户端连接和执行的语句
  • 慢查询语句:记录所有执行时间超过 long_query_time 的所有查询或不适用索引的查询
  • 中继日志:记录复制时从服务器从主服务器收到的数据该表
  • 数据定义语句日志:记录数据定义语句执行的元数据操作

操作二进制日志

1. 启动二进制日志

默认情况下,二进制文件是关闭的,可以通过以下 SQL 语句来查询二进制开关

SHOW VARIABLES LIKE "log_bin%";

修改 my.cnf 或 my.ini 文件,以 Windows 系统为例,打开 MySQL 目录下的 my.ini 文件,将 log-bin 加入 [mysqld] 组

[mysqld]
log-bin
server-id=201811
expire_logs_days=10
max_binding_size=100M

重新启动 MySQL 服务,再执行上述的 SQL 语句,看到 log_bin 变量的值为 ON,表明二进制日志已经打开

如果想改变日志文件的目录和名称,可以对 my.ini 中的 log_bin 参数修改如下:

[mysqld]
log-bin="d:mysqllogs"

2. 查看二进制日志

当 MySQL 创建二进制日志文件时,先创建一个 binlog.000001 文件,以后 MySQL 服务重新启动一次,以 .000001 为后缀的文件就会增加一个,后缀名按 1 递增。如果日志长度超过了 max_binlog_size 的上限,就会创建一个新的日志文件

SHOW BINARY LOGS;

二进制日志文件不能直接查看,可以使用 mysqlbinlog 命令查看

mysqlbinlog [日志文件路径]

3. 使用二进制日志恢复数据库

如果 MySQL 服务器启用了二进制日志,在数据库出现意外丢失数据时,可以使用 MySQLbinlog 工具从指定的时间点开始恢复数据

mysqlbinlog [option] filename|mysql -uroot -p;
  • option 是一些可选的选项:
    • –start-date:指定恢复数据库的起始时间点
    • –stop-date:指定恢复数据库的结束时间点
    • –start-position:指定恢复数据库的起始位置
    • –stop-position:指定恢复数据库的结束位置
  • filename 是日志文件名

4. 暂停二进制日志

在配置文件设置了 log-bin 选项以后,MySQL 服务会一直开启二进制日志功能,删除该选项就可以停止二进制日志功能

MySQL 提供暂时停止二进制日志功能的语句,如果用户不希望自己执行的某些 SQL 语句记录在二进制日志,可以使用 SET 语句来暂停二进制日志功能,0 表示停止,1 表示恢复

SET SQL_LOG_BIN={0|1}

5. 删除二进制日志

MySQL 的二进制文件可以配置自动删除,同时 MySQL 也提供手动删除二进制文件的方法

使用 PURGE MASTER LOGS 语句删除指定日志文件

# 删除创建时间比指定日志文件早的日志文件,以后缀为判断标准
PURGE {MASTER|BINARY} LOGS TO "log_name"
# 删除指定时间前的日志文件
PURGE {MASTER|BINARY} LOGS BEFORE "date"

使用 RESET MASTER 语句删除所有二进制日志文件

RESET MASTER

执行完该语句,所有二进制日志将被删除,MySQL 会重新创建二进制文件,新的日志文件扩展名将重新从 000001 开始

操作错误日志

1. 启动错误日志

在 MySQL 数据库中,错误日志是默认开启的,并且无法被禁止。错误日志文件的名称默认为 hostname.err,其中 hostname 表示 MySQL 服务器的主机名

2. 查看错误日志

SHOW VARIABLES LIKE "log_err%";

3. 删除错误日志

MySQL 的错误日志是以文本形式存储的,可以直接删除

通用查询日志

1. 启动通用查询日志

MySQL 默认没有开启通用查询日志,可以通过修改 my.cnf 或 my.ini 配置文件来设置

[mysqld]
general_log=ON
general_log_file=[path[filename]]

重启 MySQL,在 MySQL 的 data 目录下生成新的通用查询日志

从 5.1.6 以后开始,MySQL 支持全局级别的动态修改,不需要重启

SET GLOBAL general_log=on;
SET GLOBAL general_log=off;
SET GLOBAL general_log_file="path/filename";

2. 查看通用查询日志

SHOW VARIABLES LIKE "general_log%";

3. 停止通用查询日志

MySQL 停止通用查询日志功能有两种方式,一种是在配置文件把 general_log 值设置为 off,再重启 MySQL,另一种是使用 SET 语句设置,即动态修改

4. 删除通用查询日志

通用查询日志可以手动删除,也可以使用命令删除

mysqladmin -uroot -p flush-logs

此种方式新的通用查询日志会直接覆盖旧日志

慢查询日志

1. 启动慢查询日志

MySQL 慢查询日志默认是关闭的,可以通过修改 my.cnf 或 my.ini 配置文件来设置

[mysqld]
long_query_time=n
slow_query_log=ON
slow_query_log_file=[path[filename]]
  • long_query_time 设定慢查询的阈值,超出此设定值的 SQL 都会被记录,默认为 10 秒

MySQL 也支持 SET 语句开启

set global slow_query_log=ON;
set global long_query_time=2;
set session long_query_time=2;

2. 查看慢查询日志

查看慢查询日志所在目录

SHOW VARIABLES LIKE "%slow_query_log_file%";

查看慢查询日志的超时时长

SHOW VARIABLES LIKE "%long_query_time%";

3. 停止慢查询日志

可以在配置文件把 slow_query_log 的值设为 OFF,重启 MySQL,也可以使用 SET 语句

4. 删除慢查询日志

慢查询日志可以手动删除,也可以使用命令删除

mysqladmin -uroot -p flush-logs

此种方式新的慢查询日志会直接覆盖旧日志

原文地址:https://www.cnblogs.com/Yee-Q/archive/2022/05/03/16219751.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5312.html

(0)
上一篇 2023-05-14
下一篇 2023-05-14

相关推荐

  • Cassandra 在 360 的实践与改进[通俗易懂]

    Cassandra 在 360 的实践与改进[通俗易懂]分享嘉宾:王锋 奇虎360 技术总监 文章整理:王彦 内容来源:Cassandra Meetup 出品平台:DataFunTalk 注:欢迎转载,转载请留言。 导读:2010年,Dropbox 在线云

    2023-01-31
    100
  • mysql获取自增序列_insert返回自增主键

    mysql获取自增序列_insert返回自增主键本文主要学习了如何获得自增主键的下一个值。

    2023-03-17
    106
  • htap olap oltp_htap数据库

    htap olap oltp_htap数据库在今年的第七届中国开源年会上,StoneDB 团队在大数据分论坛发表了《HTAP 的下一步?SoTP 初探》主题演讲,在本次演讲中,我们首次正式对外阐释了“SoTP 数据库”的技术理念,本系列是演讲实

    2023-06-16
    88
  • 基于二进制文件的主从复制

    基于二进制文件的主从复制1.设置主服务器配置 必须在主服务器上启用二进制日志,因为二进制日志是将更改从主服务器复制到从服务器的基础,如果未启用log-bin,则无法进行复制 复制组内的每个服务器必须配置有唯一的id,此id用

    2022-12-29
    107
  • PostgreSQL中有以下格式化函数:[亲测有效]

    PostgreSQL中有以下格式化函数:[亲测有效]函数返回类型描述例子 to_char(timestamp, text) text 把时间戳转成字符串 to_char(current_timestamp, ‘HH12:MI:SS’) to_char…

    2023-03-31
    101
  • update mysql row (You can’t specify target table ‘x’ for update in FROM clause)[通俗易懂]

    update mysql row (You can’t specify target table ‘x’ for update in FROM clause)[通俗易懂]sql语句(update/delete都会出现此问题) mistake 大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表。 mysql5.7解决办法 老办法(有人说

    2023-01-24
    111
  • Mysql数据库教程(二)[云图智联]「终于解决」

    Mysql数据库教程(二)[云图智联]「终于解决」1.1数据库存储引擎 1.1.1存储引擎介绍 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁…

    2023-03-20
    89
  • Python爬虫入门指南

    Python爬虫入门指南随着互联网技术的快速发展,数据已经成为当今社会的核心资源之一。在数据收集和分析领域,爬虫作为一种强大的工具被广泛使用。特别是在人工智能这个领域上,爬虫的应用更加重要。Python作为一种流行的编程语言,提供了一些很好的库和工具,使得编写高效的爬虫更加容易。本文就是一篇关于Python爬虫入门指南,将介绍如何使用Python来构建一个基本的爬虫,可以帮助初学者更好地理解爬虫的原理和实现。

    2024-05-11
    35

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注