(五)MySQL的备份及恢复

1、MySQL日志管理

在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这样情况下,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了

数据库中数据丢失或被破坏可能原因:

  1. 误删除数据库
  2. 数据库工作时、意外程序终止、程序崩溃
  3. 病毒的入侵
  4. 文件系统损坏后,系统进行自检操作时,误删除了核心数据
  5. 升级数据库时、命令不严格
  6. 设备故障,硬件损坏
  7. 自然灾害,被盗

MySQL日志类型

日志类型记录文件中的信息类型
错误日志记录启动、运行或停止时出现问题
查询日志记录建立的客户端连接和执行的语句
二进制日志记录所有更改数据的语句。主要用于复制或即时点恢复
慢日志记录所有执行时间超过最大查询时间 long_query_time 的查询操作或不使用索引的查询
事务日志记录InnoDB等支持事务管理的存储引擎执行事务时所产生的日志

默认情况下,所有日志都创建于mysqld数据目录内,通过刷新日志可以强制mysqld来关闭和重新打开或者切换日志文件

刷新日志命令:

mysql > FLUSH LOGS
mysqladmin flush-logs

1.2 错误日志

错误日志中主要记录的几种日志:

  1. 服务器启动和关闭过程中的信息
  2. 务器运行过程中的错误信息
  3. 事件调度器运行一个时间时产生的信息
  4. 在从服务上启动进程时所产生的信息

错误日志的定义:

可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。

如果没有给定file_name值,mysqld会使用错误日志名host_name.err 并在数据目录中写入日志文件。

如果执行刷新操作,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。

#错误日志
mysql> SHOW GLOBAL VARIABLES LIKE '%log_error%';
#警告日志
mysql> SHOW GLOBAL VARIABLES LIKE '%log_warning%';

1.3 通用查询日志

启动开关 general_log = {ON||OFF}

日志文件变量 general_log_file [=/PATH/TO/file]

全局日志开关 log = {ON||OFF}

记录类型 log_output = {TABLE||FILE||NONE}

如果需要启用通用查询日志 至少要配置 general_log = NO ,log_output = {TABLE||FILE}

如果general_log_file 没有额外指定 默认名为 host_name.log

mysql> SHOW GLOBAL VARIABLES LIKE '%general_log%';
​
mysql> SHOW GLOBAL VARIABLES LIKE '%log_output%';

1.4 慢查询日志

Mysql 如果启用了 slow_query_log = ON 选项。就会记录执行时间超过long_query_time的查询。

日志记录文件为slow_query_log_file[=file_name] 若没有给定file_name, 默认为主机名,后缀为-slow.log。

与慢查询相关的变量设置:

# 系统默认关闭慢查询日志开关 查看状态
MYSQL> SHOW GLOBAL VARIABLES LIKE '%slow_query_log%'; 
​
#开启方式
SET GLOBAL slow_query_log=ON;
​
#查看默认的查询时效
MYSQL> SHOW GLOBAL VARIABLES LIKE 'long_query_time';

1.5 二进制日志

开启日志

二进制日志启动开关:log-bin [= file_name]

5.6版本

前:一定要手动指定

后:默认file_name为$datadir/mysqld-binlog

查看二进制日志的工具为 mysqlbinlog

二进制日志包含了所有更新了数据或者已经潜在更新了数据。语言语句以事件形式保存,描述了数据的更改。

二进制日志还包含关于每个更新数据库的语句的执行时间信息。

作用:当数据库存在故障时,恢复能尽最大可能进行即时点恢复,因为二进制日志内包含了备份后进行的所有更新,所以二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。

二进制日志是记录执行的语句还是 执行后的数据 ???

情况1:假如一个表有10万行数据,而现在要执行一个如下语句将amount字段的值全部在原来的基础上增加1000

UPDATE sales.january SET amount=amount+1000 ;

如果影响的行数过于庞大,日志内记录的是执行的语句

情况2:如果像某一个指定的行内字段插入数据

UPDATE student SET Email = "XXX" WHERE StudentNo = ???; 

此时就不能记录语句了,因为不同时间执行的结果是不一样的。这是应该记录这一行的值,这种就是基于行(row)的二进制日志

情况3:如果出现触发器 存储函数 这种方式进行数据的更新的话,可能会结合两种方式来进行记录,这种叫做 混合方式的二进制日志

日志滚动

在my.cnf中设定max_binlog_size = 200M,表示限制二进制日志最大尺寸为200M,超过200M后进行滚动。

MySQL的滚动方式与其他日志不太一样,滚动时会创建一个新的编号大1的日志用于记录最新的日志,而 原日志名字不会被改变。每次重启MySQL服务,日志都会自动滚动一次。

#日志查看
查看有哪些二进制日志文件:
mysql> SHOW BINARY LOGS;查看当前正在使用的是哪一个二进制日志文件:
mysql> SHOW MASTER STATUS;

2、MySQL备份

2.1备份类型

根据服务器的状态,备份分为三种类型:热备份、温备份、冷备份。

热备份:读、写不受影响;

温备份:仅可以执行读操作;

冷备份:读写均终止,离线备份;

