当前位置: 首页 > news >正文

MySQL-备份+日志:介质故障与数据库恢复

目录

                    第1关:备份与恢复
                                任务描述
                                相关知识
                                           MySQL的恢复机制
                                           MySQL的备份与恢复工具
                                编程要求
                                测试说明

                                           答案:

                    第2关:备份+日志:介质故障的发生与数据库的恢复
                                任务描述
                                相关知识
                                编程要求
                                测试说明

                                            答案:

第1关:备份与恢复

任务描述

本关任务:
备份数据库,然后再恢复它。

相关知识

为了完成本关任务,你需要掌握:
1.MySQL的恢复机制;
2.MySQL提供的备份与恢复工具。

MySQL的恢复机制

和大多数DBMS一样,MySQL利用备份、日志文件实现恢复。
具体理论知识在此不详细介绍。

MySQL的备份与恢复工具

  • MySQL提供了以下工具:
  • 逻辑备份工具:mysqldump
  • 物理备份工具:mysqlbackup(仅限商用版)
  • 日志工具:mysqlbinlog
  • 还原工具:mysql
  • 管理工具:mysqladmin

mysqldump
逻辑备份工具,它产生一系的SQL语句,执行这些语句可以重建原数据库的所有对象和数据。缺省输出是控制台,可以通过重定向符号,将其产生的SQL语句集合存入到某个文件。
mysqldump可以备份服务器上的全部数据库,也可以指定某些数据库,或者一个数据库中的某些表。
mysqldump -h127.0.0.1 -uroot -p123123 [options] --databases db_name 

--databases 参数用指定数据库名,后面可跟一个或多个数据库的名字,多个数据库名间用空格隔开。
mysqldump命令行工具还可以带若干参数,可选的参数多达几十个,详见官方参考手册。这里只介绍一个:
--flush-logs 刷MySQL日志,即重新开始一个日志文件。
重新开始一个新的日志文件,对未来确定哪些日志更有用很有帮助。通常海量备份前的日志文件,其重要性会降低许多,因为有备份在手,除非备份文件出故障,你可能不再需要使用之前的日志文件。

mysqlbackup
mysqlbackup是MySQL的物理备份工具,只有付费的商用企业版才有。

mysql
mysql是MySQL最重要的客户端管理工具,通常用户都是通过mysql登录到MySQL服务器,进行各种操作。此外,还可以直接通过它执行SQL脚本,还原或创建新库。
mysql -h127.0.0.1 -uroot -p12313 < mydb.sql
这样会直接执行mydb.sql的脚本。通过mysqldump备份出来的脚 本文件,可以用该方法直接用来恢复原数据库。

mysqladmin
mysqladmin是MySQL服务器的管理工具,一般用于配置服务器,也可以用来创建或删除数据库:
mysqladmin [options] command [command-arg] [command [command-arg]]
常用的command(执行命令)有:
create db_name 创建数据库
drop db_name 删除数据库
flush-logs 刷日志
flush-tables 刷表,所有表数据写入磁盘盘
kill id,id,...  杀死某些进程
password new_password 修改(登录者的)登录密码
ping 检查服务器是否可用
status 显示服务器状态
variables 显示各配置参数的值 
......

同样,该工具也支持不少可选的参数,详见官方手册。

mysqlbinlog
mysqlbinlog是MySQL的日志管理工具。在需要手工介入的故障恢复中,该工具必不可少。当然,平常也可以用它查看日志。
mysqlbinlog  mysql-bin.000983
上面的例子,用来查看日志文件mysql-bin.000983。MySQL的日志文件具有相同的前缀,后面的数字是日志文件的顺序。这个前缀是可配置的。比如,也可能是binlog.*,例如:

执行日志文件会导致日志所记录的事件重新做一遍,这样可以恢复一个给定时间段的数据,恢复的方法如下:
mysqlbinlog [option] binlog_files | mysql -u root -p
介质故障的恢复通常需要把最近一次备份后所有的日志文件全部列上。

mysqlbinlog也支持几十个可选的参数,比如:
--disable-log-bin 在通过日志恢复数据库期间不再写日志
--no-defaults 不使用MySQL默认的设置

