我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql学习8:第四章:数据库文件--日志文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql学习8:第四章:数据库文件--日志文件

 

1.1.   错误日志文件(error log )

默认存放路径在数据目录下,以error.log结尾的文件。

查看文件位置:

show variables like ‘%og_error%’;

注意warnings信息

 

TIMESTAMP类型特点

                                             

1.2.   二进制日志文件(binary log)

记录提交后的所有DML语句。如需记录select 和show,需要开启全量日志功能。

二进制日志的主要作用:

l   完成主从复制功能,binlog记录主服务器上所有修改数据的记录,发送到从服务器。

l   进行恢复操作,通过binlog,使用mysqlbinlog命令,实现基于时间点和位置的恢复。

配置参数log-bin=ON启动二进制日志,如没有命名文件名则默认mysql-binlog.xxxx为binlog文件名,默认存储在数据目录下。

[mysql]>show variables like '%log_bin%';

+---------------------------------+--------------------------------+

| Variable_name                   | Value                          |

+---------------------------------+--------------------------------+

| log_bin                         | ON                             |

| log_bin_basename                | /data/mysql/mysql-binlog       |

| log_bin_index                   | /data/mysql/mysql-binlog.index |

| log_bin_trust_function_creators | OFF                            |

| log_bin_use_v1_row_events       | OFF                            |

| sql_log_bin                     | ON                             |

+---------------------------------+--------------------------------+

6 rows in set (0.00 sec)

 

查看当前binlog文件及值大小

[mysql]>show binary logs;

+---------------------+-----------+

| Log_name            | File_size |

+---------------------+-----------+

| mysql-binlog.000001 |       177 |

| mysql-binlog.000002 |       177 |

| mysql-binlog.000003 |      1844 |

| mysql-binlog.000004 |       369 |

| mysql-binlog.000005 |       592 |

| mysql-binlog.000006 |      1065 |

| mysql-binlog.000007 |       615 |

| mysql-binlog.000008 |       217 |

| mysql-binlog.000009 |       194 |

+---------------------+-----------+

9 rows in set (0.00 sec)

 

查看mysql当前日志及状态

 

[mysql]>show master status;

+---------------------+----------+--------------+------------------+-------------------------------------------+

| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                    |

+---------------------+----------+--------------+------------------+-------------------------------------------+

| mysql-binlog.000009 |      194 |              |                  | 9c21d663-e09d-11e8-b535-000c29899e07:1-13 |

+---------------------+----------+--------------+------------------+-------------------------------------------+

1 row in set (0.00 sec)

 

 

数据目录下的 mysql-bin.index 文件时二进制日志的索引文件,用来记录产生的二进制日志的序号。

 

binlog参数介绍

max_binlog_size: 制定单个binlog的最大值,默认1G;生产环境控制生成时间小于5分钟,建议调整为256MB。

binlog_cache_size :所有未提交的事务会记录到一个缓存中,等待事务提交时,直接将缓存中的二进制日志写入binlog。每个新会话默认32K;每个线程开始一个事务自动分配一个缓存。缓冲区太小将会使用磁盘临时文件。可通过如下命令判断。

[mysql]>show global status like '%binlog_cache%';

+-----------------------+-------+

| Variable_name         | Value |

+-----------------------+-------+

| Binlog_cache_disk_use | 0     |

| Binlog_cache_use      | 0     |

+-----------------------+-------+

主要看这两个值得使用情况;生产环境一般4MB。

 

binlog_format 代表二进制文件格式,有statement,row,mixed三种。

l   statement:基于操作的SQL语句记录到binlog中,简称SBR,5.1前的默认格式,节约IO,但有时master-slave数据不一致,废弃。

l   mixed:混合使用row和statement格式,不建议使用。

l   row:基于行的变更情况记录,记录变更前后的内容,简称RBR。不记录SQL语句上下文信息,只记录数据变更,任何情况下都可以被复制,但产生日志多。推荐使用。

mysql5.6后新增binlog_rows_query_log_events参数,可在row模式下看见完整sql语句。5.7默认关闭。

[mysql]>show variables like '%binlog_rows%';

+------------------------------+-------+

| Variable_name                | Value |

+------------------------------+-------+

| binlog_rows_query_log_events | OFF   |

+------------------------------+-------+

 

sync_binlog: 决定binlog的刷新机制。

expire_logs_days :binlog过期时间(天);