从对象的角度分析,分为物理备份以及逻辑备份

物理备份:复制数据文件

逻辑备份:将数据导出至目标 XXX.sql文件中

从数据收集上来分,分为完全备份、增量备份、差异备份

完全备份:备份全部的数据

增量备份:仅备份上次完全备份或增量备份后所变化的数据

差异备份:仅备份上次完全备份后变化的数据

逻辑备份的优缺点

优点

在备份速度上两种备份要取决于当前的存储引擎

物理备份的还原速度非常快,但是物理备份的最小单元只能做到表

逻辑备份保存的结构通常都是ASCII形式,所以我们只能通过.sql方式进行保存

逻辑备份有非常强的兼容性,而物理备份对版本要求非常高

逻辑备份对保持数据的安全性有保障

缺点

逻辑备份会对DBMS产生额外的压力,物理备份则无明显压力

逻辑备份的结果可能比信息本身还要大。可以通过压缩来缓解这一现象。

针对于高精度内容,逻辑备份可能会倒置浮点精度丢失。

2.2 备份内容

数据文件
数据结构
日志(二进制日志,事务日志)
存储过程,存储函数,触发器
个人配置信息
脚本信息

2.3 常见的备份工具

MySQL自带的工具

基于DBMS=====> mysqldump

mysqldump 是mysql数据库管理系统,自带的逻辑备份工具。支持所有的主流引擎,MyISAM引擎是温备,InnoDB引擎是热备。备份速度中等,还原速度较慢。因此在实现还原时,我们会采用其他的方式进行操作。

#备份所有数据库:
mysqldump -uroot -p --all-databases > /usr/local/databases.sql
#备份指定的数据库(数据表)
mysqldump -uroot -p MySchool_db student grade > /usr/local/MySchool_db.sql;
#还原方式1
use MyScl_db;
source/usr/local/MySchool_db.sql;
#还原方式2
mysql -uroot -p MyScl_db < /usr/local/MySchool_db.sql

其他工具

ibbackup 商业工具 MyISAM是温备份,InnoDB是热备份 ,备份和还原速度都很快,这个软件它的每服务器授权版本是5000美元。

xtrabackup 开源工具 MyISAM是温备份,InnoDB是热备份 ,是ibbackup商业工具的替代工具。

mysqlbackup ORACLE公司也提供了针对企业的备份软件MySQL Enterprise Backup简称:mysqlbackup。

MySQL企业备份工具执行在线“热备“,无阻塞的MySQL数据库备份。全备份可以在所有InnoDB数据库上 执行,而无需中断MySQL查询或更新。此外,支持增量备份,只备份自上次备份后有变化的数据。另外部分备 份,支持特定的表或表空间按需要进行备份。

#备份
选择需要备份的数据库,右键-》备份/导出-》以SQL转储文件备份数据库
选择需要恢复的数据库,右键-》导入-》从sql转储文件导入数据库
​
PS 不要混用,可能会出现冲突,注意甄别核心命令

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

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

相关文章

idea破解方法

idea破解&#xff1a;IDEA 2023.2.5 最新激活码,注册码&#xff08;亲测好用&#xff09;

GitHub 开启 2FA 双重身份验证的方法

为什么要开启 2FA 自2023年3月13日起,我们登录 GitHub 都会看到一个要求 Enable 2FA 的重要提示,具体如下: GitHub users are now required to enable two-factor authentication as an additional security measure. Your activity on GitHub includes you in this requi…

vivado 硬块规划器

硬块规划器 Versal自适应SoC的硬块规划GT组件从通用/通道更新为AMD的GT_QUAD粒度Versal™ 自适应SoC。为了启用某些GT共享用例&#xff0c;对GT向导流进行了修改使用Vivado IP集成商。使用Vivado IP集成商构建使用单个或多个GT_ QUAD。连接到GT_QUAD的自定义IP的设计条目为通过…

认知篇:什么是逆转诅咒?一个提问GPT的错误姿势

本系列文章主要是分享一些关于大模型的一些学术研究或者实验性质的探索&#xff0c;为大家更新一些针对大模型的认知。所有的结论我都会附上对应的参考文献&#xff0c;有理有据&#xff0c;也希望这些内容可以对大家使用大模型的过程有一些启发。 注&#xff1a;本系列研究关注…

养猫家庭如何挑选宠物空气净化器?猫用空气净化器品牌推荐!

家里的猫咪真的太可爱了&#xff0c;但它们的毛发总是无处不在。而且猫砂盆一天不清理&#xff0c;整个屋子都会弥漫着臭味。每天打扫也很费时费力&#xff0c;虽然享受着猫咪带来的快乐&#xff0c;但也不得不面对这些困扰。 一直以来&#xff0c;我都想购买一台空气净化器&a…

宠物处方单子怎么开,宠物门诊处方管理软件教程

宠物处方单子怎么开&#xff0c;宠物门诊处方管理软件教程 一、前言 宠物店电子处方软件操作教程以 佳易王宠物店电子处方管理系统V16.0为例说明。 如图&#xff0c;在开处方的时候&#xff0c;点击导航栏菜单&#xff0c;兽医处方按钮 点击 增加新单&#xff0c;填写宠物及…

