当前位置: 首页 > news >正文

网站建设优化服务好么/2022年适合小学生的新闻

网站建设优化服务好么,2022年适合小学生的新闻,商城网站建设-,开发公司管理规章制度原文链接:https://zhuanlan.zhihu.com/p/697078870 目录: binlog 是什么binlog 配置和查看binlog 的类型binlog 如何恢复数据binlog 是逻辑日志还是物理日志binlog 作用 注意:以下所有的操作都在 MySQL 8.0 版本实现。 1、binlog 是什么 …

原文链接:https://zhuanlan.zhihu.com/p/697078870

目录:

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

注意:以下所有的操作都在 MySQL 8.0 版本实现。

1、binlog 是什么

首先介绍一下,对于一个 SQL 语句,它常常被分为以下几种类型:

  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

而 binlog,即 binary log,是 MySQL 的二进制日志文件,这个文件记录了我们所有的 DDL,DML,TCL 等操作,比如表的创建,数据的插入、更新和删除等。

比如我们下面执行的创建数据库、表,插入、更新数据,在 binlog 配置开启的情况下,都会被记录到 binlog 中:

CREATE DATABASE db_test DEFAULT CHARACTER set utf8;create table users (id int not null auto_increment primary key,name varchar(20) not null,email varchar(100) default ""
);insert into users (name, email) values("张三", "12345@qq.com"), ("李四", "345123@qq.com");update users set email = "4123@qq.com" where id=1;

2、binlog 配置和查看

1) binlog 查看配置

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

show variables like '%log_bin%';

显示的内容如下:

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

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

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

2) binlog 查看

我们可以通过下面的命令查看全部的 binlog 文件,在这里,一个 binlog 版本就是一个文件:

show binary logs;show master logs;

上面这两条命令都可以显示出 binlog 文件,内容显示如下:

3、binlog 的类型

binlog 记录的类型有三种,一种是 STATEMENT,一种是 ROW,一种是 MIXED

在介绍其具体含义前,我们先介绍一下如何查看和修改 binlog 类型,以及查看 binlog 内容。

1. 查看 binlog 类型

我们可以通过下面的命令查看 binlog 保存的类型:

SHOW VARIABLES LIKE 'binlog_format';

输出内容如下:

表示 binlog 保存的类型是 ROW

2. 修改 binlog 类型

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

binlog_format = STATEMENT

保存之后重启 MySQL,再次查询就可以看到这个参数有变化了:

3. binlog 类型及具体含义

其含义和示例分别如下:

1) STATEMENT

STATEMENT 类型记录的是执行 SQL 语句的内容,比如 INSERT、UPDATE、DELETE 等语句本身。

比如:

insert into users (name, email) values("张三", "12345@qq.com"), ("李四", "345123@qq.com");
update users set email = "4123@qq.com" where id=1;

在 STATEMENT 类型下,上面这两句 SQL 在 binlog 中记录的就是这几句 SQL 本身。

通过查询 binlog 日志,比如我们下面执行的语句,可以看到输出的 info 那一列有我们刚刚执行的 insert 和 update 语句:

show binlog events in 'binlog.000017';

我们也可以使用 mysqlbinlog 命令在 shell 对这个日志文件进行查看:

mysqlbinlog binlog.000017

就可以看到输出的信息里会包含我们前面执行的两条命令

2) ROW

ROW 类型记录的是执行 SQL 语句前后的变更,会包含变更前后完整数据行的内容。

将 binlog_format 的配置改为 ROW 后,重新执行几条插入或者更新数据的命令,在 MySQL 客户端执行 show binlog events 命令,就可以看到日志记录里有对应的记录,但是这里输出的信息并不全,我们还是可以使用 mysqlbinlog 来查看。

mysqlbinlog binlog.000018

但是可以看到输出的内容里,数据的变化都被处理过:

BEGIN
/*!*/;
# at 323
#240415  1:03:05 server id 1  end_log_pos 386 CRC32 0x0e2e4dda  Table_map: `db_test`.`users` mapped to number 93
# has_generated_invisible_primary_key=0
# at 386
#240415  1:03:05 server id 1  end_log_pos 474 CRC32 0xcebf294e  Update_rows: table id 93 flags: STMT_END_FBINLOG '
SQwcZhMBAAAAPwAAAIIBAAAAAF0AAAAAAAEAB2RiX3Rlc3QABXVzZXJzAAMDDw8EPAAsAQQBAQAC
ASHaTS4O
SQwcZh8BAAAAWAAAANoBAAAAAF0AAAAAAAEAAgAD//8AAQAAAAblvKDkuIkLADQxMjNAcXEuY29t
AAEAAAAG5byg5LiJDQAxMTExMTNAcXEuY29tTim/zg==
'/*!*/;
# at 474
#240415  1:03:05 server id 1  end_log_pos 505 CRC32 0xd7ae1d48  Xid = 55
COMMIT/*!*/;

