当前位置:Gxlcms > 数据库问题 > MySQL日志简介

MySQL日志简介

时间:2021-07-01 10:21:17 帮助过:4人阅读

(2) mysqld运行中产生的错误信息; 

(3) event scheduler运行时产生的信息;

(4) 主从复制架构中,从服务器复制线程启动时产生的日志;

错误日志是否开启,可以使用下述命令查看

SELECT @@global.log_error;
#默认是开启的,即指定具体日志文件路径 如/var/log/mariadb/mariadb.log 
#如果未开启,则查询的结果是OFF


4、二进制日志

用于记录引起数据改变或存在引起数据改变的潜在可能性的语句(STATEMENT)或改变后的结果(ROW),也可能是二者混合;

作用:

    重放 (replay),即发生故障时可以使用二进制日志重新操作一遍故障发生前的指令

试想一下,在进行了全量备份数据库后,过了一天主数据库设备突然出现故障,这时我们虽然能够使用全量备份来恢复数据库,但是前一天的数据还未来得及备份,也就是说

少了一天的数据,这种情况下就可以使用二进制日志恢复缺失的一天的信息;

下面举个例子说明二进制日志在数据恢复中的重要作用:

  •     创建数据库、表,插入数据

CREATE DATABASE RDBMS;
USE RDBMS;
CREATE TABLE tbl (id int primary key,name char(30) not null,age int not null);
INSERT INTO tbl VALUES (1,‘xiao wang‘,20),(2,‘xiao li‘,22);
  • 检查信息

MariaDB [RDBMS]> DESC tbl;         
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | NO   | PRI | NULL    |       |
| name  | char(30) | NO   |     | NULL    |       |
| age   | int(11)  | NO   |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

MariaDB [RDBMS]> SELECT * FROM tbl;
+----+-----------+-----+
| id | name      | age |
+----+-----------+-----+
|  1 | xiao wang |  20 |
|  2 | xiao li   |  22 |
+----+-----------+-----+
2 rows in set (0.00 sec)
  • 修改mysql的服务配置文件,开启二进制日志功能

rpm -ql mariadb-server
#可以查到配置文件的位置
vim /etc/my.cnf.d/server.cnf
[server]
log_bin = /app/logs/master-log
#指定二进制日志的存放路径,之所以在配置文件修改而不用命令行,是因为命令行不支持开启二进制日志功能
  • 查看二进制日志信息

SHOW MASTER|BINARY LOGS;
#查看二进制日志文件列表
SHOW MASTER STATUS;
#查看当前正在使用的二进制日志文件
SHOW BINLOG EVENTS IN ‘master-log.000001‘;
#查看二进制日志文件的事件信息
  • 将当前数据库进行全量备份

mysqlbinlog  -uroot -p master-log.000001 > /root/binlog.sql
#binlog.sql就是备份的数据库文件
#mysqlbinlog是mysql自带的二进制日志工具

当在全新的备份服务器上就行恢复时

mysql < /root/binlog.sql

按上述方式恢复即可


在/app/logs/下的二进制文件是无法直接使用cat或less查看的,所以需要使用mysqlbinlog专用工具

mysqlbinlog  -uroot -pcentos master-log.000007 -j 430 --stop-position=874
#-j 指定开始位置
#--stop-position指定结束位置

查看的内容包含以下信息:

事件的起始位置# at 553

事件发生的日期时间:#160831  9:56:08

事件发生的服务器id:server id 1

事件的结束位置:end_log_pos 624

事件的类型:Query

事件发生时所在服务器执行此事件的线程的ID: thread_id=2 

语句的时间戳与将其写入二进制日志文件中的时间差:exec_time=0

错误代码:error_code=0

设定事件发生时的时间戳:SET TIMESTAMP=1472608568/*!*/;

事件内容:BEGIN


以上就是关于mysql日志的简单介绍


本文出自 “a_pan” 博客,谢绝转载!

MySQL日志简介

标签:linux、mysql

人气教程排行