首页 > 数据库 >MySQL日志管理

MySQL日志管理

时间:2023-10-08 16:02:33浏览次数:30  
标签:binlog log 管理 ## MySQL 120 mysql 日志

目录

MySQL日志管理

日志简介

错误日志

mysql> show variables like 'log_error';
+---------------+------------+
| Variable_name | Value      |
+---------------+------------+
| log_error     | ./db01.err |
+---------------+------------+

## 错误日志日志名:
$HOSTNAME.err

## 错误日志存储位置:
$datadir 数据目录下

## 错误日志默认是否开启:
开启的

## 如何修改配置:
vim /etc/my.cnf
[mysqld]
log_error=/opt/1.txt

## 日志文件必须提前创建出来,并且针对mysql用户有写入权限
touch /opt/1.txt
chown -R mysql.mysql /opt/1.txt

一般查询日志

root@localhost [(none)] >show variables like '%general%';
+------------------+--------------------------+
| Variable_name    | Value                    |
+------------------+--------------------------+
| general_log      | OFF                      |
| general_log_file | /app/mysql/data/db04.log |
+------------------+--------------------------+

## 常规日志日志名:
$HOSTNAME.log

## 常规日志存储位置:
$datadir 数据目录下

## 常规日志默认是否开启:
关闭

## 如何修改配置:
vim /etc/my.cnf
[mysqld]
general_log=1
general_log_file=/opt/xxx.log

二进制日志 binlog

mysql> show variables like '%log_bin%';
+---------------------------------+---------------------------------+
| Variable_name                   | Value                           |
+---------------------------------+---------------------------------+
| log_bin                         | ON                              |
+---------------------------------+---------------------------------+

## 常规的日志名
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
...

## 常规日志存储位置:
$datadir 数据目录下

## 常规日志默认是否开启
关闭

## 如何修改配置
### 开启binlog MySQL5.6
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format=row
#log-bin=/opt/zls-bin

### 开启binlog MySQL5.7
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server_id=1
binlog_format=row

binlog的工作模式

statement 语句模式
记录MySQL的SQL语句 DDL DML DCL

## MySQL5.6 默认语句模式
mysql> show variables like 'binlog_format';
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+

# 优缺点
- 优点:
	- 易读
	- 占用磁盘空间小
- 缺点:
	- 不严谨
row 行级模式
记录MySQL的SQL语句 DDL、DCL,DML记录每一行的变化过程

### ## MySQL5.7 默认行级模式
mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+

# 优缺点
- 优点:
	- 严谨
- 缺点
	- 不易读
	- 占用磁盘空间大
mixed 混合模式
statement 和 row 的混合
一般运维不用

查看binlog

## 查看语句模式
mysqlbinlog binlog名字

[root@db01 data]# mysqlbinlog mysql-bin.000001

## 查看行级模式
[root@db03 ~]# mysqlbinlog --base64-output=decode-rows -vvv /app/mysql/data/mysql-bin.000013

# 查看当前的binlog
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000016 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

# 查看有哪些binlog,每个binlog的大小
mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       622 |
| mysql-bin.000002 |       143 |
| mysql-bin.000003 |       387 |
| mysql-bin.000004 |       120 |
| mysql-bin.000005 |       120 |
| mysql-bin.000006 |       120 |
| mysql-bin.000007 |       120 |
| mysql-bin.000008 |       120 |
| mysql-bin.000009 |       120 |
| mysql-bin.000010 |       120 |
| mysql-bin.000011 |       120 |
| mysql-bin.000012 |       143 |
| mysql-bin.000013 |       143 |
| mysql-bin.000014 |       167 |
| mysql-bin.000015 |      2686 |
| mysql-bin.000016 |       120 |
+------------------+-----------+

# 查看binlog事件
mysql> show binlog events in 'mysql-bin.000015'\G
*************************** 1. row ***************************
   Log_name: mysql-bin.000015
        Pos: 4
 Event_type: Format_desc
  Server_id: 1
End_log_pos: 120
       Info: Server ver: 5.6.50-log, Binlog ver: 4
*************************** 2. row ***************************
   Log_name: mysql-bin.000015
        Pos: 120
 Event_type: Query
  Server_id: 1
