mysql存储引擎和备份

news2024/12/27 15:43:59

索引

事务

存储引擎

概念:存储引擎,就是一种数据库存储数据的机制,索引的技巧,锁定水平。

存储引擎。存储的方式和存储的格式。

存储引擎也属于mysql当中的组件,实际上操作的,执行的就是数据的读写I/O。

mysql的存储引擎的分类:

mysql5.5之后默认开始使用innodb,事务型速记存储引擎。支持ACID,支持行锁定。

MYisam:5.5之前默认的存储引擎,插入的速度和查询速度很快,但是不支持事务。

Memory:内存型存储引擎,数据在写时都保存在内存当中,一旦重启所有数据全部消失。

CSV:逗号分割数据的存储引擎,数据文件.csv文件保存的,execl.保存的文件就是一个普通的文本文件。不支持索引。

innodb存储引擎:

1、读写阻塞(锁表)和事务的隔离级别

2、能够高效的缓存数据支持多种类的索引

3、表的索引的类型默认BTREE

4、支持外键,支持全文索引

5、对硬件的资源要求比较高

6、行级锁定,会把行锁住,禁止操作

模糊查询:

like进行查询时,会进行全表扫描,在扫描的过程中会锁定整个表

没有创建索引的列,进行查询时,也会锁定整个表。

使用的是索引列,锁定条件的行,行锁定。

innoDB行锁和索引的关系

行锁是通过索引来实现的

如果没有索引,innodb会使用默认的隐藏索引来对记录进行加锁。

加了索引就是锁行

不加索引就是锁表

mysql默认就是自动提交写入。

oracle提交才能写入

死锁:事务相互等待对方的资源,最后形成一个环路状态造成的。

发生了死锁,数据会自动选择一个事务作为受害者,回滚事务可以解除死锁。

for update 排他锁,当一个事务的操作未完成时,其他事务可以读取但是不能写入。写锁。

如何避免死锁的情况出现:

1、以固定的顺序访问表和行

2、大事务尽量拆分成小的事务

3、为表添加合理的索引

mysql的备份、恢复和日志管理(配置文件当中的设置)

备份的目的是什么:

备灾。

在生产环境中,数据的安全性非常重要。

造成数据丢失的原因:

1、程序出错

2、人为的问题

3、磁盘故障

备份的分类:

物理备份:对磁盘或者文件直接进行备份。

冷备分:脱机备份,先把指定的程序关闭,然后对资料进行备份

热备份:联机备份,不用关闭程序就可以对资料进行备份


在命令行操作:
mysqldump -u root -p --databases 库名 > /opt/文件名.sql
#备份单个库
mysqldump -u root -p --databases 库1 库2 > /opt/文件名2.sql
#多个备份
mysqldump -u root -p --all-databases > /opt/文件名3.sql
#备份所有库

逻辑备份:

根据数据库文件当中保存的sql语句,表结构,等等,以特定的格式和命令对文件的内容进行还原。

热备份的一种。

只能对表,库没了没有办法恢复。

主从复制可以恢复。

物理备份 全量备份:

把数据库的内容整一个一次性的

数据恢复


只恢复单个表或者多个表:
准备另外一张表插入数据
恢复一张表:
mysqldump -u root -p test1 info1 > opt/test1_info1.sql
 
msql -u root -p -e 'drop table test1.info1;'
#指定库删除表
 
mysql -u root -p test1 < /opt/test1_info1.sql
#指定库名恢复
#刷新一下查看一下
 
恢复多个表:
mysqldump -u root -p test1 info1 info2 > /opt/test1_info1-2.sql
 
msql -u root -p -e 'drop table test1.info1;'
 
msql -u root -p -e 'drop table test1.info2;'
 
mysql -u root -p kgc < /opt/test1_info1-2.sql
#指定库名恢复
#刷新一下查看一下
 
MySQL1全部数据库的逻辑备份文件恢复到MySQL2。
 
scp root@20.0.0.60:/opt/all_database.sql /opt/
 
mysql -u root -p < all_database.sql
#用sql语句的方式热备份直接转换。

mysql自带的备份命令。可以备份库,也可以备份库里面的表

mysqldump

增量备份:

1

2

3

4

开启二进制日志的功能:

binlog 逻辑备份,会生成一个文件,这个里面包含了sql语句,要使用特定的方式和语句才能恢复。

binlog format=MXED

记录二进制的文件·格式

STATEMENT基于sql语句:只是记录用户操作的sql语句,高并发的情况之下,记录操作的sql语句的顺序可能会出错。导入数据时,就会有丢失或者误差。效率高。

