MYSQL日志 redo_log更新流程 bin_log以及bin_log数据恢复

news2024/11/15 1:43:50

Redo_log写入策略

Redo log的Innodb_flush_log_at_trx_commit::

这个参数有三个取值

取值为0:每次事务提交时,只是把redo_log留在 redo log buffer中,宕机会丢失数据;

取值为1(默认值):每次事务提交时都会将redo_lo直接持久化到磁盘中,数据最安全,不会因为数据库宕机而丢失数据,线上系统推荐这个设置;

设置为2:每次事务提交时把 redo log写入到操作系统的缓存page cache里面,这种情况如果数据库宕机了,数据是可以进行恢复的,但是如果操作系统宕机,如果此时 page cache里的数据还没来德基写入磁盘文件中的话,机会丢失数据。

Redo log更新的大概流程,

先更新redo log buffer,然后判断级别是否为0,为零直接提交事务,不为零,先写入 os(操作系统)的page cache缓存中,然后判读是否为2,为2则直接提交事务,为1则再调用fxync持久化到磁盘中后,再进行提交事务;

Innodb有一个后台线程,每隔一秒就会把redolog buffer中的日志,调用系统操作函数write写道文件系统的page info 中,然后调用操作系统函数fxync持久化到磁盘中;

Page cache

相当于系统缓存和磁盘文件之间的中转站,因为内存的修改速度是很快的,但是磁盘修改就相对慢一点,这个也可以看成一个缓冲区;

同样,cpu和内存之间,cpu的修改速度远大于内存,cpu中也同样有一个缓冲区;

Innodb_flush_log_at_trx_commit参数的修改

Bin_log日志

Bin_log二进制日志记录保存了所有执行过的修改操作语句,不记录保存操作,如果MySQL服务意外停止,或者数据库更新出现生产问题,则我们可以通过日志文件来排查,用户对数据或者表结构的操作,从而来恢复数据库数据;

启动bin_log会影响性能,但是如果需要有时候能够恢复丢失数据,或者搭建了主从同步库,则必须要开启bin_log日志;

主从同步分为半同步和全同步,全同步就是指从库进行持久化完成,半同步指bin_log日志同步到从库即可;

Bin_log日志在mysql配置文件中的配置

如下,如果没有配置,则都会有默认值

Bin_log的bin_log_format可以设置日志格式

Bin_log的写入磁盘机制,和redo_log相似

Linux查看MySQL配置文件,可以

1.Which mysql 得到一个路径a

2.进入路径a,输入命令mysql --verbose --help |grep -A 1 ‘Default options’

3.然后就能得到几个my.cnf配置地址,配置生效优先级别,就是从前到后优先级递减

bin_log日志文件位置与格式

配置完成后,重启数据库,会在配置好的目录文件中得到两种类型文件

 Show variables like ‘%log_bin%’查看数据库的binlog配置

Sql_log_bin默认是开启的,只是有些时候,可能需要测试,主从同步异常的情况,可以修改为OFF;

MySQL提供的查看bin_log日志文件工具:

不用登陆数据库,这个mysql插件,后边为日志地址;

Bin_log如何做数据恢复

首先先理解一个概念,偏移量,就是记录在日志文件中的位置,

回放:根据日志文件中之前执行的语句,再执行一次

所以,当我们有了bin_log日志文件,而且找到了我们之前执行的记录,就可以通过回放之前的操作来恢复数据,

通过执行

Mysqlbinlog --no-defaults --starts-position=需要执行语句的开始偏移量 --stop-position=需要执行语句的结束偏移量 --database=数据库名 binlog文件位置+binlog文件名 | mysql -u用户名 -p密码 -v数据库名

执行输出日志不报错,就算执行完成

当然也可以根据时间戳来进行恢复,

Mysqlbinlog --no-defaults --starts-datetime=需要执行语句的开始时间 --stop-datetime=需要执行语句的结束时间 --database=数据库名 binlog文件位置+binlog文件名 | mysql -u用户名 -p密码 -v数据库名

生产情况bin_log使用

生产情况下,对数据的数据保护,一般是通过dump备份和bin_log来保证数据不丢失

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第day30|332.重新安排行程 、 51. N皇后 、37. 解数独

目录 332.重新安排行程 思路: 51. N皇后 思路: 37. 解数独 332.重新安排行程 力扣题目链接 (opens new window) 给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进…

Jenkins-pipeline流水线构建完钉钉通知

添加钉钉机器人 在钉钉群设置里添加机器人拿出Webhook地址,设置关键词 Jenkins安装钉钉插件 Dashboard > 系统管理 > 插件管理,搜索构建通知,直接搜索Ding Talk也行 安装DingTalk插件,重启Jenkins 来到Dashboard > 系…

探索编程迷宫:选择你的职业赛道

在现代科技的浪潮中,程序员的职业赛道就像是一座迷宫,充满着前端的美丽花园,后端的黑暗洞穴,以及数据科学的神秘密室。这个迷宫中,每一条通道都充满了挑战和机遇,而每一个行走其中的人都在寻找着属于自己的…

sentinel系统负载自适应流控

