【MySQL】binlog常见问题

news/2024/9/21 3:33:32/文章来源:https://www.cnblogs.com/luyj00436/p/18373411

https://mp.weixin.qq.com/s/n9vWkee2N-gpXpOHIYtRJg

关于binlog,这里常见的问题如下:

  1. binlog是什么
  2. binlog的配置和查看
  3. binlog的类型
  4. binlog如何数据恢复
  5. binlog是逻辑日志还是物理日志
  6. binlog的作用

binlog是什么

binlo(binary log),是MySql的二进制日志文件,这个文件记录了我们所有的DDL,DML,TCL等操作,即所有会改变数据库的操作,如表的创建、数据的插入更新和删除等。

题外话,介绍一下数据库的分类

  1. DDL:Data Definition Language,数据定义语言
    1. 用来操作数据库、表、列等,比如 CREATE、ALTER、DROP
  2. DML:Data Manipulation Language,数据操作语言
    1. 用来操作表里的数据,比如 INSERT、UPDATE、DELETE
  3. DCL:Data Control Language,数据控制语言
    1. 用来操作访问权限等,比如 GRANT
  4. DQL:Data Query Language,数据查询语言
    1. 用来查询数据,比如 SELECT
  5. TCL:Transaction Control Language,事务控制语言
    1. 用于数据库的事务管理,比如 COMMIT,ROLLBACK
缩写 全称 描述
DDL Date Definition Language 数据库定义语言,用来操作数据库、表、列等,比如 CREATE、ALTER、DROP
DML Data Manipulation Language 数据库操作语言,用来操作表里的数据,比如 INSERT、UPDATE、DELETE
DCL Data Control Language 数据控制语言,用来操作访问权限等
DQL Data Query Language 数据查询语言,用来查询数据,比如 SELECT
TCL Transaction Control Language 事务控制语言,用于数据库的事务管理,比如 COMMIT,ROLLBACK

binlog的配置和查看

1)binlog查看配置

我们可以通过以下命令查看binlog日志是否打开,以及存储的文件夹:

show variables like '%log_bin%';

 

返回结果如下:

其主要字段含义分表如下:

字段 含义
log_bin 表示是否开启binlog
log_bin_basename 表示的是 binlog 所在的文件夹
log_bin_index 表示的是 binlog 的索引文件,我们可以在其中找到所有的 binlog 日志
sql_log_bin 用于主从复制,这个参数关闭后,主库的改动不会记录到 binlog,不会复制到从库

log_bin_basename 指向的是 binlog 存储的文件夹,在后面我们查看 binlog 具体内容的时候,会需要进入到这个文件夹进行查看。

2) binlog 查看

我们可以通过下面的命令查看全部的binlog文件。

show BINARY LOGS;
show MASTER LOGS;

显示内容如下:

 

binlog的类型

binlog有三种类型,分别是: STATEMENT 、 ROW 和 MIXED

这里我们先介绍一下如何查看和修改binlog类型。

1. 查看binlog的类型

命令如下:

SHOW VARIABLES LIKE 'binlog_format';

输出binlog类型

 表示binlog的保存烈性是log

2.修改binlog类型

修改 binlog 类型我们到 binlog 文件中修改,这里我们修改 mysqld.cnf(Linux系统中),修改 binlog_format 的值,没有这个配置项的话加一行,如下:

binlog_format = STATEMENT

保存之后重启MySQL,就可以发现参数发生了变化。

3.binlog的类型。含义及其优缺点

类型 说明 适用场景 优点 缺点
STATEMENT STATEMENT 类型记录的是执行 SQL 语句的内容,比如 INSERT、UPDATE、DELETE 等语句本身。 适用简单SQL语句场景。比如单条数据的插入、更新、删除等。 日志文件小,可读性强 某些复杂问题出现不一致情况
ROW 存储的是数据行的变更,会包含变更前后的内容 精确记录数据行变更的常见 可以精确记录行数据,避免STATEMENT类型可能出现的数据不一致的问题 日志文件大,可读性差
MIXED 根据具体情况自动选择STATEMENT 或ROW类型来记录数据更改   兼顾了 STATEMENT 和 ROW 两种类型的有点,既可以节约空间,也可以精确记录数据变更 因为是系统是自动选择类型来记录,所以可能存在选择不够理想的记录方式从而导致一些不一致或者是性能问题

binlog如何数据恢复

在介绍如何恢复数据前,先介绍一下binlog的文件保存机制。

binlog文件保存机制

  • binlog文件内容为某一刻开始保存的日志记录。
  • 当我们重启时,系统会自动为我们新建一个日志文件。重启之后之后所有数据操作都会被放到新的binlog文件里面。
  • 我们还快通过flush logs 操作手动新建一个binlog日志。

1. 恢复数据前提

  • 已打开binlog日志记录
  • 有一个备份库,这个备份库作用是在误操作后可以快速从最近时间点进行恢复(来源可以每天或更小粒度对目标数据库定时保存)