其它参数数详情请参考官方文档。

MySQL还有其它一些工具(如mysqlimport,mysqlshow等),这里不一一介绍。

编程要求

设有居民人口登记数据库residents,请为该数据库做一次静态的(你一个人独享服务器)海量逻辑备份,备份文件命名为residents_bak.sql。 然后再用该逻辑备份文件恢复数据库。
评测程序并不检查备份文件的名字,你可以用其它文件名,但要保证备份和恢复时,使用同一个文件。备份和恢复的命令分别写在test1_1.sh和test1_2.sh文件中。

  • test1_1.sh - 作备份
  • test1_2.sh - 作恢复

切莫把两个文件弄反了。

根据提示,在右侧代码文件编辑器填写语句,完成上述要求。缺 省情况下你看到的应该是test1_1.sh。鼠标移至“代码文件”右侧的三角符号,会列出全部代码文件,你可以在两个代码文件间自由切换。当所有代码文件都填写完成后,点击“评测”按钮。

注意:mysql,mysqldump,mysqladmin运行时需提供登录用户名和密码,由于不是在交互式环境中使用这些工具,你需要在命令行上给出登录所需要的信息,例如:


mysql -h127.0.0.1 -uroot -p123123


但在命令行曝光密码具有极高风险,MySQL会抛出警告信息,故评测程序会通过其它途径提供登录密码,请在命令行省略-p参数。以mysql为例,你只需要这样写即可:


mysql -h127.0.0.1 -uroot

测试说明

数据库residents是本来就有的,平台会先运行test1_1.sh来作备份,然后会drop掉residents。再运行test1_2.sh来恢复数据库。最后检查恢复是否成功,如果在每个residents实列上的评测结果,都与预期结果完全一致即过可通关。


开始你的任务吧,祝你成功!

答案:

src/test1/test1_1.sh 文件:

# 你写的命令将在linux的命令行运行
# 对数据库residents作海量备份,备份至文件residents_bak.sql:mysqldump -h127.0.0.1 -uroot --flush-logs --databases residents > residents_bak.sql;# --flush-logs 可省略

src/test1/test1_2.sh 文件:

# 你写的命令将在linux的命令行运行
# 利用备份文件residents_bak.sql还原数据库:# 此外,还可以直接通过它执行SQL脚本,还原或创建新库。
# mysql -h127.0.0.1 -uroot -p12313 < mydb.sql
# 这样会直接执行mydb.sql的脚本。通过mysqldump备份出来的脚 本文件,可以用该方法直接用来恢复原数据库。mysql -h127.0.0.1 -uroot < residents_bak.sql;

第2关:备份+日志:介质故障的发生与数据库的恢复

任务描述

本关任务:

模拟介质故障的发生,以及如何利用备份和备份之后的日志恢复数据库。

相关知识

只要有备份文件,和自上次备份以来的日志文件,即使发生介质故障导致整个数据库丢失,也可以在更换介质后,恢复数据库。上一关已介绍有关知识。

在生产环境中,数据库文件、备份文件、日志文件都不会存放在同一介质上,甚至都不会存放在同一地理空间。为的就是灾难发生后,有机会恢复数据。

本关将摸拟介质故障的发生与数据库的恢复。你要使用的工具包括:

  • mysql
  • mysqldump
  • mysqlbinlog

上一关已经介绍了它们的用法。

编程要求

摸拟介质故障的发生与数据库的恢复。依时间顺序发生下列事件(其中标记为红色的部分将由你来完成,其余部分由评测程序完成):

时间点1:数据库train有业务数据产生;
时间点2:对数据库train作一次海量备份,同时新开日志;
时间点3:数据库train又有业务数据产生;
时间点4:故障发生;

时间点5:恢复数据库,保证两次发生的业务数据都不丢失。

请你完成时间点2和时间点5(标注红色的部分)的工作,将完成任务的脚本填写到对应文件中:

  • 对数据库train作一次海量逻辑备份同时开新日志:test2_1.sh
  • 利用备份文件和日志文件恢复数据库: test2_2.sh