ROW 基于行,记录每一行的数据,准确,高并发也不会出错,但是恢复效率底

MIXED 混合模式,正常情况下使用statement,高并发使用row,只能判断

表数据设置多一点
 
select * from info1;
#查看数据是否写入
 
cd /usr/local/mysql/data/
#会生成了两个文件
mysql -bin.index
mysql-bin.000001
表内写入信息后再查看日志文件 mysql-bin.000001
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001
#查看新插入表的日志
 
mysqladmin -u root -p flush-logs
#刷新日志.
#此时data目录下会生成一个新的日志文件mysql-bin.000002
 
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002
#刷新之后更新的内容会更新在2里面这就是断点
 
如何恢复:
mysqlbinlog --no-defaults mysql-bin00000.1 | mysql -u root -p
#增量备份,恢复之前表内插入的数据。这个叫断点恢复。
 
 
此时再对表插入信息。此时新插入的数据再000002里面。只要没有刷新日志就不会出现断点。会先插入再删除。
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002
 
如果需要备份新的数据之前需要再刷新一次。
mysqladmin -u root -p flush-logs
#刷新日志.
 
重新在表内插入数据
此时断点之后数据都在新生成的000003里面
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002
 
mysqladmin -u root -p flush-logs
#刷新日志断点
 
再删除表内数据,这时候删除的操作会保存到000004里面
 
mysqlbinlog --no-defaults --base64-out=decode-rows -v mysql-bin.000003

general_log=ON

general_log_file=/usr/local/mysql/data/mysql_general.log

查询日志的保存位置

log-error=/usr/local/mysql/data/mysql_error.log

错误的保存位置,错误日志默认是开启的

slow_query_log=ON

开启慢查询日志

slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.lgo

设定慢查询日志的位置

long_query_time=5

默认的慢查询时间是10秒。超过5s的记录都会保存。

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

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

相关文章

ROC曲线和AUC

ROC曲线能更稳定反映模型的性能&#xff0c;对测试集合中数据分布的变化不敏感 AUC&#xff1a;当随机挑选一个正样本和一个负样本&#xff0c;根据当前的分类器计算得到的score将这个正样本排在负样本前面的概率 从AUC判断分类器&#xff08;预测模型&#xff09;优劣的标准&a…

【QT开发(19)】2023-QT 5.14.2实现Android开发,使用新版SDK,试图支持 emulator -avd 虚拟机

之前的博客【QT开发&#xff08;17&#xff09;】2023-QT 5.14.2实现Android开发&#xff0c;SDK是24.x版本的&#xff0c;虚拟机是32位的&#xff0c;但是现在虚拟机是64位的了&#xff0c;需要升级SDK匹配虚拟机 文章目录 最后的效果1.1 下载最新版 SDK tools (仅限命令行工…

JavaWeb-【3】DOM

笔记系列持续更新&#xff0c;真正做到详细&#xff01;&#xff01;本次系列重点讲解后端&#xff0c;那么第一阶段先讲解前端【续上篇CSS和JavaScript】 目录 1、dom介绍 2、html-dom 3、document 4、应用实例 ①、应用实例1 ②、多选框案例 ③、图片切换案例 ④、添…

高性能图数据库Neo4j从入门到实战

图数据库Neo4j介绍 什么是图数据库&#xff08;graph database&#xff09; 随着社交、电商、金融、零售、物联网等行业的快速发展&#xff0c;现实社会织起了了一张庞大而复杂的关系网&#xff0c;传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈…

密码学基础-Hash、MAC、HMAC 的区别与联系

密码学基础-Hash、MAC、HMAC 的区别与联系 Hash Hash 是一种从一段数据中创建小的数字“指纹”的方法。就像一个人的指纹代表一个人的信息一样&#xff0c;Hash 对输入的数据进行整理&#xff0c;生成一个代表该输入数据的“指纹” 数据。通常该指纹数据也可称之为摘要、散列…

CefSharp音视频编译与免费下载

注&#xff1a;Cefharp 音频和视频播放编译&#xff0c;生成相应的dll文件&#xff0c;从而支持项目开发。 建议编译至少 16G 的 RAM和至少 250G 的 SSD。该脚本以 E 盘为例&#xff0c;您需要在 E 盘上手动创建 cef 文件夹。禁止在转载后通过发布其他平台向用户收取下载费用。…

全国区块链职业技能大赛第八套区块链产品需求分析与方案设计

任务1-1:区块链产品需求分析与方案设计 医疗健康平台中涉及到医院、医生、患者等参与方,他们需要在区块链医疗健康平台中完成账户注册、身份上链、挂号就诊、查询病例等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于医疗健康平台系统架构,以…