会看不到真实记录的信息,我们直接使用 cat 或者 vim 命令查看文件内容,可以从其中窥得一二,可以看到一些我们修改或者新增的字段内容。

或者我们还是可以使用 mysqlbin,但是加上 -vv 参数,我们可以看到原始执行的 SQL 语句,类似于下面的内容:

BINLOG '
2RAcZhMBAAAAPwAAANUCAAAAAF0AAAAAAAEAB2RiX3Rlc3QABXVzZXJzAAMDDw8EPAAsAQQBAQAC
ASGMO256
2RAcZh4BAAAAPwAAABQDAAAAAF0AAAAAAAEAAgAD/wADAAAABueOi+S6lA4AMTIxMjM0NUBxcS5j
b22PdURn
'/*!*/;
### INSERT INTO `db_test`.`users`
### SET
###   @1=3 /* INT meta=0 nullable=0 is_null=0 */
###   @2='王五' /* VARSTRING(60) meta=60 nullable=0 is_null=0 */
###   @3='1212345@qq.com' /* VARSTRING(300) meta=300 nullable=1 is_null=0 */

3) MIXED

MIXED 类型则是 STATEMENT 和 ROW 两种类型的综合,它会根据具体的情况来选择 STATEMENT 或者是 ROW 其中一种类型来进行存储。

比如说涉及函数或者一些比较复杂和无法还原的操作时,就会选择 ROW 格式来存储变更的数据行,如果是一些比较简单的插入、更新或者删除操作,那么则会选择 STATEMENT 格式来进行存储。

4. binlog 三种类型的优缺点

关于这三种 binlog 类型的优缺点总结如下:

1) STATEMENT

STATEMENT 记录的 SQL 语句,适用于简单 SQL 语句的场景,比如单条数据的插入、更新、删除等。

优点是 binlog 日志文件相对较小,而且可读性强,因为可以直接查看 SQL 语句了解操作

但同时存在的问题是某些复杂操作可能会出现不一致的情况。

2) ROW

ROW 类型存储的是数据行的变更,会包含变更前后的内容,适用于需要精确记录数据行变更的场景。

优点是可以精确记录数据行的变更情况,避免 STATEMENT 类型可能出现的不一致的问题。

缺点则是因为记录了完整的数据行内容,所以可能导致文件较大,而且可读性较差,比如我们前面使用 -vv 参数才能了解其执行的 SQL 语句。

3) MIXED

MIXED 则会根据具体情况自动选择 STATEMENT 或 ROW 类型来记录数据更改。

优点是兼顾了 STATEMENT 和 ROW 两种类型的有点,既可以节约空间,也可以精确记录数据变更。

缺点的话,因为是系统是自动选择类型来记录,所以可能存在选择不够理想的记录方式从而导致一些不一致或者是性能问题。

4、binlog 如何恢复数据

对于 MySQL 中的操作,我们有时候可能会误操作,导致会意外的更新或者删除一些数据、或者是删除表、删除库等,那么这些操作如何使用 binlog 来进行恢复呢,以下做一个简单的介绍。

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

对于 MySQL 而言,一个 binlog 文件内容为从某一刻开始保存的日志记录,当我们使用 sudo service mysql restart 重启操作时,系统会自动为我们新建一个 binlog 日志文件,重启之后的所有数据操作都会被放到新的 binlog 文件里。

除了 MySQL 的手动重启,我们还可以使用 flush logs 操作来手动新建一个 binlog 日志。

下面正式开始介绍如何使用 binlog 恢复数据。

1. 恢复数据的前提

恢复数据的前提就是我们已经打开了 binlog 日志记录配置,而且最好有一个备份库,这个备份库的作用是用于在误操作数据后可以快速从最近的时间点进行恢复。

备份库的内容则是与当前生产库,或者说是目标库落后一定时间间隔的数据,来源可以是我们每天或者更小时间粒度对目标数据库的定时保存。

2. 恢复数据的步骤

有了 binlog 日志和备份数据库的基础之后,比如我们误操作更新了大范围的数据,或者删除了某张表,下面便开始恢复数据的步骤。