切莫把两个文件弄反了。

所有其它工作,评测程序会替你完成:

  • 在发生业务数据的时间点,会批量写入数据;
  • 在故障发生的时间点,数据库train会被drop掉。
  • 在drop数据库之前,评测程序会将备份后新开的日志文件保存为log/binlog.000018


这里,评测程序总是替你找到你需要的那个日志文件,并保存在一个固定的日志文件中,供你恢复使用。但在实践中,日志文件是一直在变化的,即便是在这样一个由你独享服务器实例的环境下,两次点击“评测”按钮,日志文件也会因评测程序多次写入数据,加上你的备份与恢复操作而发生变化,当日志文件达到一定规模时,MySQL还会自动开启新日志文件。在本地实验时,自己要学会识别你需要哪个或哪些日志文件。

请根据提示,在右侧代码文件编辑器填写语句,完成上述要求。缺 省情况下你看到的应该是test2_1.sh。鼠标移至“代码文件”右侧的三角符号,会列出全部代码文件,你可以在两个代码文件间自由切换。当所有代码文件都填写完成后,点击“评测”按钮。

测试说明

评测程序将按照时间顺序触发上述相应事件,在轮到时间点2和时间点5时,运行你的脚本。在所有事件结束后检查数据库有没有成功恢复。如果在数据库的两个不同实例上,故障发生后,数据库都得以完全恢复,即可通关。


开始你的任务吧,祝你成功!

答案:

src/test2/test2_1.sh 文件:

# 这是shell脚本,将在linux命令行上执行
# 命令行上可省略密码的指定
# 请写出对数据库train作逻辑备份并新开日志文件的命令,备份文件你可以自己命名(如train_bak.sql):# --flush-logs 刷MySQL日志,即重新开始一个日志文件。
# 这里忽略 -p 防止数据库警告。mysqldump -h127.0.0.1 -uroot --flush-logs --databases train > train_bak.sql;

src/test2/test2_2.sh 文件:

# 这是shell脚本,将在linux命令行上执行
# 命令行上可省略密码的指定
# 请写出利用逻辑备份和日志恢复数据库的命令:# 恢复数据库
mysql -h127.0.0.1 -uroot < train_bak.sql;# 执行日志文件会导致日志所记录的事件重新做一遍,这样可以恢复一个给定时间段的数据,恢复的方法如下:
# mysqlbinlog [option] binlog_files | mysql -u root -p
# 介质故障的恢复通常需要把最近一次备份后所有的日志文件全部列上。# 题目上日志文件保存在 log/binlog.000018
# 参数选择:--disable-log-bin 在通过日志恢复数据库期间不再写日志  --no-defaults 不使用MySQL默认的设置mysqlbinlog --no-defaults log/binlog.000018 | mysql -h127.0.0.1 -uroot;

相关文章:

MySQL-备份+日志:介质故障与数据库恢复

目录 第1关&#xff1a;备份与恢复 任务描述 相关知识 MySQL的恢复机制 MySQL的备份与恢复工具 …...

嵌入式开发十八:USART串口通信实验

上一节我们学习了串口通信的基本理论&#xff0c;串口通信是学习单片机的一个重要的一步&#xff0c;非常重要&#xff0c;这一节我们通过实验来学习串口通信的使用&#xff0c;以及串口的接收中断的使用。 一、发送单个字节uint8_t数据或者字符型数据 实现的功能&#xff1a;…...

redis复习

redis知识点 redis持久化redis 订阅发布模式redis主从复制哨兵模式redis雪崩&#xff0c;穿透缓存击穿&#xff08;请求太多&#xff0c;缓存过期&#xff09;缓存雪崩 redis持久化 redis是内存数据库&#xff0c;持久化有两种方式&#xff0c;一种是RDB&#xff08;redis dat…...

SUSE linux的快照和恢复

snapper用于创建和管理文件系统快照&#xff0c;并在需要时实现回滚&#xff0c;它还可以用于创建用户数据的磁盘备份。snapper使用btrfs文件系统或者精简配置的被格式化成XFS或EXT4的LVM卷。snapper可以通过命令行或YaST来进行管理。 btrfs是一种copy-on-write文件系统&#x…...