2.恢复数据步骤

1)停止写入更新操作

2)执行flush logs

3) 导出binlog日志

4)替换

binlog是逻辑日志还是物理日志

介绍一下 MySQL 中关于逻辑日志与物理日志的区别。

所谓逻辑日志指的是记录数据库操作的日志,比如 INSERT、UPDATE 等逻辑操作。

而物理日志则是指记录数据的各种存储细节,比如 MySQL 具体某个数据页的写入和修改数据等。

所以,binlog 则属于逻辑日志。

binlog的作用

数据库的备份和恢复

数据同步(主从赋值模式下,主库的更改会通过binlog的方式同步到从库)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/789003.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【私有云场景案例分享②】批量装包与冒烟测试的自动化实现

利用AirtestIDE企业版与DeviceKeeper结合的多机跑测方案不仅解决了传统测试流程中的效率瓶颈,还为整个产品开发生命周期带来了革命性的变化!此文章来源于项目官方公众号:“AirtestProject” 版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言 在…

MySQL 延迟从库介绍

延迟从库主要适用于需要增强数据安全性和提高系统可用性的场合。通过合理配置和监控,可以有效利用延迟从库的优势来增强数据库系统的稳定性、可靠性和性能。前言: 我们都知道,MySQL 主从延迟是一件很难避免的情况,从库难免会偶尔追不上主库,特别是主库有大事务或者执行 DD…

使用open3d合并ply模型

import open3d as o3d from scipy.ndimage import binary_fill_holesdef merge_ply(ply1, ply2, output_path):# 加载两个多边形模型mesh1 = o3d.io.read_triangle_mesh(ply1)mesh2 = o3d.io.read_triangle_mesh(ply2)# 使用 + 运算符合并两个多边形模型merged_mesh = mesh1 + …

淘宝商品API接口:电商数据的金钥匙

在数字化浪潮的推动下,电商行业蓬勃发展,数据成为企业最宝贵的资产之一。淘宝,作为中国乃至全球最大的在线零售平台,其庞大的商品数据蕴含着无限商机。如何高效地获取并利用这些数据,成为电商从业者和开发者关注的焦点。本文将带您了解淘宝商品API接口的强大功能,以及如何…

DB9和DB15的引脚编号

1、DB9的引脚编号2、DB15的引脚编号

Win10笔记本,蓝牙设备自动断开

在Win10笔记本设备使用中,有些用户在使用蓝牙设备(蓝牙耳机)时常常会遇到自动断开问题,以下是参考解决方案:设置   ➡️  系统   ➡️  电源和睡眠   ➡️  其他电源设置由于默认的设置,会触发USB选择性暂停,将上图所圈出的配置,由已启用改为已禁用,然后确

[学习笔记] Splay Treap 平衡树 - 数据结构

[学习笔记] Splay & Treap 平衡树 - 数据结构 Splay 树又名伸展树,一种平衡二叉查找树,通过 \(\text{Splay}\) 操作不断把节点旋到根节点来维护整颗树的平衡。说人话,很玄学的玩意,复杂度是单 log 级别的。为啥是单 log,科学的解释请移步 OI-WIKI。不科学的解释就是,…

哈希-快乐数

解决这个问题的关键在于,判断结束遍历的条件,即当n!=1 或者 在循环过程中,没有出现过重复的数。class Solution:def isHappy(self, n: int) -> bool:def get_score(n):sum_ = 0while n > 0:end_ = n % 10sum_ += end_ ** 2 n = n // 10return sum_data_set = set()wh…

openGauss-资源池化特性说明

openGauss- 资源池化特性说明 可获得性 本特性自openGauss 3.1.1 版本开始引入。 特性简介 本特性提供主备机共享一份存储的能力,实现基于磁阵设备的资源池化HA部署形态,解决传统HA部署下存储容量较单机翻倍的问题,同时备机支持实时一致性读。资源池化架构图如下图所示。 图…

databaseId 不匹配导致Mybayis报错:Invalid bound statement (not found)

问题 后端调用Mapper方法报错:Invalid bound statement (not found) 排查过程按网上方式逐一排查,都未解决问题 网上搜不到解决方案,只能查看源码了 首先定位到com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean#buildSqlSessionFactory方法 打上一个…

nginx之ssl认证(https访问)

ngx_http_ssl_module ngx_http_ssl_module模块:  ssl on | off;            为指定虚拟机启用HTTPS protocol, 建议用listen指令代替  ssl_certificate file;         当前虚拟主机使用PEM格式的证书文件  ssl_certificate_key file;…

nginx基于用户的访问控制

ngx_http_auth_basic_module模块实现基于用户的访问控制,使用basic机制进行用户认证  auth_basic string | off;  auth_basic_user_file file;Default: —  Context: http, server, location, limit_exceptlocation /admin/ {     auth_basic "Admin Area"…