数据库各类日志
 查询日志:
    记录每一条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
  二进制日志文件无法使用vim十进制来查看,只能使用mysql提供的二进制文件查看工具——mysqlbinlog
  mysqlbinlog mysql-bin.000001
  show master logs;  #可以查看到现在使用的二进制文件和文件的大小
  #执行一些sql命令:create database kkk character set utf8;
  #show master logs进行查看二进制的文件大小发生了变化
  #mysqlbinlog mysql-bin.000001查看二进制文件的记录,会发现其中记录了刚刚的sql语句。
  show variables like ‘%binlog_format%';
  #查看二进制日志的记录格式,默认是mixed。(statement按语句记录|row按行记录|mixed混合)
    statement
    基于语句来记录——当你已经有相同的表的时候,就会发生还原不了的情况。
    但是它能够很好的节省空间,你只需要记录一条sql语句。
    row
    基于行记录——也就是基于数据记录。
    还原就避免了基于语句记录的缺点。
    但是非常占用空间。
    mixed
    混合模式——数据库会自己去判定到底记录sql语句还是按行来记录。
    它是一种折中模式——既可能出现两者的缺点,又在某种程度上规避了这种缺点。
  sql_log_bin=1|0    #是否启用二进制日志
  log_bin_index=PATH   #二进制日志索引位置
  sync_binlog=1|0    #设定是否启用二进制日志同步功能
  max_binlog_size=SIZE  #单个二进制文件最大体积,默认为1G
  expire_logs_days=0   #超过多少天就清除二进制日志,默认为0,代表不启用此功能
  #mysql-bin.index使用十进制存储可以使用cat来查看。
  二进制日志手动滚动:flush logs;
  二进制日志文件的构成:
   日志文件:mysql-bin.000001 二级制格式
   索引文件:mysql-bin.index  索引文件
  #查看二进制日志文件的大小:
  show variables like ’%max_binlog_size%';  #其值刚好一个G,如果超过1G就会滚动生成一个新的。
  #查看索引文件的路径
  show variables like ‘%log_bin_index%’;
  #sync_binlog=1|0    #设定是否启用二进制日志同步功能
  数据库支持并发,但是二进制文件不支持。
  开启为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,客户端请求数据就直接到内存之中获取。
  数据库down了,起来之后,会检查事务日志,有哪些事务是提交了的,但没有写入磁盘,做redo操作。
  没有提交的事务,那么做undo操作——rollback——自动帮你撤销。
  mysql的进程是mysqld
 
错误日志:
  错误日志开启之后,如果不指定文件的路径, 默认在系统日志/var/log/messages
  这个时候记录的日志文件需要注意它的权限,可能会因为权限问题导致无法写入。
 
 

MariaDB——日志文件的更多相关文章

  1. MariaDB日志文件、备份与恢复

    1. 数据库的6种日志 数据库有6种日志,分别是:查询日志.慢查询日志.错误日志.二进制日志.中继日志以及事务日志. 1> 查询日志 查询日志记录每一条sql语句,建议不开启,因为如果访问量较大 ...

  2. 你还可以再诡异点吗——SQL日志文件不断增长

    前言 今天算是遇到了一个罕见的案例. SQL日志文件不断增长的各种实例不用多说,园子里有很多牛人有过介绍,如果我再阐述这些陈谷子芝麻,想必已会被无数次吐槽. 但这次我碰到的问题确实比较诡异,其解决方式 ...

  3. 【.net 深呼吸】写入日志文件

    记录日志,一方面可以把日志写入系统的日志存储中,可在“事件查看器”窗口中查看:如果不喜欢写到系统的日志文件中,也可以写到自己定义的文件中. 其实,日志文件就是文本文件,可能有朋友会想到用写入文本文件的 ...

  4. Log4net入门(回滚日志文件篇)

    在上一篇Log4net(日志文件篇)中,我们使用"log4net.Appender.FileAppender"将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会 ...

  5. Log4net入门(日志文件篇)

    在上一篇Log4net入门(控制台篇)中,我们将日志信息输出到控制台中,在这一篇中,我们将描述如何将日志信息写到文件中.要将日志信息写入文件非常简单,只需要在Log4net.config配置文件中添加 ...

  6. SQL Server 2008 R2:快速清除日志文件的方法

    本例,快速清理“students”数据库的日志,清理后日志文件不足1M. USE [master] GO ALTER DATABASE students SET RECOVERY SIMPLE WIT ...

  7. [转]ASP.NET Core 开发-Logging 使用NLog 写日志文件

    本文转自:http://www.cnblogs.com/Leo_wl/p/5561812.html ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 . ...

  8. log4j分离日志输出 自定义过滤 自定义日志文件

    普通的log4j.properties 定义: ### set log levels ### log4j.rootLogger = debug,D,E ## Disable other log log ...

  9. 记录SQL Server2008日志文件损坏的恢复过程

    记录SQL Server2008日志文件损坏的恢复过程: 环境: 系 统:Windows Server2003 数据库:SQL Server2008 故障原因: 通过mstsc链接同一服务器时,用户界 ...

随机推荐

  1. acm数论之旅---扩展欧几里得算法

    度娘百科说: 首先, ax+by = gcd(a, b) 这个公式肯定有解 (( •̀∀•́ )她说根据数论中的相关定理可以证明,反正我信了) 所以 ax+by = gcd(a, b) * k 也肯定 ...

  2. 【渗透测试】NSA Windows 0day漏洞+修复方案

    这个漏洞是前段时间爆出来的,几乎影响了全球70%的电脑,不少高校.政府和企业都还在用Windows服务器,这次时间的影响力堪称网络大地震. ------------------------------ ...

  3. PyQt5数据可视化

    1.下载PyQtGraph模块 Windows上下载: pip install pyqtgraph Linux上下载: pip3 install pyqtgraph MacOS上下载: pip3 in ...

  4. 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 ...

  5. 如何确认 fastboot unlock 解锁成功,如何确认DM-verity 已关闭

    如何确认 fastboot unlock 解锁成功 1.fastboot 模式下按音量上键后是否提示 Unlock Pass...return to fastboot in 3s 2.重启后界面是否显 ...

  6. 基于 Chrome 浏览器的扩展插件来进行的安装Postman

    我会给你一个安装包,见附件.你应该下载下来,解压缩到你喜欢的位置. 打开 Chrome 浏览器的「扩展程序」 点击「加载已解压的扩展程序...」按钮,找到你刚刚下载的安装包的位置,点击确定. 你去看看 ...

  7. hyfhaha大事记——luogu

    成就墙 AK CSP-J 初赛 AK CSP-J 复赛 CSP- J 一等奖 CSP-S 一等奖 大事记 2017-09-20 13:54 注册洛谷账号 之后洛谷一直处于沉沦状态 2018 2018- ...

  8. Java基础知识笔记第七章:内部类和异常类

    内部类 /* *Java支持在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类 */ 重要关系: /* *1.内部类的外嵌类在内部类中仍然有效,内部类的方法也可以外嵌类的方 ...

  9. python学习记录(持续更新)--最最最基础的一部分(方法,异常处理,注释,类)

    写在前面 本系列教程针对有一定编程经验的伙伴快速入门python基础,一些涉及开发的常识问题,本文并不涉及. 方法 function def greet_user(name): print(f'Hi ...

  10. 最长公共子序列/子串 LCS(模板)

    首先区分子序列和子串,序列不要求连续性(连续和不连续都可以),但子串一定是连续的 1.最长公共子序列 1.最长公共子序列问题有最优子结构,这个问题可以分解称为更小的问题 2.同时,子问题的解释可以被重 ...