1) 停止写入更新操作

如果可能的话,应该尽量先停止往 MySQL 对应表的写入操作,避免数据污染操作。

2) 执行 flush logs

执行 flush logs 操作,重新创建一个 binlog,将误操作确定在某个 binlog 中。

3) 导出 binlog 日志

确定备份库的时间点,然后找到包含失误操作的 binlog,导出从备份库的时间点开始一直到发生误操作的时间点前的 binlog。

将这部分 binlog 在备份库重新执行,这样,我们的备份库就可以恢复数据到发生误操作的前一个时间点。

如果我们没有第一步停止写入更新的操作,就可以跳过误操作的 SQL,将发生误操作后的 SQL 语句也导入到备份库,这样备份库就拥有了不发生误操作情况下的全部数据。

4) 替换

将备份库的数据替换到目标库,然后重新开启服务。

以上,就是使用 binlog 进行恢复数据的大致操作,具体图示见下图:

尽管恢复数据在某些情况下是可行的,但是我们仍然要注意尽量避免在生产中直接操作数据库,而应该尽量通过业务代码来实现对数据库的操作。

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

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

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

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

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

6、binlog 作用

binlog 作为 MySQL 日志的一种,有很多作用,比如前面介绍的数据备份与恢复,还可以用于数据同步,比如主从复制模式下将主库的更改操作操作就是通过 binlog 的方式来同步到从库的。

当然,通过 binlog 本身我们可以还原所有的数据操作,我们也可以针对这部分进行对应的数据统计和分析等。

7、开启binlog日志记录

修改MySQL配置文件,linux中配置文件为my.conf,window下为my.ini,下面以centos为例演示:

  • 编辑配置文件
# 在centos中mysql的配置文件一般都在/etc/mysql目录下,如果不在可以通过 find / -name "my.cnf" 查找
vi /etc/mysql/my.cnf
  • 添加配置(放到[mysqld]下面)
# 服务ID
server-id=1
# binlog 配置 只要配置了log_bin地址 就会开启
log_bin = /var/lib/mysql/mysql_bin
# 日志存储天数 默认0 永久保存
# 如果数据库会定期归档,建议设置一个存储时间不需要一直存储binlog日志,理论上只需要存储归档之后的日志
expire_logs_days = 30
# binlog最大值
max_binlog_size = 1024M
# 规定binlog的格式,binlog有三种格式statement、row、mixad,默认使用statement,建议使用row格式
binlog_format = ROW
# 在提交n次事务后,进行binlog的落盘,0为不进行强行的刷新操作,而是由文件系统控制刷新日志文件,如果是在线交易和账有关的数据建议设置成1,如果是其他数据可以保持为0即可
sync_binlog = 1
  • 重启MySQL服务使配置生效
systemctl restart mysqld
  • 登录MySQL查看配置是否生效
mysql> SHOW VARIABLES LIKE '%log_bin%';

log_bin为ON代表MySQL已经开启binlog日志记录
log_bin_basename配置了binlog的文件路径及文件前缀名
log_bin_index配置了binlog索引文件的路径

  • 查看日志列表
mysql> SHOW MASTER LOGS;

  • 根据log_bin_basename的路径查看binlog具体文件
ls -l /var/lib/mysql/mysql_bin.*

相关文章:

MySQL之binlog日志

原文链接:https://zhuanlan.zhihu.com/p/697078870 目录: binlog 是什么binlog 配置和查看binlog 的类型binlog 如何恢复数据binlog 是逻辑日志还是物理日志binlog 作用 注意:以下所有的操作都在 MySQL 8.0 版本实现。 1、binlog 是什么 …...

【大数据】什么是数据湖?一文揭示数据湖的本质

很多人跟我一样,对于数据湖充满好奇,也许还读了不少数据湖文章,但无论别人怎么说,你还是会觉得难以把握数据湖的本质。 有些人会望文生义说,数据湖嘛,就是什么东西都可以往里面扔,特别是对非结构…...

CSS【详解】文本相关样式(含 font 系列,文本排版,文本装饰,分散对齐,渐变色文本等)

文本风格 font-style font-style:italic 值描述normal默认值。浏览器显示一个标准的字体样式。italic加载对应字体的斜体字体文件,若找不到斜体字体文件,则进行物理上的倾斜。 标签默认font-style:italicoblique浏览器会显示一个倾斜的字体样式。 文本粗…...

加油卡APP系统开发,优惠加油收益

