MariaDB——日志文件
记录每一条sql语句,建议不开启,因为如果访问量过大,会占用相当大的资源,影响数据库的性能。
vim /etc/my.cnf.d/server.cnf
general_log = ON | OFF #查询日志开关
general_log_file localhost.log #查询日志的文件名 (/var/lib/mysql)
log_output TABLE | FILE | NONE #查询日志的存储格式
执行时长超出指定时间的查询操作。(测试命令select sleep(4);)
slow_query_log = ON | OFF #开启慢查询日志
slow_query_log_file = localhost-slow.log #慢查询日志的文件路径
long_query_time #慢查询时长,默认是10s
log_slow_rate_limit #如果记录的慢查询日志非常多的话,会按照速率来记录,默认1s记录一个
log_slow_verbosity=full | query_plan #记录的详细级别
mysqld启动和关闭过程中输出的事件信息。
mysqld运行中产生的错误。
event scheduler 运行一个event时产生的日志信息。
在主从复制架构中的从服务器上启动从服务器线程时产生的信息。
log_error = /var/log/mysql_error.log #指定错误日志的输出位置。
log_warnings 为0,表示不记录告警信息。
log_warnings 为1,表示告警信息写入错误日志。
log_warnings 大于1,表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志。(默认为2)
针对时间点还原起着至关重要的作用。
查看二进制日志:
show master logs;
show binary logs;
show binlog events [in 'log_name']
show master status;
记录导致数据改变或可能导致数据改变的sql语句。所有的增删改,查询没有记录到二进制日志文件之中。
log_bin = OFF | ON
log_bin_basename = /var/lib/mysql/mysql-bin
binlog_format = statement | row | mixed #二进制记录格式
statement:基于语句记录
row:基于行记录
mixed:混合记录
复制架构中,备服务器用于保存主服务器的二进制日志中读取到的事件。
事务日志:
transaction log (ib_logfile0 ib_logfile1)
innodb_buffer_pool_size #一般设为为物理内存的3/4或者4/5
innodb_log_files_in_group = 2 #事物日志文件的个数,默认为两个事物日志文件
innodb_log_file_size=50331468(48m) #事务日志文件的单个大小 48 m
innodb_log_group_home_dir=./ #事务日志文件所在路径,默认在mariadb的数据目录/var/lib/mysql
事务型存储引擎自行管理和使用(innodb),myisam引擎不支持事物,外键,行级锁。
redo log:重做日志
undo log:撤销日志
查询日志:
show variables like '%general_log%';
#查看general_log与general_log_file的值,默认general_log状态为OFF
show variables like '%log_output%';
#查看log_output格式
[server]
general_log=1
show variables like '%general_log%';
#进入/var/lib/mysql查看查询日志
tail -f localhost.log
#记录每一条你的sql语句
执行时长超出指定时间的查询操作。
#需要注意的是:记录太多,记录太详细也会对数据库的性能造成影响。
[server]
slow_query_log=1
long_query_time=4
show variables like '%slow%';
#查看slow_query_log是否开启,查看slow_query_log_file的名称
show variables like '%long%';
#查看long_query_time的时间是4s。
tail -f localhost-slow.log
select sleep(5); #数据库执行之后会被记录到慢查询日志
show master logs; #如果提示你没有在使用binary logging那么说明你没有开启二进制日志。
[server]
log_bin=mysql-bin
show binlog events in ‘mysql-bin.000001’; #只是记录了一些版本信息,查看内容需要用到mysqlbinlog
mysqlbinlog mysql-bin.000001
show master logs; #可以查看到现在使用的二进制文件和文件的大小
#show master logs进行查看二进制的文件大小发生了变化
#mysqlbinlog mysql-bin.000001查看二进制文件的记录,会发现其中记录了刚刚的sql语句。
#查看二进制日志的记录格式,默认是mixed。(statement按语句记录|row按行记录|mixed混合)
statement
基于语句来记录——当你已经有相同的表的时候,就会发生还原不了的情况。
但是它能够很好的节省空间,你只需要记录一条sql语句。
row
基于行记录——也就是基于数据记录。
还原就避免了基于语句记录的缺点。
但是非常占用空间。
mixed
混合模式——数据库会自己去判定到底记录sql语句还是按行来记录。
它是一种折中模式——既可能出现两者的缺点,又在某种程度上规避了这种缺点。
log_bin_index=PATH #二进制日志索引位置
sync_binlog=1|0 #设定是否启用二进制日志同步功能
max_binlog_size=SIZE #单个二进制文件最大体积,默认为1G
expire_logs_days=0 #超过多少天就清除二进制日志,默认为0,代表不启用此功能
二进制日志手动滚动:flush logs;
二进制日志文件的构成:
日志文件:mysql-bin.000001 二级制格式
索引文件:mysql-bin.index 索引文件
show variables like ’%max_binlog_size%'; #其值刚好一个G,如果超过1G就会滚动生成一个新的。
show variables like ‘%log_bin_index%’;
数据库支持并发,但是二进制文件不支持。
开启为1的话,立马写入,就会涉及io操作,会影响数据库的性能,但是数据安全。
如果为0:等到资源空闲时写入,保障了性能。
如果数据库down了,设置为1没有丢失,设置为0可能会有数据的丢失。
show variables like ‘%expire_logs_days%’;
如果要删除,一般不设置自动删除,tar打包自己手动删除。
自动滚动:如果记录的日志大小超过最大值,那么会生成一个新的二进制日志。mysql-bin.000001——>mysql-bin.000002——>mysql-bin.000003
手动滚动:
flush logs; #手动滚动二进制日志
show master logs; #查看二进制日志
show master status; #查看当前使用二级制日志文件
在重启数据库之后二进制日志也会滚动。
#需要注意的是:日志的滚动只能往前,无法向后,因为这样的话还原就会有问题。二级制文件不要随意删除。
#日志滚动之后,mysql-bin.index会自动帮你记录到文件中。
#二进制日志是数据库之中最重要的日志。
#二级制日志的记录格式:时间——server id——end_log_pos——CRC32——thread id——exec_time——error_code
#sever id 如果你做了数据库的集群那么id号不能一样,它是一种身份标识。
#如果是主从:都要有一个server id ,如果都为1——它会以为是自己,就不会同步了。
#end_log_pos 日志的结束位置;thread id 执行事件的线程id号;exec_time 从执行(语句的时间戳)到写入花费的时间。
#error_code=0 错误代码
两种还原方式——基于位置和基于时间
还原工具——mysqlbinlog
#--start-datetime=
#--stop-datetime=
#--start-position=
#--stop-position=
中继日志:
复制架构中,备服务器用于保存主服务器的二进制日志中读取到的事件。
在复制架构之中,master的写操作记录到二进制文件之中,slave来同步master的写操作,具体过程如下:
1、slave的 I/O thread请求master的二进制文件
2、master通过dump thread将二进制的内容发送到salve
3、slave将接受到的内容存放到自己的中继日志之中
4、slave在通过SQL thread进行回放,同步到自己的数据库中
show variables like ‘%buffer_pool%’; #查看buffer_pool的大小
buffer_pool对于数据库的性能而言,起着重要的作用。搭好数据库,第一件事就要改这个参数。
事务日志是成组来的,默认是两个交替进行。
也是非常重要的一个日志。是由innodb自己来管理的。
大致过程如下:
1、数据库client的操作,默认开起事务且自动提交,事务操作会写到事务日志之中
2、再由事务日志同步到磁盘之中
3、将磁盘中的内容再读到内存,也就是buffer_pool,客户端请求数据就直接到内存之中获取。
没有提交的事务,那么做undo操作——rollback——自动帮你撤销。
错误日志开启之后,如果不指定文件的路径, 默认在系统日志/var/log/messages
这个时候记录的日志文件需要注意它的权限,可能会因为权限问题导致无法写入。
MariaDB——日志文件的更多相关文章
- MariaDB日志文件、备份与恢复
1. 数据库的6种日志 数据库有6种日志,分别是:查询日志.慢查询日志.错误日志.二进制日志.中继日志以及事务日志. 1> 查询日志 查询日志记录每一条sql语句,建议不开启,因为如果访问量较大 ...
- 你还可以再诡异点吗——SQL日志文件不断增长
前言 今天算是遇到了一个罕见的案例. SQL日志文件不断增长的各种实例不用多说,园子里有很多牛人有过介绍,如果我再阐述这些陈谷子芝麻,想必已会被无数次吐槽. 但这次我碰到的问题确实比较诡异,其解决方式 ...
- 【.net 深呼吸】写入日志文件
记录日志,一方面可以把日志写入系统的日志存储中,可在“事件查看器”窗口中查看:如果不喜欢写到系统的日志文件中,也可以写到自己定义的文件中. 其实,日志文件就是文本文件,可能有朋友会想到用写入文本文件的 ...
- Log4net入门(回滚日志文件篇)
在上一篇Log4net(日志文件篇)中,我们使用"log4net.Appender.FileAppender"将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会 ...
- Log4net入门(日志文件篇)
在上一篇Log4net入门(控制台篇)中,我们将日志信息输出到控制台中,在这一篇中,我们将描述如何将日志信息写到文件中.要将日志信息写入文件非常简单,只需要在Log4net.config配置文件中添加 ...
- SQL Server 2008 R2:快速清除日志文件的方法
本例,快速清理“students”数据库的日志,清理后日志文件不足1M. USE [master] GO ALTER DATABASE students SET RECOVERY SIMPLE WIT ...
- [转]ASP.NET Core 开发-Logging 使用NLog 写日志文件
本文转自:http://www.cnblogs.com/Leo_wl/p/5561812.html ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 . ...
- log4j分离日志输出 自定义过滤 自定义日志文件
普通的log4j.properties 定义: ### set log levels ### log4j.rootLogger = debug,D,E ## Disable other log log ...
- 记录SQL Server2008日志文件损坏的恢复过程
记录SQL Server2008日志文件损坏的恢复过程: 环境: 系 统:Windows Server2003 数据库:SQL Server2008 故障原因: 通过mstsc链接同一服务器时,用户界 ...
随机推荐
- acm数论之旅---扩展欧几里得算法
度娘百科说: 首先, ax+by = gcd(a, b) 这个公式肯定有解 (( •̀∀•́ )她说根据数论中的相关定理可以证明,反正我信了) 所以 ax+by = gcd(a, b) * k 也肯定 ...
- 【渗透测试】NSA Windows 0day漏洞+修复方案
这个漏洞是前段时间爆出来的,几乎影响了全球70%的电脑,不少高校.政府和企业都还在用Windows服务器,这次时间的影响力堪称网络大地震. ------------------------------ ...
- PyQt5数据可视化
1.下载PyQtGraph模块 Windows上下载: pip install pyqtgraph Linux上下载: pip3 install pyqtgraph MacOS上下载: pip3 in ...
- Q - Saruman's Army POJ - 3069
Saruman the White must lead his army along a straight path from Isengard to Helm's Deep. To keep tra ...
- 如何确认 fastboot unlock 解锁成功,如何确认DM-verity 已关闭
如何确认 fastboot unlock 解锁成功 1.fastboot 模式下按音量上键后是否提示 Unlock Pass...return to fastboot in 3s 2.重启后界面是否显 ...
- 基于 Chrome 浏览器的扩展插件来进行的安装Postman
我会给你一个安装包,见附件.你应该下载下来,解压缩到你喜欢的位置. 打开 Chrome 浏览器的「扩展程序」 点击「加载已解压的扩展程序...」按钮,找到你刚刚下载的安装包的位置,点击确定. 你去看看 ...
- hyfhaha大事记——luogu
成就墙 AK CSP-J 初赛 AK CSP-J 复赛 CSP- J 一等奖 CSP-S 一等奖 大事记 2017-09-20 13:54 注册洛谷账号 之后洛谷一直处于沉沦状态 2018 2018- ...
- Java基础知识笔记第七章:内部类和异常类
内部类 /* *Java支持在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类 */ 重要关系: /* *1.内部类的外嵌类在内部类中仍然有效,内部类的方法也可以外嵌类的方 ...
- python学习记录(持续更新)--最最最基础的一部分(方法,异常处理,注释,类)
写在前面 本系列教程针对有一定编程经验的伙伴快速入门python基础,一些涉及开发的常识问题,本文并不涉及. 方法 function def greet_user(name): print(f'Hi ...
- 最长公共子序列/子串 LCS(模板)
首先区分子序列和子串,序列不要求连续性(连续和不连续都可以),但子串一定是连续的 1.最长公共子序列 1.最长公共子序列问题有最优子结构,这个问题可以分解称为更小的问题 2.同时,子问题的解释可以被重 ...