广告
返回顶部
首页 > 资讯 > 数据库 >数据库日志系统分解
  • 690
分享到

数据库日志系统分解

2024-04-02 19:04:59 690人浏览 八月长安
摘要

标题索引日志分类日志操作日志分解日志分类    在数据库系统中日志主要分为6类,具体如下:    1、查询日志:主要记录日常查询的记录; 

标题索引


  • 日志分类

  • 日志操作

  • 日志分解


日志分类

    在数据库系统中日志主要分为6类,具体如下:

    1、查询日志:主要记录日常查询的记录;

    2、慢查询日志:主要记录查询时长超过设置的数值时间的语句,方便DBA运维人员进行查询;

    3、错误日志:主要用于记录错误的事件,方便DBA运维人员对数据库的操作和日常维护;

    4、二进制日志:主要用于记录sql语句对数据库的操作,方便DBA运维人员审计和备份恢复;

    5、中继日志:主要用于数据库集群架构设计中数据库的主备;

    6、事务日志:主要用于防止数据库服务器异常中断时,事物的恢复。

日志操作

    1.查询日志,查询日志可以记录在文件系统的文件中,也可以记录在自身数据库的表中,具体的记录方式可通过全部变量进行查看或更改,默认只记录在文件之中,建议关闭查询日志

MariaDB [(none)]>  show global variables like 'general_log%';
+------------------+----------------+
| Variable_name    | Value          |
+------------------+----------------+
| general_log      | ON             |
| general_log_file | Nginxser02.log |   #相对目录,相对数据文件安装的目录
+------------------+----------------+
2 rows in set (0.00 sec)
MariaDB [(none)]>  show global variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |               #值可以为file|table|none
+---------------+-------+
1 row in set (0.00 sec)

    2.慢查询日志,执行时间超出指定查询的日志,慢查询有可能数据库设计的不合理或表被定非设计原因,具体验证或修改可根据如下示例

#查询慢查询设定时长,想修改时长并永久生效,写配置文件
MariaDB [(none)]> show global variables like 'long_query_time'; 
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
MariaDB [(none)]> show global variables like 'slow_query%';
+---------------------+---------------------+
| Variable_name       | Value               |
+---------------------+---------------------+
| slow_query_log      | OFF                 |
| slow_query_log_file | nginxser02-slow.log |
+---------------------+---------------------+
2 rows in set (0.00 sec)
#慢查询日志记录的策略设定
MariaDB [(none)]> show global variables like 'log_slow%';
+---------------------+--------------------------------------------------------------------------------------------------------------+
| Variable_name       | Value                                                                                                        |
+---------------------+--------------------------------------------------------------------------------------------------------------+
| log_slow_filter     | admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
| log_slow_queries    | OFF                                                                                                          |
| log_slow_rate_limit | 1                                                                                                            |
| log_slow_verbosity  |                                                                                                              |
+---------------------+--------------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

    3.错误日志,错误日志记录所有数据库生命周期中所有的错误信息,具体如下操作

MariaDB [(none)]> show global variables like 'log_error%';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| log_error     | /var/log/mariadb/mariadb.log |
+---------------+------------------------------+
1 row in set (0.00 sec)
#设置错误警告信息,1表示记录,0表示不记录
MariaDB [(none)]> show global variables like 'log_war%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings  | 1     |
+---------------+-------+
1 row in set (0.00 sec)

    4.二进制日志,文件也为二进制文件,可利用数据库的恢复等,默认情况下是关闭的,且只能在配置文件中进行修改,其中变量sql_log_bin是否记录二进制日志的开关,而log-bin是记录二进制文件的路径,可以使用绝对路径,也可以使用基于数据库安装路径的相对路径,max_binlog_size是默认单个二进制文件最大大小,默认为1G,超出此大小则进行日志滚动,当然重启服务时也会进行滚动,sync_bin_log默认情况值为0,不会将内存中的日志实时同步进磁盘,若服务器异常断电则日志丢失,数据丢失,是否开启此功能根据架构设定自行设置,具体如下

#默认情况下是开启了二进制文件记录,但是未指定二进制文件的记录位置
MariaDB [(none)]> show global variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF   |
+---------------+-------+
1 row in set (0.00 sec)
MariaDB [(none)]> show global variables like 'sql_log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_log_bin   | ON    |
+---------------+-------+
1 row in set (0.00 sec)
MariaDB [(none)]> show global variables like 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 0     |
+---------------+-------+
1 row in set (0.00 sec)

     开启二进制文件所指定的路径路径(相对数据库安装的路径),并设定记录在文件Mysql-bin文件中,具体配置如下

