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

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.mzph.cn/news/753977.shtml

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

相关文章

1.中医学习-总论

目录 1.为什么要学中医 2.什么是中医 介绍 中医例子1: 中医例子2: 中医最高境界“大道至简” 中医讲究的是本质 中医核心:阴阳、表里、寒热、虚实 ​编辑医不叩门 3.阴阳 1.一天中的阴阳 2.一年中的阴阳 3.阴阳之间的关系 4.阴阳四季的变化 …

解决:visio导出公式为pdf图片乱码问题

今天需要将Visio编辑好的以后的图输出pdf,但是点击保存后公式部分一直乱码,如下图所示 保存为pdf后会变成: 解决方案:保存时点击文件下方的快速打印,存到桌面,不要直接点击保存

代码随想录算法训练营第二十五天|216.组合总和III,17.电话号码的字母组合

216.组合总和III 题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 示例 2: 输入…

24计算机考研调剂 | 【官方】山东师范大学(22自命题)

山东师范大学2024年拟接收调剂 考研调剂信息 调剂专业目录如下: 计算机技术(085404)、软件工程(085405) 补充内容 我校2024年硕士研究生调剂工作将于4月8日教育部“中国研究生招生信息网”(https://yz.ch…

深入了解JVM底层原理

一、JVM内存结构 1、方法区:存储编译后的类、常量等(.class字节码文件) 2、堆内存:存储对象 3、程序计数器:存储当前执行的指令地址(计算机处理器(CPU)正在执行的下一条指令在内存…

openwrt下部署clouddrive2

在启动项上增加启动参数 在exit 0前面增加 mount --make-shared /mnt/data480g注意,后面的/mnt/data480g要替换成你设置的共享映射券。 拉取镜像 docker pull cloudnas/clouddrive2启动镜像 一定要用ssh在后台用docker run命令启动,因为openwrt前台…

函数-Python

师从黑马程序员 函数初体验 str1"asdf" str2"qewrew" str3"rtyuio" def my_len(data):count0for i in data:count1print(f"字符串{data}的长度是{count}")my_len(str1) my_len(str2) my_len(str3) 函数的定义 函数的调用 函数名&a…

基于Java的大学计算机课程管理平台(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2.3 学生实验模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 实验课程档案表3.2.2 实验资源表3.2.3 学生实验表 四、系统展示五、核心代码5.1 一键生成实验5.2 提交实验5.3 批阅实…

面试笔记——Redis(缓存击穿、缓存雪崩)

缓存击穿 缓存击穿(Cache Breakdown): 当某个缓存键的缓存失效时(如,过期时间),同时有大量的请求到达,并且这些请求都需要获取相同的数据,这些请求会同时绕过缓存系统&a…

【GameFramework框架内置模块】8、文件系统(File System)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q7…

登录-前端部分

登录表单和注册表单在同一个页面中,通过注册按钮以及返回按钮来控制要显示哪个表单 一、数据绑定和校验 (1)绑定数据,复用注册表单的数据模型: //控制注册与登录表单的显示, 默认false显示登录 true时显…

【MySQL】4. 表的操作

表的操作 1. 创建表 语法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明: field 表示列名 datatype 表示列的类型 character set 字符集&#xff0c…

java方法的引用传递和值传递

1、方法的值参数传递 下面代码,它会在控制台输出什么? public class ArrayTest {public static void main(String[] args) {int number 100;System.out.println(number);change(number);System.out.println(number);}public static void change(int n…

vue3使用qrcodejs2-fix生成背景透明的二维码

qrcodejs官方仓库:GitHub - davidshimjs/qrcodejs: Cross-browser QRCode generator for javascript qrcodejs2-fix 是一个用于生成QR码的JavaScript库,使用的时候先安装,然后通过设置前景色和背景色可以控制显示的二维码效果。想生成透明背…

手撕算法-二叉树的镜像

题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。数据范围:二叉树的节点数 0≤_n_≤1000 , 二叉树每个节点的值 0≤_val_≤1000要求: 空间复杂度 O(n) 。本题也有原地操作,即空间复杂度 O(1) 的解法&#xff0c…

士兵排列问题

解法一&#xff1a; deque实现队头入队和队尾入队即可得到编号排列&#xff0c;每个士兵有二个属性&#xff1a;编号、能力值。 #include<iostream> #include<algorithm> #include<deque> #include<vector> using namespace std; #define endl \n st…

汇率与政治的关系?Anzo Capital实例举证

投资者在使用特定货币对交易时&#xff0c;交易者应关注交易所用货币国家的主要政治新闻。众所周知&#xff0c;政治和金融密切相关&#xff0c;因此重要政治消息的发布会对汇率产生强烈影响。 Anzo Capital实例举证&#xff1a;汇率与政治的关系。 其中一个例子&#xff0c…

文件系统 与 软硬链接

目录 一、文件系统 认识磁盘 磁盘存储的逻辑抽象结构 块组的内容 inode Table Data blocks inode Bitmap Block Bitmap Group Descriptor Table Super Block 理解目录 二、软硬链接 软链接​ 硬链接 硬链接数 一、文件系统 之前的博客主题叫做"进程打开文…

【物联网应用】基于云计算的智能化温室种植一体化平台

目录 第一章 作品概述 1.1. 作品名称 1.2. 应用领域 1.3.主要功能 1.4.创新性说明 第二章 需求分析 2.1 现实背景 2.2 用户群体及系统功能 2.3 竞品分析 第三章 技术方案 3.1. 硬件组成与来源 3.2. 硬件设计合理性 3.3. 硬件系统设计图 3.4. 接口的通用性与可扩展性 3.5. 代码规…

vue中判断是否使用自定义插槽

在封装自定义组件时&#xff0c;需要判断使用者是否使用了插槽<slot"aaa">&#xff0c;如果没有则使用一个组件中默认的值&#xff0c;反之就用传入的内容<template name"aaa"></template>,实现如下&#xff1a; <div class"lin…