【Qt快速入门(六)】- QLineEdit按钮的使用

目录 Qt快速入门&#xff08;六&#xff09;- QLineEdit按钮的使用QLineEdit按钮的使用QLineEdit的基本用法1. 创建和设置文本2. 获取输入文本3. 清空输入文本 文本处理1. 选择文本2. 设置光标位置3. 撤销和重做 输入验证1. 输入掩码2. 校验器3. 输入限制 样式设置1. 设置字体和…...

常用损失函数详解:广泛使用的优化约束方法

各类常用损失函数详解&#xff1a;广泛使用的优化约束方法 今天介绍下损失函数&#xff0c;先介绍下我常用的方法SmoothedL1&#xff0c;它是一个平滑的L1 penalty函数,用于处理约束violation。 标准的L1 penalty函数定义为: L 1 ( x ) { 0 , if x ≤ 0 x , if x > 0 …...

鸿蒙开发组件:【创建DataAbility】

创建DataAbility 实现DataAbility中Insert、Query、Update、Delete接口的业务内容。保证能够满足数据库存储业务的基本需求。BatchInsert与ExecuteBatch接口已经在系统中实现遍历逻辑&#xff0c;依赖Insert、Query、Update、Delete接口逻辑&#xff0c;来实现数据的批量处理。…...

配电室数据中心巡检3d可视化搭建的详细步骤

要搭建配电室巡检的3D可视化系统&#xff0c;可以按照以下步骤进行&#xff1a; 收集配电室数据&#xff1a; 首先&#xff0c;需要收集配电室的相关数据&#xff0c;包括配电室的布局、设备信息、传感器数据等。可以通过实地调查、测量和设备手册等方式获取数据。 创建3D模型…...

TIME_WAIT的危害

前言 该文章主要讨论下TIME_WAIT的存在意义和潜在危害&#xff0c;以及解决措施。 具体内容 首先看一下下面这幅图 这幅图来自《TCP IP详解卷1&#xff1a;协议 原书第2版中文》TCP状态变迁图。 TIME_WAIT存在意义 可靠的终止TCP连接。 保证让迟来的TCP报文有足够的时间被…...

搜维尔科技邀您共赴2024第四届轨道车辆工业设计国际研讨会

会议内容 聚焦“创新、设计、突破”&#xff0c;围绕“面向生命健康、可持续发展的轨道交通系统” 为主题&#xff0c;从数字化、智能化、人性化、绿色发展等方面&#xff0c;探索轨道交通行业的设计新趋势及发展新机遇。 举办时间 2024年7月10日-12日 举办地点 星光岛-青岛融…...

智能中人类造成的风险、机器造成的风险、环境造成的风险

在使用智能技术时&#xff0c;可能会面临各种类型的风险。以下是一些可能的风险情况&#xff1a; 1、人类造成的风险 错误判断和决策&#xff1a;人类在使用智能系统时可能会因为各种原因做出错误的判断和决策&#xff0c;导致不良后果。人为错误&#xff1a;技术操作人员、维护…...

MYSQL基础查询

示例&#xff1a;user_profile iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20北京大学Beijing42315female23浙江大学Zhejiang55432male25山东大学Shandong 查询所有列 select * from user_profile&#xff1b;查询…...

【Golang】Go 中的生产者-消费者模式

Go 中的生产者-消费者模式 来源:https://medium.com/@mm.nikfarjam/the-producer-consumer-pattern-in-go-cf97299a0320 文章目录 Go 中的生产者-消费者模式介绍关键组件在 Go 中的实现结论Go 中的生产者-消费者模式 介绍 生产者-消费者模式是处理大数据的最常见设计模式之一…...

【通过新能源汽车的智慧数字底盘技术看计算机的相关技术堆栈?以后是软硬结合的全能程序员的天下,取代全栈(前后端都会的全栈程序员)】

汽车的“智慧数字底盘”是一个综合性的技术平台&#xff0c;旨在提升车辆的性能、安全性和驾驶体验。它集成了多种先进的技术和系统&#xff0c;是全能程序员的必杀技&#xff01; 1. 传感器技术 a. 激光雷达&#xff08;LiDAR&#xff09; 用于生成高分辨率的3D地图&#…...