[ root@Centos7 ~ ]#vim /etc/my.cnf
[mysqld]z
 log-bin=mysql-bin
 #记录日志时的格式,格式有基于statement、raw或者二者的混杂格式
 binlog_fORMat=mixed

    再次登陆数据库进行验证

MariaDB [(none)]> show global variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.00 sec)
MariaDB [(none)]> help show ;
Name: 'SHOW'
Description:
SHOW has many forms that provide information about databases, tables,
columns, or status information about the server. This section describes
those following:

SHOW AUTHORS
SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
MariaDB [(none)]> show binary logs;  #查看正在使用中的二进制日志
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       264 |
| mysql-bin.000002 |       245 |
+------------------+-----------+
2 rows in set (0.00 sec)
MariaDB [(none)]> show binlog events in 'mysql-bin.000002';
+------------------+-----+-------------+-----------+-------------+-------------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                      |
+------------------+-----+-------------+-----------+-------------+-------------------------------------------+
| mysql-bin.000002 |   4 | Format_desc |         1 |         245 | Server ver: 5.5.52-MariaDB, Binlog ver: 4 |
+------------------+-----+-------------+-----------+-------------+-------------------------------------------+
1 row in set (0.00 sec)
#查看二进制文件的索引文件,通过索引文件查看有多少个滚动日志文件
[ root@nginxser02 ~ ]#cat /var/lib/mysql/mysql-bin.index 
./mysql-bin.000001
./mysql-bin.000002
#通过专用命令查看二进制文件
[ root@nginxser02 ~ ]#mysqlbinlog /var/lib/mysql/mysql-bin.000002
;
;
;
DELIMITER ;
# at 4
#171130  4:13:21 server id 1  end_log_pos 245 	Start: binlog v 4, server v 5.5.52-MariaDB created 171130  4:13:21 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK;
BINLOG '

    5.中继日志,从犯服务器用于保存从主服务器的二进制日志中读取到的事件

    6.事务日志工作原理主要是在事物开始时,在内存中划分一个buffer用于缓存事务日志,另外防止事务日志在内存中磁盘文件中的事物分组文件满时同步失败,因此在磁盘上创建一组文件,一组文件默认为2个文件,方便buffer向磁盘文件同步日志,磁盘文件中的事物日志再次向数据库系统同步,防止事物异常丢失。

数据库日志系统分解

图1-1 事物日志结构图

    事务日志默认配置buffer为8M,每文件大小为5M,每组中有2个文件,事务日志存储路径为相对路径的根目录,具体如下:

MariaDB [(none)]> show global variables like 'innodb_log%';
+---------------------------+---------+
| Variable_name             | Value   |
+---------------------------+---------+
| innodb_log_block_size     | 512     |
| innodb_log_buffer_size    | 8388608 |
| innodb_log_file_size      | 5242880 |
| innodb_log_files_in_group | 2       |
| innodb_log_group_home_dir | ./      |
+---------------------------+---------+
5 rows in set (0.00 sec)

    查看事物在磁盘中同步的日志文件

[ root@nginxser02 mysql ]#ls -lh /var/lib/mysql/ib_logfile*
-rw-rw---- 1 mysql mysql 5.0M Nov 30 05:06 /var/lib/mysql/ib_logfile0
-rw-rw---- 1 mysql mysql 5.0M Nov  8 22:56 /var/lib/mysql/ib_logfile1

    另外事物日志有redo log 和undo log,redo即为事物完成且保存在事物日志之中,但并未同步至数据系统之中,因此要同步进数据库系统必须将事物日志进行redo,undo即为并未完成的事物且保存在事物日志之中,此时需要事物回滚,将之前的事物undo。

您可能感兴趣的文档:

--结束END--

本文标题: 数据库日志系统分解