目前,汽车已经成为了不可或缺的出行工具,汽车加油更是成为了家家户户要做的事。不过随着油价的波动,车主急需能够进行优惠加油的渠道,因此,加油卡APP成为了大众汽车加油新的选择方式,用户在下载APP后即可享…...

el-scrollbar实现自动滚动到底部(AI聊天)

目录 项目背景 实现步骤 实现代码 完整示例代码 项目背景 chatGPT聊天消息展示滚动面板,每次用户输入提问内容或者ai进行流式回答时需要不断的滚动到底部确保展示最新的消息。 实现步骤 采用element ui 的el-scrollbar作为聊天消息展示组件。 通过操作dom来实…...

开源去除背景的项目:rembg 安装和部署

下载colne项目代码 git clone https://github.com/danielgatis/rembg.git安装依赖 pip install rembg pip install click pip install filetype pip install watchdog pip install aiohttp pip install gradio pip install asyncer测试使用 rembg i 照片.jpg zhaopian.jpg照…...

Docker 使用基础(1)—镜像仓库

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 4:20 🔄 ◀️ ⏸ …...

Git详细安装和使用教程

文章目录 准备工作-gitee注册认识及安装GitGit配置用户信息本地初始化Git仓库记录每次更新到仓库查看及切换历史版本Git忽略文件和查看文件状态Git分支-查看及切换Git分支-创建分支Git分支-合并及删除分支Git分支-命令补充Git分支-冲突需求: 准备工作-gitee注册 传送门: gite…...

LeetCode题练习与总结:反转字符串中的单词--151

一、题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在…...

2.pwn的linux基础(计算机内部数据结构存储形式)

linux基础 保护层级: 分为四个ring0-ring3 一般来说就两个,0和3 0为内核 3为用户 权限: 用户分为多个组 文件和目录等等的权限一般都是三个,即可读可写可执行。 读:R,写:W,执行:X 赋予一个可执行文件执行权限就是chmod x file…...

67.SAP FICO-凭证类型学习

目录 SAP凭证类型 凭证类型的作用 - OBA7 SAP默认的凭证类型更改 FI相应事务代码默认凭证类型 - OBU1 对FB50、60、70默认凭证类型的更改 - OBZO 后勤货物移动默认凭证类型 - OMBA 发货凭证类型 收货凭证类型 自动移动凭证类型 存货盘点凭证类型 发票默认的凭证类…...

井字游戏00

题目链接 井字游戏 题目描述 注意点 1 < board.length board[i].length < 100输入一定遵循井字棋规则 解答思路 如果某一方想要获胜&#xff0c;则其需要占满某一行或某一列或对角线&#xff0c;所以只需要根据第一行和第一列判断是否填充完某一行或某一列或对角线…...

GEE代码实例教程详解:地表温度与土地覆盖类型分析

简介 在本篇博客中&#xff0c;我们将使用Google Earth Engine (GEE) 对地表温度数据进行分析&#xff0c;并探究不同土地覆盖类型&#xff08;特别是水体和城市区域&#xff09;的地表温度变化。通过MODIS数据集&#xff0c;我们可以监测2001年至2024年间的数据。 背景知识 …...

RK3568------Openharmony 4.0-Release 浏览器部署安装

RK3568------Openharmony 4.0-Release 浏览器部署安装 文章目录 RK3568------Openharmony 4.0-Release 浏览器部署安装前言一、DevEco Studio开发工具安装与使用二、浏览器(Browser)样例代码编译三 、浏览器(Browser)部署四、遇到的问题五、效果展示总结 前言 上一篇文章讲解了…...

【kafka】可视化工具cmak(原kafka-manager)安装问题解决

众所周知&#xff08;反正不管你知不知道&#xff09;&#xff0c;kafka-maneger更名了&#xff0c;现在叫cmak&#xff01;原因是什么呢&#xff1f;据不可靠小道信息说&#xff0c;原kafka-manager这个名字涉及到kafka商标使用问题&#xff0c;应该是被律师函警告了&#xff…...

【转载】目标检测mAP的含义

转载自三叔家的猫 https://blog.csdn.net/qq_39056987 https://blog.csdn.net/qq_39056987/article/details/104348493 <div id"content_views" class"markdown_views prism-atom-one-light"><svg xmlns"http://www.w3.org/2000/svg" s…...

智慧校园行政办公-红头文件功能概述

