首页 > 数据库 >玩一下mysql

玩一下mysql

时间:2023-04-20 21:48:01浏览次数:38  
标签:binlog 事务 log 一下 线程 mysql 日志 redo

 我电脑版本的mysql是5.7.29,此时InnoDB已经是默认的存储引擎

存储引擎是基于表的,而不是数据库

MyISAM和InnoDB有什么区别?MyISAM不支持事务和行级锁,不支持外键,最大缺陷为崩溃后无法安全恢复。

Mysql日志:常见的日志都有什么用?

(针对InnoDB引擎)

错误日志、二进制日志、一般查询日志、慢查询日志、事务日志(redo log,undo log)、中继日志(relay log)、DDL日志

 

慢查询日志

记录执行时间超过long_query_time的所有查询语句,再用EXPLAIN语句对其进行分析

二进制日志

记录了对Mysql数据库执行了更改的所有操作,包括表结构的变更,以及数据库执行的语句,表数据修改等

binlog的格式:

 statment模式、row模式、mixed模式

 binlog用来做什么?

主从复制,通过binlog同步数据,保证数据的一致性(和redis主从复制很像)

主库将数据库的变化写入到binlog

从库连接主库

从库创建一个IO线程向主库请求更新的binlog

主库会创建一个binlog dump线程来发送binlog,从库中的IO线程负责接收

从库的IO线程将接收的binlog写入到relay log中

从库的SQL线程读取relay log同步数据到本地

(明天再看看详细的,感觉有点问题)

binlog刷盘时机怎么选?

InnoDB,事务执行时放入binlog cache中,提交时持久化到binlog文件中

sync_binlog控制,0-N,0是不强制要求,其他的是每N个事务就写入磁盘

 

redo log

Buffer Pool中对应页的修改还没有持久化到磁盘,如果Mysql宕机的话,事务的更改就会出现问题

于是Mysql使用redo log保证事务的持久性,redo log记录页的修改,事务提交时,redo log刷到磁盘上,重启之后仍然能恢复未写入磁盘的数据,保证事务的持久性。

需要设置正确的刷盘策略

redo log写入属于顺序IO,且记录占空间很少

注意redo log和binlog的区别

undo log


每一个事务对数据的修改都会被记录到undo log,执行事务出现错误或者需要回滚的话,mysql可以利用undo log恢复到事务开始之前的状态

属于逻辑日志,记录的是sql语句,事务执行一条delete,undo log就会记录相对应的insert语句

在MVCC中也有用,明天再看。

 

标签:binlog,事务,log,一下,线程,mysql,日志,redo
From: https://www.cnblogs.com/WZXwzx/p/17338352.html

相关文章

  • MySQL大量脏数据,如何只保留最新的一条?
    因为系统的一个Bug,导致数据库表中出现重复数据,需要做的是删除重复数据且只保留最新的一条数据。具体场景是这样的有张订单关联额外费用表,而且一个订单号(order_no)记录只能关联同一个费用(cost_id)一次,但是数据库中出现了同一个订单号关联同一个费用n次当然有人会说上面的问......
  • MySQL 中常见的几种高可用架构部署方案
    MySQL中的集群部署方案前言MySQLReplicationInnoDBClusterInnoDBClusterSetInnoDBReplicaSetMMMMHAGaleraClusterMySQLClusterMySQLFabric参考MySQL中的集群部署方案前言这里来聊聊,MySQL中常用的部署方案。MySQLReplicationMySQLReplication是......
  • Mysql添加用户和设置权限的操作方法
    Mysql添加用户和设置权限的操作方法 更新时间:2022年07月28日09:42:08 作者:怪 咖@  https://www.jb51.net/article/257120.htm这篇文章主要介绍了Mysql添加用户和设置权限的操作方法,主要包括管理用户,权限控制的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具......
  • django中开启事务,GEO地理位置信息、持久化方案、主从复制原理和方案、哨兵高可用、集
    django中开启事务#django中如何开启事务全局开启:每个http请求都在一个事务中DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'lqz','HOST'......
  • MYSQL如何开启BINLOG
    看到网上不同的开启方法,有直接如下设置的:/etc/my.cnf...log_bin...也有设置:...log_bin=ONlog_bin_basename=/var/lib/mysql/mysql-binlog_bin_index=/var/lib/mysql/mysql-bin.index...三个参数来指定,第一个参数是打开binlog日志第二个参数是binlog日志的基本文件名,后面会追加标......
  • 聊聊MySQL锁
    操作数据库的操作分两类,操作表(DDL)和操作表数据(DML)DDL锁MySQL5.6以前,没有发布OnlineDDL功能,执行DDL主要是通过copy和inplace,这两种方式都会全程锁表,无法执行DMLOnlineDDL就是执行DDL时可以同时执行DMLDML锁DML操作会根据索引及数据变更等加相应锁粒度行级锁加锁......
  • linux下安装mysql
    1、查看是否已经安装Mysqlrpm-qa|grepmysql2、上传mysql的安装包到linux下,(.tar.gz版本的)3、解压安装包tar-zxvfmysql-5.7.35-linux-glibc2.12-x86_64.tar.gz4、先检查是否有mysql用户组和mysql用户,没有就添加有就忽略:检查是否有mysql用户组:groupsmysql添加......
  • 基于SSM框架和MySQL的仿天猫商城
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]1.项目简介天猫商城是一个基于SSM框架的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。作为模拟天猫商城系统的核心组成部分之一,采用SSM框架......
  • MySQL GTID 主从复制错误修复方法
    MySQL传统的主从复制方式使用master_log_files和master_log_pos两个参数来确定复制位点。当出现复制错误时,可以设置跳过出错的事务来恢复同步,MySQL提供了sql_slave_skip_counter参数来实现此功能。使用方法如下:root@(none)>stopslave;QueryOK,0rowsaffected(0.0......
  • Mysql语法
    树形结构通过节点获取节点所有上级(函数)1createfunctionget_department_list(in_idint)returnsvarchar(100)2READSSQLDATA3begin4declareidsvarchar(1000);5declaretempidint;67settempid=in_id;8whiletempid>0d......