Python网络爬虫4-实战爬取pdf

1.需求背景 爬取松产品中心网站下的家电说明书。这里以冰箱为例&#xff1a;松下电器-冰箱网址 网站分析&#xff1a; 第一步&#xff1a; 点击一个具体的冰箱型号&#xff0c;点击了解更多&#xff0c;会打开此型号电器的详情页面。 第二步&#xff1a;在新打开的详情页面中…...

超神级!Markdown最详细教程,程序员的福音

超神级&#xff01;Markdown最详细教程&#xff0c;程序员的福音Markdown最详细教程&#xff0c;关于Markdown的语法和使用就先讲到这里&#xff0c;如果喜欢&#xff0c;请关注“IT技术馆”。馆长会更新​最实用的技术&#xff01;https://mp.weixin.qq.com/s/fNzhLFyYRd3skG-…...

Android OTA 升级基础知识详解+源码分析

前言&#xff1a; 本文仅仅对OTA升级的几种方式的概念和运用进行总结&#xff0c;仅在使用层面对其解释。需要更详细的内容我推荐大神做的全网最详细的讲解&#xff1a; https://blog.csdn.net/guyongqiangx/article/details/129019303?spm1001.2014.3001.5502 三种升级方式…...

【吊打面试官系列-Mysql面试题】SQL 语言包括哪几部分?每部分都有哪些操作关键字?

大家好&#xff0c;我是锋哥。今天分享关于 【SQL 语言包括哪几部分&#xff1f;每部分都有哪些操作关键字&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; SQL 语言包括哪几部分&#xff1f;每部分都有哪些操作关键字&#xff1f; SQL 语言包括数据定义(DDL)、…...

Redis的缓存击穿与解决

缓存击穿问题也叫热点Key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的Key突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 Redis实战篇 | Kyles Blog (cyborg2077.github.io) 目录 解决方案 互斥锁 实现 逻辑过期 实现 解决方案…...

网络层 IP协议【计算机网络】【协议格式 || 分片 || 网段划分 || 子网掩码】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一&#xff0c;前提 二&…...

Python学习笔记14:进阶篇(三)。类的终结篇,类的导入和模块的导入。

前言 这篇文章属于类知识的最后一篇&#xff0c;带一点点其他知识&#xff0c;学习内容来自于Python crash course。 关注我私信发送Python crash course&#xff0c;分享一份中文版PDF。 类的导入 在学习的时候&#xff0c;包括之前&#xff0c;我都是在一个文件中把所有代…...

C++ lambda表达式举例

C lambda表达式 Lambda表达式是一种简洁的方式来创建匿名函数&#xff0c;可以直接在函数调用的地方定义&#xff0c;主要用于简化代码。 Lambda表达式的基本语法如下&#xff1a; [capture](parameters) -> return_type {// function body };示例1&#xff1a;基本用法 …...

持续总结中!2024年面试必问 20 道设计模式面试题(五)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道设计模式面试题&#xff08;四&#xff09;-CSDN博客 九、请解释代理模式&#xff08;Proxy Pattern&#xff09;及其类型。 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构设计模式&#xff0c…...

嵌入式面经111题答案汇总(含技术答疑)_嵌入式项目源码分享

111道嵌入式面试题答案汇总专栏链接&#xff08;承诺免费技术答疑&#xff09; --> 《嵌入式/C面试题解析大全》 1、简介 本人是2020年毕业于广东工业大学研究生&#xff1a;许乔丹&#xff0c;有国内大厂CVTE和世界500强企业工作经验&#xff0c;整理超全面111道嵌入式面试…...

鸿蒙开发通信与连接:【@ohos.connectedTag (有源标签)】

有源标签 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import connectedTag from ohos.connectedTag;connectedTag.init init(): boolean 初始化有源标签芯片。 需要权限&#…...

在线编程工具

