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

这篇具有很好参考价值的文章主要介绍了MySQL-备份+日志:介质故障与数据库恢复。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第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.*,例如:
MySQL-备份+日志:介质故障与数据库恢复

执行日志文件会导致日志所记录的事件重新做一遍,这样可以恢复一个给定时间段的数据,恢复的方法如下:
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实列上的评测结果,都与预期结果完全一致即过可通关。

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

代码参考

test1_1.sh 文件内容

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

test1_2.sh 文件内容

# 你写的命令将在linux的命令行运行
# 利用备份文件residents_bak.sql还原数据库:
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时,运行你的脚本。在所有事件结束后检查数据库有没有成功恢复。如果在数据库的两个不同实例上,故障发生后,数据库都得以完全恢复,即可通关。

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

代码参考

test2_1.sh 文件内容

# 这是shell脚本,将在linux命令行上执行
# 命令行上可省略密码的指定
# 请写出对数据库train作逻辑备份并新开日志文件的命令,备份文件你可以自己命名(如train_bak.sql):
mysqldump -h 127.0.0.1 -uroot --flush-logs --databases train > backup/train_bak.sql

test2_2.sh 文件内容文章来源地址https://www.toymoban.com/news/detail-451188.html

# 这是shell脚本,将在linux命令行上执行
# 命令行上可省略密码的指定
# 请写出利用逻辑备份和日志恢复数据库的命令:
mysql -h127.0.0.1 -uroot < backup/train_bak.sql
mysqlbinlog --no-defaults log/binlog.000018 | mysql -h127.0.0.1 -uroot

到了这里,关于MySQL-备份+日志:介质故障与数据库恢复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库应用:MySQL备份与恢复

    目录 一、理论 1.数据备份 2.完全备份与恢复 3.完全备份与恢复应用 4.增量备份与恢复 5.增量备份与恢复应用 6.使用脚本备份 7.日志管理 二、实验 1.完全备份与恢复 2.增量备份与恢复 3.使用脚本备份 三、问题 1.mysqldump报错 四、总结 (1)重要性 ①  备份的主要目的是灾难恢复

    2024年02月16日
    浏览(66)
  • Mysql数据库增量备份与恢复

    使用 mysqldump 进行完全备份,备份的数据中有重复数据,备份时间与恢复时间长。 而增量备份就是备份自上一次备份之后增加或改变的文件或内容。 1、增量备份的特点: 没有重复数据,备份量不大,时间短 恢复麻烦:需要上次完全备份及完全备份之后所有的增量备份才能恢复

    2024年02月07日
    浏览(84)
  • 【数据库四】MySQL备份与恢复

    数据库备份 物理备份 :直接对数据库的 数据文件或者日志文件 进行备份. 逻辑备份 :对 数据库的库或表对象 进行备份. 备份策略 完全备份 :每次备份 都备份完整的数据库 . 是对整个数据库、数据库结构和文件结构的备份。 保存的是 备份完成时刻的数据库 。 是 差异备份与增

    2024年02月11日
    浏览(57)
  • MySQL数据库的备份与恢复

    备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误 人为操作错误 运算错误 磁盘故障 灾难(如火灾、地震)和盗窃 1)物理备份 物理备份:对数据库操作系统的物理文件(如数据

    2024年02月04日
    浏览(192)
  • 数据库(MySQL的备份和恢复)

    目录 1.1 MySQL 日志管理 1.1.1 MySQL日志类型 1.1.2 错误日志 错误日志中主要记录的几种日志 错误日志的定义 1.1.3 通用查询日志 1.1.4 慢查询日志 和慢查询相关的变量设置 1.1.5 二进制日志 二进制日志是记录执行的语句还是执行后的数据 日志滚动  1.2 MySQL备份 1.2.1 备份类型 1.2.2

    2024年01月25日
    浏览(59)
  • 9-MySQL数据库 数据的备份与恢复

    1.date文件的备份 2.mysqldump 备份 说明: mysqldump是MySQL数据库中的一个实用程序,它主要用于转储(备份)数据库。mysqldump通过生成一个SQL脚本文件,包含从头开始重新创建数据库所必需的(如 CREATE TABLE和INSERT等),来实现数据库的备份和转储。这样,你可以在任何时候通过运

    2024年02月08日
    浏览(65)
  • 【Linux】Mysql的数据库备份及恢复

            备份就是为了防止原数据丢失,保证数据的安全。当数据库因为某些原因造成部分或 者全部数据丢失后,备份文件可以帮我们找回丢失的数据。因此,数据备份是很重要 的工作。 常见数据库备份的应用场景如下: 数据丢失应用场景: 人为操作失误造成某些数据

    2023年04月10日
    浏览(49)
  • MySQL基础(三十八)数据库备份与恢复

    物理备份 :备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占用空间比较大,MySQL中可以用 xtrabackup 工具来进行物理备份。 逻辑备份 :对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。

    2024年02月06日
    浏览(57)
  • 【七天入门数据库】第五天 MySQL的备份恢复

    【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 【七天入门数据库】第四天 数据操作语言DML 【七天入门数据库】第五天 MySQL的备份恢复 【七天入门数据库】第六天 MySQL的视图与索引 【七天

    2024年02月16日
    浏览(55)
  • MySQL数据库的备份、恢复、导出、导入(bin log和mydump)

    一、使用 bin log 来恢复数据 一、bin log的三种格式 1、statement:基于SQL语句的复制(statement-based replication,SBR) 2、row:基于行的复制(row-based replication,RBR) 3、mixed:混合模式复制(mixed-based replication,MBR) 4、查看模式和更改模式 二、配置bin log策略 三、获取bin log文件列表

    2024年02月21日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包