binlog-do-db或binlog-ignore-db: 表示写入或忽略哪些库的日志,默认空;

log_slave_updates :配置m>s1>s2的架构时,需要在s1上设置为1,才能s1同步s2;

binlog_checksum: 对写入binlog进行校验,默认crc32.

binlog_row_imag 决定记录范围,默认full,记录全部记录;minimal只记录要修改列的信息;noblob记录除了blog和text的所有字段。

 

mysqlbinlog命令查看binlog示范

l   查看当前binlog format

[mysql]>show variables like '%binlog_format%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| binlog_format | ROW   |

+---------------+-------+

l   创建测试表t

CREATE TABLE `t` (

`id`  int(11) NOT NULL auto_increment,

`name`  varchar(10) DEFAULT NULL ,

`city`  varchar(10) DEFAULT NULL ,

PRIMARY KEY (`id`))

ENGINE=INNODB auto_increment=1 ;

l   插入数据

insert into t (name,city) values('zs','bj'),('zz','sh');

l   更新数据

update  t set name ='zs1' where name='zs';

l   复制binlog文件

# cp mysql-binlog.000009 /tmp/mysqlbinlog9bk

l   转换binlog

# /usr/local/mysql/bin/mysqlbinlog --no-defaults -v -v --base64-output=decode-rows /tmp/mysqlbinlog9bk > /tmp/binlog.txt

 

参数解释:

-v 可以看到具体的执行信息;

--base64-output:把二进制日志文件转化格式;

l   查看转换后的文件,可看到更新前后的内容。

### UPDATE `mysql`.`t`

### WHERE

###   @1=1

###   @2='zs'

###   @3='bj'

### SET

###   @1=1

###   @2='zs1'

###   @3='bj'

 

1.3.   慢查询日志slow log  

把超过参数long_query_time时间的所有sql语句记录下来,5.7默认0.5;

查看slow log位置:[mysql]>show variables like '%slow_query_log_file%';

查看slow log的工具:percona-toolkit,参考p84

下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/

书中示例版本为3.0.3,官网当前最新版本为3.0.12,可下载对应系统的rpm包,或linux-generic通用版本,安装包7.8M。

下载后解压:

# tar -zxvf percona-toolkit-3.0.12_x86_64.tar.gz

通过如下命令生成慢SQL报告:

# pwd

/usr/local/percona-toolkit-3.0.12/bin

# ./pt-query-digest --since=24th /data/mysql/slow.log >slowquery.log

Invalid --since value at ./pt-query-digest line 13813.

安装rpm包同样的报错;后续再研究。

1.4.   全量日志general log

记录mysql 数据库所有操作的sql,包含select和show,默认关闭。

查看general log配置情况:

[mysql]>show variables like '%general%';

+------------------+---------------------------+

| Variable_name    | Value                     |

+------------------+---------------------------+

| general_log      | OFF                       |

| general_log_file | /data/mysql/localhost.log |

+------------------+---------------------------+

设置使重启数据库前生效:

[mysql]>set global general_log='ON';

日志内容:

[root@localhost mysql]# tail -f -n 100 localhost.log

/usr/local/mysql/bin/mysqld, Version: 5.7.24-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306  Unix socket: /tmp/mysql.sock

Time                 Id Command    Argument

2018-11-06T06:14:26.924983Z       67 Query  commit

2018-11-06T06:14:29.037015Z       67 Query  set global general_log='ON'

2018-11-06T06:14:32.715302Z       67 Query  show variables like '%general%'

2018-11-06T06:15:04.075786Z       67 Quit

 

log_output:全局动态变量 ,决定全量日志保存方式,该参数也决定了slow log的保存方式,可选:

l   File,默认文件存储,建议;

l   table:存放到新建表general_log表;

l   NONE:不保存;

1.5.   审计日志 audit log

数据库审计(简称DBAudit)能够实时记录网络上数据库活动,对数据库操作进行细粒度审计的合规性管理,对遭受到的风险行为进行告警,对攻击行为进行阻断。通过对用户访问数据库行为的记分析和汇报,用来帮助用户事后生成合规报、事故追根溯源,同时加强内外部数据库网络行为记录,提高数据资产安全。

企业版才可使用审计功能。可使用第三方开源插件libaudit_plugin.so在mysql5.7社区版中wa内存审计工作。参考p88