End_log_pos: 220
       Info: create database binlog
*************************** 3. row ***************************
   Log_name: mysql-bin.000015
        Pos: 220
 Event_type: Query
  Server_id: 1
End_log_pos: 330
       Info: use `binlog`; create table test_binlog(id int)
*************************** 4. row ***************************
   Log_name: mysql-bin.000015
        Pos: 330
 Event_type: Query
  Server_id: 1
End_log_pos: 404
       Info: BEGIN
····等····

查看binlog内容和导出

mysqlbinlog --start-position=120 --stop-position=1035 mysql-bin.000007 > /tmp/test_binlog.sql
# -d db1 指定只查看db1库的操作
mysqlbinlog -d db1 --start-position=120 --stop-position=1035 mysql-bin.000007 > /tmp/test_binlog.sql

事件介绍

1)在binlog中最小的记录单元为event

2)一个事务会被拆分成多个事件(event)

## MySQL5.6 事件(event)特性
1)每个event都有一个开始位置(start position)和结束位置(stop position)。
2)所谓的位置就是event对整个二进制的文件的相对位置。
3)对于一个二进制日志中,前120个position是文件格式信息预留空间。
4)MySQL第一个记录的事件,都是从120开始的。
5)MySQL5.6空的binlog 143

## MySQL5.7 事件(event)特性
1)每个event都有一个开始位置(start position)和结束位置(stop position)。
2)所谓的位置就是event对整个二进制的文件的相对位置。
3)对于一个二进制日志中,前154个position是文件格式信息预留空间。
4)MySQL第一个记录的事件,都是从154开始的。
5)MySQL5.7空的binlog 177

使用binlog恢复数据案例

模拟数据
# 查看binlog信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000016 |      218 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 刷新一个新的binlog
mysql> flush logs;
Query OK, 0 rows affected (0.00 sec)
# 查看binlog信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000017 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 创建一个binlog库
mysql> create database binlog;
Query OK, 1 row affected (0.00 sec)
# 使用binlog库
mysql> use binlog
Database changed
# 创建test_binlog表
mysql> create table test_binlog(id int);
Query OK, 0 rows affected (0.00 sec)
# 插入数据1
mysql> insert into test_binlog values(1);
Query OK, 1 row affected (0.00 sec)
# 提交
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
# 查看binlog信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000017 |      531 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 插入数据2
mysql> insert into test_binlog values(2);
Query OK, 1 row affected (0.00 sec)
# 插入数据3
mysql> insert into test_binlog values(3);
Query OK, 1 row affected (0.00 sec)
# 提交
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
# 查看binlog信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000017 |      933 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 查看test_binlog表内的内容
mysql> select * from test_binlog;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)
# 更改数据1为10
mysql> update test_binlog set id=10 where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
# 提交
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
# 查看test_binlog表内的信息
mysql> select * from test_binlog;
+------+
| id   |
+------+
|   10 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)
# 查看binlog信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000017 |     1140 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 删除数据3
mysql> delete from test_binlog where id=3;
Query OK, 1 row affected (0.00 sec)
# 提交
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
# 查看test_binlog表内的信息
mysql> select * from test_binlog;
+------+
| id   |
+------+
|   10 |
|    2 |
+------+
2 rows in set (0.00 sec)
# 查看binlog信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000017 |     1341 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 查看库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| baixiong           |
| mysql              |
| performance_schema |
| test               |
| xx                 |
+--------------------+
模拟数据故障
# 删除test_binlog表
mysql> drop table test_binlog;
Query OK, 0 rows affected (0.00 sec)
# 删除binlog库
mysql> drop database binlog;
Query OK, 0 rows affected (0.00 sec)
# 查看binlog信息
mysql> show master status;
+------------------+----------+
| File             | Position |
+------------------+----------+
| mysql-bin.000017 |     1558 |
+------------------+----------+
恢复数据
# 1.查看当前使用的是哪个binlog?
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000017 |     1558 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