本文链接: https://www.lsjlt.com/news/37311.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 数据库日志系统分解
    标题索引日志分类日志操作日志分解日志分类    在数据库系统中日志主要分为6类,具体如下:    1、查询日志:主要记录日常查询的记录; ...
    99+
    2022-10-18
  • SQL Server数据库日志分离
    有时候我们经常会遇见,数据库日志因为过大,而占据着磁盘大量空间。 所以当磁盘空间不足的时候我们要定期清理一下过大的一些日志文件。1.清理之前先分离日志2.删除数据库的日志,找到你存储数据库日志的地方,...
    99+
    2022-10-18
  • 分析mysql系统库日志信息记录表
    这篇文章主要介绍“分析mysql系统库日志信息记录表”,在日常操作中,相信很多人在分析mysql系统库日志信息记录表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析mysq...
    99+
    2022-10-18
  • 数据库的binlog日志
    1.row每一行的日志都会记录2.statement只记录修改数据的每条sql3.mixed在statement和row格式进行自动选择 1.mysql_binlog_format = mixedlog_b...
    99+
    2022-10-18
  • 【MySQL】数据库慢查询日志分析--Lepus
    [root@wallet04 ~]# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm [root@wa...
    99+
    2022-10-18
  • PHP 日志系统中的大数据分析技术有哪些?
    PHP 是一种非常流行的编程语言,很多网站和应用程序都是使用 PHP 编写的。在这些应用程序中,日志系统是非常重要的一部分,它能够帮助开发人员快速定位问题并解决它们。但是,随着数据量的增加,传统的日志系统已经无法满足需求,因此,大数据分析...
    99+
    2023-07-28
    日志 大数据 javascript
  • SQLServer数据库日志已满如何解决
    本篇文章给大家分享的是有关SQLServer数据库日志已满如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  SQLServer数据库日...
    99+
    2022-10-18
  • SQL数据库日志已满解决方法
    这篇文章将为大家详细讲解有关SQL数据库日志已满解决方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。当前的解决方法是:把硬盘上的其他文件删除,以空出硬盘空...
    99+
    2022-10-18
  • 在Windows系统中配置开启MySQL数据库日志的步骤
    第一步:在终端窗口中查看日志开启状态         1.首先Win+R,打开命令运行框,输入cmd打开终端窗口。           2.输入指令mysql -u root -p回车输入密码进入mysql数据库。          3...
    99+
    2023-09-04
    数学建模 mysql 数据库
  • 删除sqlserver数据库日志和没有日志的数据库的恢复办法
    这篇文章将为大家详细讲解有关删除sqlserver数据库日志和没有日志的数据库的恢复办法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、删除数据库日志文件...
    99+
    2022-10-18
  • ASP.NET Core的日志系统实例分析
    本文小编为大家详细介绍“ASP.NET Core的日志系统实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core的日志系统实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-02
  • 如何分析Linux系统日志文件
    这篇文章的内容主要围绕如何分析Linux系统日志文件进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在Linux系统中日志是一个非常重要的文件,日志文...
    99+
    2023-06-28
  • Linux系统日志分析基本教程
    本篇内容介绍了“Linux系统日志分析基本教程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux 系统日志许多有价值的日志文件都是由 ...
    99+
    2023-06-13
  • informix数据库的日志模式
        今天操作数据库进行批量DML操作的时候,报了一个以前没有见过的错误, java.sql.SQLException: No Transaction I...
    99+
    2022-10-18
  • pg数据库日志挖掘WalMiner
    WalMiner是从PostgreSQL的WAL(write ahead logs)日志中解析出执行的SQL语句的工具,并能生 成出对应的undo SQL语句。 referenceXlogMiner renamed to WalMiner ...
    99+
    2018-05-22
    pg数据库日志挖掘WalMiner
  • 【Oracle Database】数据库日志管理
    查询日志文件 SQL> col member for a50 SQL> select group#,status,type,member from v$logfile order by...
    99+
    2022-10-18
  • 如何理解Python日志系统 Eliot
    这篇文章将为大家详细讲解有关如何理解Python日志系统 Eliot,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Eliot 是一个 Python 日志系统,不只是为简单应用程序所设计,更主...
    99+
    2023-06-02
  • 如何理解Linux的系统日志
    本篇内容主要讲解“如何理解Linux的系统日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Linux的系统日志”吧!syslogd & klogd   --...
    99+
    2023-06-13
  • 怎么用系统日志了解你的Linux系统
    这篇文章将为大家详细讲解有关怎么用系统日志了解你的Linux系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux 系统日志非常重要。后台运行的程序(通常被称为守护进程或者服务进程)处理了你 Lin...
    99+
    2023-06-16
  • Go语言分布式日志系统,你真的了解吗?
    随着互联网技术的不断发展,越来越多的应用程序需要处理大量的日志数据。为了更好地管理和分析这些日志,分布式日志系统应运而生。在这个领域里,Go语言也有着自己的优势和特色。本文将介绍Go语言分布式日志系统的基本概念、实现原理和代码演示,帮助读...
    99+
    2023-09-30
    分布式 日志 http
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作