Security ❀ HTTP/HTTPS逐包解析交互过程细节

文章目录 1. TCP三次握手机制2. HTTP Request 请求报文3. HTTP Response 响应报文4. SSL/TLS协议4.1. ClientHello 客户端Hello报文4.2 ServerHello 服务器Hello报文4.3. *ServerKeyExchange 服务公钥交换4.4. ClientKeyExchange 客户端公钥交换4.5. *CertificateVerify 证书验…

graphviz下载与使用-----决策树可视化

下载graphviz 官网:https://www.graphviz.org/download/ 安装graphviz 双击安装程序

《葡萄与葡萄酒鉴赏》期末考核

题目一:随着时代的发展&#xff0c;人们的生活水平逐渐提高&#xff0c;人们更加注重生活的质量和品位&#xff0c;葡萄酒已经成为人们生活中不可缺少的一部分。请论述葡萄酒的营养价值和经济价值。 葡萄酒的营养价值&#xff1a; 抗氧化物质&#xff1a;葡萄酒中富含抗氧化物…

vue中父组件直接调用子组件方法(通过ref)

目录 1、vue2 中&#xff0c;父组件调用子组件的方法 2、vue3 中&#xff0c;父组件调用子组件的方法 1、vue2 中&#xff0c;父组件调用子组件的方法 在Vue 2中&#xff0c;父组件可以通过使用ref属性来引用子组件的实例&#xff0c;然后通过该实例调用子组件的方法。 首先…

报错“MySql配置文件已损坏,请联系技术支持”的解决方法

目录 第一步 打开控制面板&#xff0c;选择管理工具&#xff0c;再选择事件查看器 第二步 在【应用程序】里找到这条报错&#xff0c;记下来文件内容。我自己的来源是“MsiInstaller” 第三步 winR组合键&#xff0c;输入regedit打开注册表 第四步 根据前面报错的文件名定位…

Linux ip命令

IP命令 从centos7以前我们一直使用ifconfig命令来执行网络相关的任务,比如检查和配置网卡信息&#xff0c;但是ifconfig已经不再被维护&#xff0c;并且在最近版本的Linux中被废除了&#xff01;ifconfig命令已经被ip命令所代替了。 ip 命令跟 ifconfig 命令有些类似&#xff…

靠着这篇笔记,我拿下了16k车载测试offer!

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

Android 熄屏录音一分钟后没有声音

在使用录音功能的时候发现熄屏的时候过了一分钟之后就没有声音了&#xff0c;虽然录音还在录制但是没有声音&#xff0c;推测是熄屏后手机声音的什么服务关闭了。 可以用前台服务使录音这个动作保活&#xff0c;Android官方文档 服务概览 | Background work | Android De…

构建基于Flask的跑腿外卖小程序

跑腿外卖小程序作为现代生活中的重要组成部分&#xff0c;其技术实现涉及诸多方面&#xff0c;其中Web开发框架是至关重要的一环。在这篇文章中&#xff0c;我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型&#xff0c;展示其基本功能和实现原理。 首先&…

NVIDIA Isaac Sim 入门教程(二)

系列文章目录 前言 一、简介 1.1. Isaac Sim Interface 1.1.1. 学习目标 本教程介绍了Omniverse Isaac Sim中最常用的用户界面按钮、菜单和控件。学完本教程后&#xff0c;您应该能够更自信地在 Isaac Sim 界面中浏览和查找内容。 1.1.2. 入门 首先在场景中添加一个立方体。…

JavaScript学习大纲

1.基本概念和语法 JavaScript简介和历史JavaScript的用途和应用领域JavaScript的基本语法&#xff08;变量、数据类型、运算符等&#xff09;控制流程&#xff08;条件语句、循环语句等&#xff09;函数和作用域 2.DOM操作 了解DOM&#xff08;文档对象模型&#xff09;的基…

银行数据仓库体系实践(14)--数据应用之内部报表及数据分析

在银行日常经营中&#xff0c;每个部门、分支行随时随地都需要进行数据统计和分析&#xff0c;才能对银行当前业务状况及时了解&#xff0c;以进行后续经营策略、营销活动、风险策略的调整和决策。那在平时进行数据分析时除了各数据应用系统&#xff08;如各类监管报表系统、财…

DAY35:贪心算法part4、860\406\452

Leetcode: 860 柠檬水找零 有如下三种情况&#xff1a; 情况一&#xff1a;账单是5&#xff0c;直接收下。 情况二&#xff1a;账单是10&#xff0c;消耗一个5&#xff0c;增加一个10 情况三&#xff1a;账单是20&#xff0c;优先消耗一个10和一个5&#xff0c;如果不够&am…

PalWorld/幻兽帕鲁Ubuntu 22.04 LTS 一键部署脚本

上去就是干&#xff01; 创建install.sh文件 #!/bin/bashsteam_usersteam log_path/tmp/pal_server.logif getent passwd "$steam_user" >/dev/null 2>&1; thenecho "User $steam_user exists." elseecho "User $steam_user does not exi…