系统负载自适应流控 规则配置 规则创建 public class SystemRule extends AbstractRule {private double highestSystemLoad -1;private double highestCpuUsage -1;private double qps -1;private long avgRt -1;private long maxThread -1; }SystemRule类包含了以下几…

设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目

概述 在 《设计原则 - 10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器》中,我们讲解了如何对一个性能计数器框架进行分析、设计与实现,并且实践了一些设计原则和设计思想。当…

如何使用 ArcGIS Pro 生成TIN

三角网是一种常用于表示地表地形的数字地球模型(DEM)方式,我们可以通过 ArcGIS Pro 将等高线和高程点转换为TIN,这里为大家介绍一下转换方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的高…

vue2使用webSocket双向通讯

基于webSocket实现双向通信,使用webworker保持心跳。 由于浏览器的资源管理策略会暂停或限制某些资源的消耗,导致前端心跳包任务时效,后端接收不到webSocket心跳主动断开,因此需要使用webworker保持心跳 引入webworker npm insta…

CSDN 停更通知

CSDN 不再更新,欢迎关注我的微信公众号,分享更多有趣的技术内容。 如果大家有任何疑问,或者感兴趣的话题,都可以通过微信公众号与我交流,相互学习,相互成长。

Trent电源设计那些事儿教学

本课程将深入探讨Trent电源设计的关键概念与技术。学生将学习功率电子器件和拓扑、电路保护、稳压技术以及EMI滤波等内容。通过理论和实践相结合的教学方式,帮助学员掌握Trent电源设计的原理与应用。 课程大小:12.5G 课程下载:https://down…

2024年发布jar到国外maven中央仓库最新教程

2024年发布jar到国外maven中央仓库最新教程 文章目录 1.国外sonatype仓库的版本1.1老OSSHR账号注册说明1.2新账号注册说明 2.新账号注册(必选)3.新账号登录创建Namespace3.1创建Namespace的名字的格式要求(必选)3.2发布一个静态网站(可选&…

科技云报道:第五次工业革命,中国AI企业如何打造新质生产力?

科技云报道原创。 人类历史的叙述与技术进步的影响深深交织在一起。 迄今为止,每一次工业革命都彻底改变了我们社会的轮廓,引入了机械化、大规模生产和数字化,并重新定义了人类生存的规范。 自2022年11月30日OpenAI发布ChatGPT以来&#x…

webpack5零基础入门-11处理html资源

1.目的 主要是为了自动引入打包后的js与css资源,避免手动引入 2.安装相关包 npm install --save-dev html-webpack-plugin 3.引入插件 const HtmlWebpackPlugin require(html-webpack-plugin); 4.添加插件(通过new方法调用) /**插件 *…

c语言,联合体

一.什么是联合体: 像结构体一样,联合体也是由一个或多个成员变量组成的这些成员变量可以是不同的类型,但编译器只给最大成员分配足够的内存,联合体体内的成员都是公用一块空间的,因此联合体也叫做共同体 二.联合体类…

聚类分析 | Matlab实现基于PCA+DBO+K-means的数据聚类可视化

聚类分析 | Matlab实现基于PCADBOK-means的数据聚类可视化 目录 聚类分析 | Matlab实现基于PCADBOK-means的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 PCA(主成分分析)、DBO(蜣螂优化算法)和K-means聚类…

【观察】紫光云:紫鸾5.0云平台“再升级”,为政企客户提供新质生产力

毫无疑问,数字化既是这个时代前进所趋,也是国家战略所指,更是所有企业在未来发展中已达成的高度共识。 在此过程中,千姿百态、复杂多样的应用场景,可以看做是遍布数字中国的“点”;百行百业、各种类型的行业…

阿里云发布 AI 编程助手 “通义灵码”——VSCode更强了 !!

文章目录 什么是 通义灵码(TONGYI Lingma) 快速体验“通义灵码” 什么是“通义灵码”(TONGYI Lingma) 通义灵码(TONGYI Lingma),是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff…

idea 开发serlvet班级通讯录管理系统idea开发mysql数据库web结构计算机java编程layUI框架开发

一、源码特点 idea开发 java servlet 班级通讯录管理系统是一套完善的web设计系统mysql数据库 系统采用serlvetdaobean mvc 模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 servlet 班…

【linux】Debian访问Debian上的共享目录

要在Debian系统上访问共享目录,通常意味着要访问通过网络共享的文件夹,比如通过SMB/CIFS(Server Message Block/Common Internet File System)协议共享的Windows共享文件夹。以下是访问共享目录的步骤: 1. 安装必要的…

边缘计算+WEB端应用融合:AI行为识别智能监控系统搭建指南 -- 边缘设备图像识别及部署(二)

专栏目录 边缘计算WEB端应用融合:AI行为识别智能监控系统搭建指南 – 整体介绍(一) 边缘计算WEB端应用融合:AI行为识别智能监控系统搭建指南 -- 边缘图像识别及部署(二) 前言边缘图像识别与推流整体思路原始…

蓝桥杯刷题总结(Python组)

1、蛇形矩阵 解题思路:每次赋值后都对方向进行改变,一般上下左右就是(-1,0),(0,1),(1,0),(0&…