# 一般binlog写入的都为最后一个
mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       622 |
| mysql-bin.000002 |       143 |
| mysql-bin.000003 |       387 |
| mysql-bin.000004 |       120 |
| mysql-bin.000005 |       120 |
| mysql-bin.000006 |       120 |
| mysql-bin.000007 |       120 |
| mysql-bin.000008 |       120 |
| mysql-bin.000009 |       120 |
| mysql-bin.000010 |       120 |
| mysql-bin.000011 |       120 |
| mysql-bin.000012 |       143 |
| mysql-bin.000013 |       143 |
| mysql-bin.000014 |       167 |
| mysql-bin.000015 |      2686 |
| mysql-bin.000016 |       265 |
| mysql-bin.000017 |      1558 |
+------------------+-----------+

# 2.使用mysqlbinlog命令查看binlog内容
[root@db01 ~]# cd /app/mysql/data/
[root@db01 data]# mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000017

# 3.找到起点和结束的位置
120        和     1270

标签:binlog,log,管理,##,MySQL,120,mysql,日志
From: https://www.cnblogs.com/xiutai/p/17749316.html

相关文章

  • MySQL数据备份
    目录MySQL数据备份binlog存在问题binlog作用为什么要备份备份类型备份方式备份策略(每天一次全备,每小时一次增备)MySQL逻辑备份工具mysqldump所有库备份备份单个库备份时刷新binlog打点备份参数快照备份实用扩展选项额外扩展选项(很好用的)完整备份语句mysqldump的恢复(binlog日志临时......
  • mysql基础
    MySQL基础入门MySQL介绍什么是数据?数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。在计算机系统中,数据以二进制信息单元0,1的形式......
  • mysql三种安装方式
    mysql5.6三种安装方式mysql官网:mysql.com数据库排行目录mysql5.6三种安装方式MySQL安装包下载源码安装mysqlMySQL二进制安装源码安装启动报错报错MySQLyum安装包下载MySQLyum安装MySQL-5.7的版本源码安装二进制安装默认的生成初始密码缺少boost报错版本选择5.6:GA6-1......
  • MySQL用户权限管理
    目录MySQL用户权限管理MySQL用户管理MySQL用户管理:MySQL用户密码管理误删除root用户忘记root密码真正的root权限误删除了所有用户MySQL权限管理企业中权限设置MySQL用户权限管理MySQL用户管理MySQL中的用户不是只看用户名##优化MySQL用户mysql>truncatemysql.user;MySQ......
  • MySQL体系管理结构
    MySQL客户端与服务端模型MySQL是C/S结构的服务MySQL客户端mysqlmysqladminmysqldump图形化SQLyognavicatMySQL服务端mysqldMySQL服务端的连接方式TCP/IP连接mysql-uroot-p123-h10.0.0.51Socket连接mysql-uroot-p123-S/app/mysql/tmp/mysql.sock......
  • MySQL客户端命令
    目录MySQL客户端命令优化命令提示符mysqlmysqladminmysqldumpSQL层SQL语句DDL(DatabaseDefinitionLanguage)数据定义语言数据库create增:建库drop删:删库alter改表操作create增:建表数据类型数字类型字符串类型枚举类型浮点型时间戳类型字段属性(约束)drop删alter改DMLinsert增delete......
  • 资源清单编写MySQL,wordpress
    目录mysqlwordpresshttp://k8s.driverzeng.com/v1.19/mysql[root@master-1mysql]#catmysql.yamlapiVersion:"v1"kind:"Pod"metadata:name:mysql57//资源清单叫mysql57spec:nodeName:node-1......
  • 使用 Rancher 部署管理 K8S 集群
    目录使用Rancher部署管理K8S集群主机规划部署docker-ce(rancher)部署rancher使用Rancher部署管理K8S集群主机规划主机名称角色IP地址基础软件rancher管理k8s集群10.0.0.203docker-cemasterk8s集群主节点10.0.0.200docker-cenode1k8s集群......
  • 学生管理系统使用集合保存,不是用数据库的(仅供参考,网上找的,记录用)
    packagecom.ima;importcom.itheima.Student;importjava.util.ArrayList;importjava.util.Scanner;/*学生管理系统*/publicclassStudentManager{publicstaticvoidmain(String[]args){//创建集合对象,用于存储学生数据ArrayList<Student>a......
  • MySQL MHA
    MySQLMHA1.什么是MHAMHA(MasterHighAvailability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA的出现就是解决MySQL单点的问题。MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正......