官方下载地址:https://bintray.com/mcafee/mysql-audit-plugin/

github:https://github.com/studywellnow/mysql-audit

书中版本:1.1.4-725   当前下载最新版本为1.1.6-784

1.5.1.   mysql-audit-plugin安装踩雷

l   解压插件包:

# unzip audit-plugin-mysql-5.7-1.1.6-784-linux-x86_64.zip

l   把解压好的插件复制到mysqllib库的插件目录下:

[root@localhost lib]# pwd

/orasoft/audit-plugin-mysql-5.7-1.1.6-784/lib

[root@localhost lib]# cp libaudit_plugin.so /usr/local/mysql/lib/plugin/

l   数据库命令行安装插件

INSTALL PLUGIN AUDIT SONANEM ‘libaudit_plugin.so’;

[mysql]>install plugin audit soname 'libaudit_plugin.so';

ERROR 1123 (HY000): Can't initialize function 'audit'; Plugin initialization function failed.

查github,当前版本支持到mysql 5.7.19,而当前数据库版本为5.7.24,看来不能使用了。

数据库日志提示:2018-11-06T06:48:10.122754Z 5 [Note] McAfee Audit Plugin: Couldn't find proper THD offsets for: 5.7.24-log

 

下面按书记录,有空再研究

l   查看插件功能是否开启;

show variables like ‘%audit%’;

l   开启插件功能:

set global audit_json_file=1;

l   查看日志

mysql数据目录下产生一个mysql-audit.json审计日志,可查操作SQL的用户名,IP。

1.6.   中继日志 relay log

主从复制中,从服务器IO线程将主服务器的binlog读取并记录到本地文件relay log中,然后从服务器SQL线程读取应用。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql学习8:第四章:数据库文件--日志文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle数据库日志文件在哪里

oracle 数据库日志文件的位置因操作系统而异:unix/linux 系统:$oracle_base/oradata//redo01.log、redo02.log、redo03.log ...windows 系统:%oracle_base
oracle数据库日志文件在哪里
2024-05-10

SQL Server 数据库清空ldf日志文件

USE [master]ALTER DATABASE [DB_Develop]SET RECOVERY SIMPLE WITH NO_WAITALTER DATABASE [DB_Develop] SET RECOVERY SIMPLEGOUSE [DB_De
2021-05-10

oracle数据库日志文件在哪里打开

oracle数据库日志文件通常存储在名为“redo log files”或“redo logs”的文件中,其默认位置取决于操作系统:linux/unix/solaris:$oracle_base/oradata//redo0[1-n].lo
oracle数据库日志文件在哪里打开
2024-05-11

Oracle数据库中的日志文件是什么

在Oracle数据库中,日志文件主要包括重做日志文件和归档日志文件。重做日志文件(Redo Log Files):重做日志是一种记录数据库发生的所有修改操作(如插入、更新、删除)的文件,它记录了数据库的变化,以便在数据库发生故障时对数据库进
Oracle数据库中的日志文件是什么
2024-03-02

怎么通过日志文件恢复MySQL数据

这篇文章主要介绍“怎么通过日志文件恢复MySQL数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么通过日志文件恢复MySQL数据”文章能帮助大家解决问题。1、找到最新的 binlog 文件进入
2023-06-29

Sql Server 压缩数据库日志文件的方法

Sql Server 日志 _log.ldf文件太大,数据库文件有500g,日志文件也达到了500编程客栈g,占用磁盘空间过大,且可http://www.cppcns.com能影响程序性能,需要压缩日志文件。压缩日志脚本里要填的名字从要压
2022-11-24

SQL server数据库日志文件收缩操作方法

本篇文章详细介绍了SQLServer数据库日志文件收缩操作的4种方法:使用SQL查询、使用SQLServer管理工作室、使用T-SQL命令和使用CHECKDB命令。通过缩小日志文件,可以释放磁盘空间,提高数据库性能。在执行收缩操作前,建议备份数据库,并注意收缩后的日志文件无法恢复至原始大小。
SQL server数据库日志文件收缩操作方法
2024-04-02

清除SQL Server数据库日志(ldf文件)的方法汇总

随着系统运行时间的推移,数据库日志文件会变得越来越大,这时我们需要对日志文件进行备份或清理,这篇文章主要介绍了清除SQL Server数据库日志(ldf文件)的几种方法,需要的朋友可以参考下
2022-11-13

编程热搜

目录