【Linux】Mysql的数据库备份及恢复

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

一、数据库备份的必要性

        备份就是为了防止原数据丢失,保证数据的安全。当数据库因为某些原因造成部分或 者全部数据丢失后,备份文件可以帮我们找回丢失的数据。因此,数据备份是很重要 的工作。

常见数据库备份的应用场景如下:


数据丢失应用场景:

  • 人为操作失误造成某些数据被误操作
  • 软件 BUG 造成部分数据或全部数据丢失
  • 硬件故障造成数据库部分数据或全部数据丢失
  • 安全漏洞被入侵数据恶意破坏

非数据丢失应用场景:

  • 特殊应用场景下基于时间点的数据恢复
  • 开发测试环境数据库搭建
  • 相同数据库的新环境搭建
  • 数据库或者数据迁移

二、MySQL备份类型

根据备份的方法(是否需要数据库离线)可以将备份分为:

  • 热备(Hot Backup)
  • 冷备(Cold Backup)
  • 温备(Warm Backup)

热备份可以在数据库运行中直接备份,对正在运行的数据库操作没有任何的影响,数
据库的读写操作可以正常执行。这种方式在 MySQL 官方手册中称为 Online Backup
(在线备份)。
冷备份必须在数据库停止的情况下进行备份,数据库的读写操作不能执行。这种备份
最为简单,一般只需要复制相关的数据库物理文件即可。这种方式在 MySQL 官方手
册中称为 Offline Backup(离线备份)。
温备份同样是在数据库运行中进行的,但是会对当前数据库的操作有所影响,备份时
仅支持读操作,不支持写操作。

  • 按照备份后文件的内容,热备份又可以分为:
    • 逻辑备份
    • 裸文件备份

        在 MySQL 数据库中,逻辑备份是指备份出的文件内容是可读的,一般是文本内容。
内容一般是由一条条 SQL 语句,或者是表内实际数据组成。如 mysqldump 和
SELECT * INTO OUTFILE 的方法。这类方法的好处是可以观察导出文件的内容,一
般适用于数据库的升级、迁移等工作。但其缺点是恢复的时间较长。


        裸文件备份是指复制数据库的物理文件,既可以在数据库运行中进行复制(如
ibbackup、xtrabackup 这类工具),也可以在数据库停止运行时直接复制数据文
件。这类备份的恢复时间往往比逻辑备份短很多。

        

        对于跨平台迁移,逻辑备份通常比裸文件备份更方便。这是因为逻辑备份将数据以可读的格式进行备份,可以在不同操作系统和数据库软件之间进行转换和导入。而裸文件备份只能在相同类型的操作系统和数据库软件上进行恢复,如果需要跨平台迁移,就需要先将数据进行转换,才能进行导入。因此,在跨平台迁移时,推荐使用逻辑备份。

  • 按照备份数据库的内容来分,备份又可以分为:
    • 完全备份
    • 部分备份

完全备份是指对数据库进行一个完整的备份,即备份整个数据库,如果数据较多会占 用较大的时间和空间。 部分备份是指备份部分数据库(例如,只备份一个表)


  • 部分备份又分为:
    • 增量备份
    • 差异备份

        增量备份需要使用专业的备份工具。也就是说每次备份只会备份自上次备份之后到这次备份的时间之内产生的数据。 因此每次备份都比差异备份节约空间,但是恢复数据麻烦。

        

        差异备份指的是自上一次完全备份以来变化的数据。增量备份相比,浪费空间,但 恢复数据比增量备份简单。

        

        也就是说,增量备份是,只要数据与上次备份有修改或增加或删除就备份,差异备份是上一次全备份到这次备份之间产生变化就备份

【Linux】Mysql的数据库备份及恢复

优劣势对比

【Linux】Mysql的数据库备份及恢复

MySQL 中进行不同方式的备份还要考虑存储引擎是否支持,如 MyISAM 不支持热 备,支持温备和冷备。而 InnoDB 支持热备、温备和冷备。

一般情况下,我们需要备份的数据分为以下几种:

  • 表数据
  • 二进制日志、InnoDB
  • 事务日志
  • 代码(存储过程、存储函数、触发器、事件调度器)
  • 服务器配置文件

建议的恢复策略:
完全+增量+二进制日志
完全+差异+二进制日志

下面是几种常用的备份工具:

  • mysqldump:逻辑备份工具,适用于所有的存储引擎,支持温备、完全备份、部分备份、对于 InnoDB 存储引擎支持热备。
  • cp、tar 等归档复制工具:物理备份工具,适用于所有的存储引擎、冷备、完全备份、部分备份。
  • lvm2 snapshot:借助文件系统管理工具进行备份。
  • mysqlhotcopy:名不副实的一个工具,仅支持 MyISAM 存储引擎。
  • xtrabackup:一款由 percona 提供的非常强大的 InnoDB/XtraDB 热备工具,支持完全备份、增量备份。

三、冷备份的备份及恢复

1、先看通用查询日志看是否开启

SHOW VARIABLES LIKE '%general%';

【Linux】Mysql的数据库备份及恢复

显示OFF没有开启;

2、开启通用查询日志

 SET GLOBAL general_log=1;

【Linux】Mysql的数据库备份及恢复

【Linux】Mysql的数据库备份及恢复

3、mkdir /backup/ #创建备份目录

4、#打包数据库文件。/var/lib/mysql为数据库文件存放目录

 tar -zcvf /backup/mysql_all$(date +%F-%m-%S).tar.zip *

【Linux】Mysql的数据库备份及恢复

 5、查看是否压缩成功

【Linux】Mysql的数据库备份及恢复

 6、开启mysql服务,去删掉指定的数据库

查看数据库;