【数据结构进阶】二叉搜索树

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C || 数据结构 目录 &#x1f308;前言&#x1f525;二叉搜索树&#x1f525; 二叉搜索树的实现Insert&#xff08;插入&#xff09;find&#xff08;查找&#xff09;erase(删除)destro…

毕业/期刊论文发表必备:YOLOv5 / v7 / v8 /v10算法网络结构图【文末提供原型文件下载地址】

前言:Hello大家好,我是小哥谈。同学们在写YOLO算法相关毕业论文/期刊论文的时候,不可避免的会用到相关版本的网络结构图,曾有很多小伙伴私信我索要原型文件,本文就给大家提供YOLOv5/v7/v8/v10版本算法网络结构图及原型文件下载地址。🌈 目录 🚀1.网络结构图 �…

Fiddler 导出请求为curl格式

来自:https://www.cnblogs.com/yudongdong/p/15418181.html Fiddler 下载地址: https://downloads.getfiddler.com/fiddler-classic/FiddlerSetup.5.0.20243.10853-latest.exe 这段代码加到类中 public static RulesOption("关闭请求体转代码", "生成代码&qu…

简单页表和多级页表

地址转换(Address Translation) 内存需要被分成固定大小的页(Page)然后再通过虚拟内存地址(Virtual Address) 到物理内存地址(Physical Address) 的地址转换(Address Translation)才能到达实际存放数据的物理内存位置 简单页表 页表的概念 想要把虚拟内存地址&#xff0c;映…

ip地址是电脑还是网线决定的

在数字化时代的浪潮中&#xff0c;网络已经成为了我们日常生活和工作不可或缺的一部分。当我们谈论网络时&#xff0c;IP地址无疑是一个核心的概念。然而&#xff0c;关于IP地址的分配和决定因素&#xff0c;很多人可能存在误解。有些人认为IP地址是由电脑决定的&#xff0c;而…

pytorch 46 将ASpanFormer模型导出onnx运行

ASpanFormer是一个2022年8月份发布的算法,其主要步骤与LoFTR模型类似,因此无法导出为onnx模型。根据ASpanFormer论文中的数据与效果图,可以确定AsPanFormer是可以作为一个比SP+SG更为有效的方案,其在标准数据集上的效果优于SP+SG,在速度上远超SP+SG,与LoFTR接近;在预测点…

C语言:静态库和动态(共享)库

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 在软件开发中&#xff0c;库&#xff08;Library&#xff09;是一个至关重要的概念。它们是由函数和数据的集合构成&#xff0c;用于实现特定的功能&#xff0c;供其他程…

测试——性能测试

内容大纲: 常见的性能问题 性能测试是什么 性能测试和功能测试之间的区别 为什么要进行性能测试 常见的性能指标及性能测试专业术语 性能测试分类 1. 常见的性能问题 系统内部以及软件的代码实现: 资源泄漏&#xff0c;包括内存泄漏。CPU使用率达到100%&#xff0c;系统被锁定…

Vue3组件通信

1、props 1.1 父传子 父组件&#xff1a;通过属性在子组件标签传递 子组件&#xff1a;通过defineProps接收 1.2 子传父 1.父组件先给子组件传递一个函数 2.子组件接收此参数&#xff08;函数&#xff09;&#xff0c;并在合适的时机调用此函数&#xff0c;通过函数的参数&…

SEO之网站结构优化(四)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 4、清晰导航 清晰的导航系统是网站设计的重要目标&#xff0c;对网站信息架构、用户体验影响重大。SEO也越来…

Hadoop高可用集群搭建及API调用

NameNode HA 背景 在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNode,但是它并不是NameNode的备份,它只是NameNode的一个助理,协助NameNode工作,SecorndaryNameNode会对fsimage和edits文…

【BUG】已解决:OSError: [Errno 22] Invalid argument

已解决&#xff1a;OSError: [Errno 22] Invalid argument 目录 已解决&#xff1a;OSError: [Errno 22] Invalid argument 【常见模块错误】 错误原因&#xff1a; 解决方法如下&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&…

基于luckysheet实现在线电子表格和Excel在线预览

概述 本文基于luckysheet实现在线的电子表格&#xff0c;并基于luckyexcel实现excel文件的导入和在线预览。 效果 实现 1. luckysheet介绍 Luckysheet &#xff0c;一款纯前端类似excel的在线表格&#xff0c;功能强大、配置简单、完全开源。 官方文档在线Demo 2. 实现 …