1.C语言在线编程 https://www.jyshare.com/compile/11/ 2.java在线编程 https://www.w3cschool.cn/tryrun/runcode1?langjava 3.Python在线编程 https://www.python123.io/index/playground/python?ivk_sa1024320u...

NSSCTF中的[WUSTCTF 2020]朴实无华、[FSCTF 2023]源码!启动! 、[LitCTF 2023]Flag点击就送! 以及相关知识点

目录 [WUSTCTF 2020]朴实无华 [FSCTF 2023]源码&#xff01;启动! [LitCTF 2023]Flag点击就送&#xff01; 相关知识点 1.intval 绕过 绕过的方式&#xff1a; 2.session伪造攻击 [WUSTCTF 2020]朴实无华 1.进入页面几乎没什么可用的信息&#xff0c;所以想到使用dis…...

Vue49-props属性

一、当同一个组件标签被使用多次 因为data属性写的是函数形式&#xff01; 二、需求&#xff1a;老王也想用<Student>组件&#xff0c;但是需要动态把老王想要的值传进来。 2-1、使用props属性接收参数 使用props属性&#xff0c;接收的这三个参数&#xff0c;是被保存在…...

CVE-2020-1957 漏洞复现

先声明一下&#xff0c;免杀还是会更的&#xff0c;不过中间可能会穿插一下渗透的内容&#xff01;&#xff01;&#xff01; 踩坑点&#xff1a; 在一开始翻阅了CSDN之后&#xff0c;发现不同文章之间存在出入&#xff0c;于是最后去了CVE的官方文档&#xff0c;和参考一些国…...

网工内推 | 中国电信、香港宽频系统工程师,CCIE认证优先,最高年薪25w

01 中国电信股份有限公司浙江分公司 &#x1f537;招聘岗位&#xff1a;系统架构师 &#x1f537;岗位职责&#xff1a; 1、做好客户网络和信息安全产品的解决方案支撑、交付及后续运营维护&#xff0c;做好相关产数项目的支撑。 2、根据信息安全管理要求&#xff0c;负责客户…...

iis停止单个网站/平台推广方式方法是什么

最近要用到XML文件&#xff0c;网络上也有很多处理XML文件的方法&#xff0c;但最终还是选择了TinyXML&#xff0c;因为它的小巧。在网络了查找了很多相关的资料&#xff0c;记录下来。 TinyXML文件的基础使用比较简单&#xff0c;网络上也有很多相关的例子和教程&#xff0c;在…...

网站头部 标签/百度搜题

网上很多方法&#xff0c;这里简单总结一下两个步骤&#xff0c;一个是判断文件后缀&#xff0c;二个是使用 getimagesize。下面摘自php中文手册说明array getimagesize ( string $filename [, array &$imageinfo ] )getimagesize() 函数将测定任何 GIF&#xff0c;JPG&…...

做日签的网站/泉州百度广告

问题 1 如何批量删除macro 2 导入的macro乱码怎么办 解答 问题1: 通过编辑 C:\Users\你的电脑用户名\AppData\Roaming\MobaXterm\MobaXterm.ini 搜索 [Macros] 和 [MacrosHotkeys] 他们两个标题下的内容即对应你的macro. 注意: 编辑前必须先关闭mobaxterm软件. 问题2: macr…...

公司请人做的网站打不开/网上代写文章一般多少钱

CSS能够简单的通过修改一个规则&#xff0c;即可更改页面或局部的字体、颜色和大小。可谓是一键更改!更改字体1.单击“设计”按钮&#xff0c;切换到“设计”视图。2.在“CSS样式”面板中&#xff0c;双击body规则打开“body的CSS规则定义”对话框&#xff0c;“Font-family”默…...

苏州市建设局网站/国内seo公司排名

概述 Android 包括一个应用程序框架、几个应用程序库和一个基于 Dalvik 虚拟机的运行时&#xff0c;所有这些都运行在 Linux 内核之上。通过利用 Linux 内核的优势&#xff0c;Android 得到了大量操作系统服务&#xff0c;包括进程和内存管理、网络堆栈、驱动程序、硬件抽象层以…...

招远网站/海外网站推广的公司

Visual Studio 2015开了个小玩笑...