在智慧校园的行政办公系统中&#xff0c;红头文件的管理功能是一项重要的组成部分&#xff0c;它极大地提升了文件处理的效率与规范性。该功能围绕文件的创建、审批、归档等关键环节&#xff0c;进行了全面的数字化改造。 首先&#xff0c;系统内置了多种标准化的红头文件模板&…...

汽车IVI中控开发入门及进阶(三十三):i.MX linux开发之开发板

前言: 大部分物料/芯片,不管MCU 还是SoC,都会有原厂提供配套开发板,有这样一个使用原型,在遇到问题时或者进行开发时可以使用。 i.MX 8QuadXPlus MEK board: 1、要测试display显示器,可使用i.MX mini SAS将“LVDS1_CH0”端口连接到LVDS到HDMI适配器的cable。 2、要测试…...

Redis基础教程(十八):Redis管道技术

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…...

深度学习(笔记内容)

1.国内镜像网站 pip使用清华源镜像源 pip install <库> -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip使用豆瓣的镜像源 pip install <库> -i https://pypi.douban.com/simple/ pip使用中国科技大学的镜像源 pip install <库> -i https://pypi.mirro…...

阿里云登陆Centos7

用自己电脑登陆Centos7太麻烦了&#xff0c;还要自己弄个虚拟机&#xff0c;一个电脑里面既有WIN又有LINUX&#xff0c;索性直接买个阿里云服务器&#xff0c;来学习Centos7。 购买 我是新用户&#xff0c;可以试用3个月&#xff0c;先用个3个月再说哈哈哈。 一系列操作之后…...

探索C嘎嘎的奇妙世界:第十九关---STL(list的模拟实现)

1. 基本框架 首先&#xff0c;我们先从节点的准备工作入手&#xff0c;请看示例&#xff1a; #pragma once #include<iostream> #include<assert.h> using namespace std; //节点 template<class T> struct ListNode {ListNode<T>* _next;Li…...

【分布式系统三】监控平台Zabbix对接grafana(截图详细版)

目录 一.安装grafana并启动 二.浏览器访问 三.导入zabbix数据&#xff0c;对接grafana 四.如何导入模版 以前两篇博客为基础 【分布式系统】监控平台Zabbix介绍与部署&#xff08;命令截图版&#xff09;-CSDN博客 【分布式系统】监控平台Zabbix自定义模版配置-CSDN博客 …...

SAPUI5基础知识11 - 组件配置(Component)

1. 背景 组件&#xff08;Component&#xff09;是SAPUI5应用程序中独立且可重用的部件。 SAPUI5提供以下两类组件: faceless组件 (class: sap.ui.core.Component): 无界面组件即没有用户界面相关的元素&#xff0c;用于不需要UI元素编码的场景&#xff1b; UI组件 (class: …...

Spring最早的源码

地址&#xff1a;Spring最早的源码...

热烈祝贺!全视通多家客户上榜全球自然指数TOP100!

2024年6月18日&#xff0c;全球医疗机构自然指数TOP100榜单发布&#xff0c;中国医疗机构在其中的表现尤为引人注目。 根据《自然》杂志网站发布的数据&#xff0c;此次公布的排名是基于&#xff08;2023年3月1日至2024年2月29日&#xff09;的统计数据&#xff0c;全球医疗机构…...

常用接口避免频繁请求

背景 在项目开发过程中我们难免会遇到一些通用的接口&#xff0c;需要在多个页面调用&#xff0c;拿去结果。比如我们常用的字典接口&#xff0c;后端通过字典配置一些数据&#xff0c;通常这些字典数据是不常更改的。我们通过字典接口传递不同的参数过去&#xff0c;获取到接…...

C++入门基础

前言 本篇博客讲解一下c得入门基础 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee:普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&…...

Unicode 与 UTF-8 的区别与联系

文章目录 UnicodeUTF-8联系区别Unicode 转义序列字符编码与字符的对应规则例子 Unicode 定义&#xff1a;Unicode 是一个字符编码标准&#xff0c;旨在为世界上所有的字符分配一个唯一的编码。 编码范围&#xff1a;Unicode 的编码范围从 0x0000 到 0x10FFFF&#xff0c;能够表…...

PHP MySQL 简介

PHP MySQL 简介 PHP 和 MySQL 是现代网站开发中最流行的两种技术。PHP 是一种服务器端脚本语言&#xff0c;而 MySQL 是一种关系型数据库管理系统。这两种技术经常一起使用&#xff0c;以创建动态和交互式的网页。本文将简要介绍 PHP 和 MySQL 的基本概念、它们的工作原理以及…...