【Linux】Mysql的数据库备份及恢复

删除Class_Linux数据库

 【Linux】Mysql的数据库备份及恢复

 查看是否删除成功

7、停掉mysql服务,将之前打包的数据库文件压缩包解压到/var/lib/mysql

【Linux】Mysql的数据库备份及恢复

 可以看到被删除的数据库恢复了

【Linux】Mysql的数据库备份及恢复

 8、开启mysql服务,查看Class_Linux数据库是否恢复成功

【Linux】Mysql的数据库备份及恢复

 【Linux】Mysql的数据库备份及恢复

恢复成功


四、Mysql命令行备份(热备份的逻辑备份)

1、导出特定表的结构 mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql 

 mysqldump -uroot -p --databases Class_Linux > /backup/Class_Linux.sql

【Linux】Mysql的数据库备份及恢复

 2、查看导出的文件

【Linux】Mysql的数据库备份及恢复

【Linux】Mysql的数据库备份及恢复

 3、登录mysql,删除数据库

查看数据库

【Linux】Mysql的数据库备份及恢复

 删除Class_Linux数据库

【Linux】Mysql的数据库备份及恢复

 查看是否删除成功;

【Linux】Mysql的数据库备份及恢复

 4、导入方法一:通过命令行恢复,(登陆的时候进行导入)

mysql -uroot -p < /backup/Class_Linux.sql

【Linux】Mysql的数据库备份及恢复

 5、查看mysql,数据是否恢复成功

【Linux】Mysql的数据库备份及恢复


导入方法二:( 在mysql终端下执行)

【Linux】Mysql的数据库备份及恢复

 在mysql终端下执行:

source /backup/Class_Linux.sql

【Linux】Mysql的数据库备份及恢复

【Linux】Mysql的数据库备份及恢复


五、通过二进制日志恢复

① 先将Class_Linux库进行逻辑备份 

 mysqldump -uroot -pNebula@123 -B Class_Linux > /backup/Class_0417.sql

【Linux】Mysql的数据库备份及恢复

 ② 查看原先的二进制日志

【Linux】Mysql的数据库备份及恢复

③ 使用reset master命令将二进制日志重置;

【Linux】Mysql的数据库备份及恢复

④ 查看二进制日志

【Linux】Mysql的数据库备份及恢复

 ⑤ 切到Class_Linux库,给students表进行表的增删改查操作

【Linux】Mysql的数据库备份及恢复

 这里我们插入一条数据:

【Linux】Mysql的数据库备份及恢复

  这时候查看状态,发现Position变了,这时因为进行数据库的修改,position的位置会改变

【Linux】Mysql的数据库备份及恢复

 在将刚刚插入的数据删除:

【Linux】Mysql的数据库备份及恢复⑥ 接下来通过二进制文件将数据恢复;

 【mysql的二进制文件在/var/lib/mysql目录下】

通过这个命令查看二进制日志详情:

 mysqlbinlog -v mysql-bin.000001

 在日志的最后可以看见我们刚刚的删除操作:

【Linux】Mysql的数据库备份及恢复


 方法一:按时间恢复

【开始时间可以忽略,因为默认就是日志最开始的时间】

mysqlbinlog -v mysql-bin.000001 --start-datetime='2023-04-17 12:11:12' --stop-datetime='2023-04-17 12:12:41' |mysql -uroot -p  

【Linux】Mysql的数据库备份及恢复

 再查看表发现数据恢复了;

【Linux】Mysql的数据库备份及恢复


方法二:按位置恢复

【开始位置可以忽略,因为默认就是日志最开始的位置】

#删除刚刚恢复的数据

【Linux】Mysql的数据库备份及恢复

#再查看二进制日志

【Linux】Mysql的数据库备份及恢复

注意】这个位置一定是删除这个操作的BEGIN的下面那一行

 mysqlbinlog -v mysql-bin.000001 --stop-position=1313 |mysql -uroot -p

【Linux】Mysql的数据库备份及恢复 再查看表发现数据恢复了;

【Linux】Mysql的数据库备份及恢复

 其实我们最开始插入数据,删除数据的时候该操作就已经被记录,第一次按时间恢复数据的操作就相当于又插入了一条数据,我们按位置恢复数据的时候先将刚刚恢复的数据删除,这个操作也有记录,所以二进制日志的内容就是插入>删除>按时间恢复时的插入>删除,所以我们在按位置恢复的时候,可以只写第一次删除数据的位置。文章来源地址https://www.toymoban.com/news/detail-409881.html

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

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

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

相关文章

  • 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)
  • MySQL-备份+日志:介质故障与数据库恢复

    本关任务: 备份数据库,然后再恢复它。 为了完成本关任务,你需要掌握: 1.MySQL的恢复机制; 2.MySQL提供的备份与恢复工具。 和大多数DBMS一样,MySQL利用备份、日志文件实现恢复。 具体理论知识在此不详细介绍。 MySQL提供了以下工具: 逻辑备份工具:mysqldump 物理备份工具

    2024年02月05日
    浏览(81)
  • MySQL基础(三十八)数据库备份与恢复

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

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

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

    2024年02月16日
    浏览(55)
  • mysql-DBA(1)-数据库备份恢复-导入导出-日志解释

    log: hdd data :ssd  ,备份和导出都慢,缓冲池有污染。 逻辑备份:把所有的命令转换成sql语句。 修改配置文件: -A 备份所有 -B 备份哪个数据库 --master-data=1 同步 内容: 备份参数: 1.备份成文件,里面就是sql语句 2.routine: 3.trigger 触发器 4.event: 定时任务 5.-B 数据库 1.有-B 表

    2024年03月09日
    浏览(65)
  • 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

领红包