MySQL备份与恢复

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: MySQL备份与恢复

1. 图解

2. 数据库备份

一、备份分类

备份分类1 – 按照备份数据文件的格式

物理备份

逻辑备份

基于数据库复制的备份

备份分类2 – 按照备份的完整度

完全备份

不完全备份

备份分类3 – 按照MySQL服务器的状态

热备

温备

冷备

二、备份分类1 – 按照备份数据文件的格式

1、物理备份

生成数据库文件的完整副本(二进制),可以使用标准命令,如 cp、tar、xcopy、windows图形复制粘贴

备份可以在不同的计算机体系结构间还原。例如:linux的mysql还原给windows的mysql

比逻辑备份和还原的速度快

数据库文件在物理备份期间不能有更改,因为要保证数据的一致性

对于默认引擎为innodb的数据库需要停止MySQL服务后再进行物理备份(冷备)

2、逻辑备份

将数据库和表转换为一个文本文件,里面包括可以重构数据库和表的SQL语句

可以使用该文本文件在运行不同体系结构的其他主机上重新装入数据库

要求 MySQL 服务器在备份期间运行 (不能冷备)

可以备份本地和远程 MySQL 数据库服务器

通常比物理备份(二进制)的速度慢

逻辑备份文件的大小可能会超过所备份的数据库物理文件大小

3、基于数据库复制的备份

创建一个主库的复制库从库,主库作为生产库,从库作为备份库

主库定期向从库传递binlog文件,并在从库应用保证从库和主库的一致性

从库也可以做物理备份或逻辑备份

缺点:

成本较高,因为必须有另一台服务器和存储设备用于从库

从库相对于主库会有延迟

二、备份分类2 – 按照备份的完整度

完全备份

备份所有数据库文件:/var/lib/mysql/*

备份所有binlog文件:  /var/lib/mysql/mysql-bin.*

备份选项文件: /etc/my.cnf

不完全备份

仅仅备份部分数据库的文件

三、备份分类3 – 按照MySQL服务器的状态

1、热备

数据库不关闭,在仍然有用户读取或修改数据的过程中进行备份

热备不阻止用户正常的数据库操作,有些热备工具甚至能捕获备份进行期间发生的更改

并不是所有引擎都支持热备,innodb引擎可以支持热备,但MyISAM引擎不能热备,可以温备和冷备

2、温备

数据库不关闭,处于只读模式,备份可以在用户读取数据时进行

温备优点是不必完全锁定数据库访问用户,其不足之处在于用户无法在进行备份时修改数据库的数据

3、冷备

关闭数据库,备份在用户不能访问数据时进行,因此用户无法读取或修改数据

冷备会阻止执行任何使用数据的活动,如果备份时间较长,会造成用户较长的时间里无法访问数据

3. 常用备份工具

一、cp、tar或 复制粘贴

属于操作系统自带的物理备份工具

用于冷备或温备数据库 (可以温备MyISAM引擎,对于innodb引擎必须关闭数据库)

示例:

mysql数据库文件位置:/var/lib/mysql

关闭数据库服务:systemctl stop mysqld

备份整个数据库目录到/backup:cp -a /var/lib/mysql /backup

注:cp 的 -a 选项代表复制目录同时保留复制对象的属主、属组和权限,这样还原备份时,不用修改文件或目录的属性

还原备份时:

mv /var/lib/mysql /var/lib/mysql.old  #先把原来的数据目录改名

cp -a /backups/mysql /var/lib

二、mysqldump

属于mysql提供的逻辑备份工具

将数据库的内容转储到文本文件

可以指定所有数据库、特定数据库或特定表

可以备份本地或远程数据库

和存储引擎无关

适合数据量较小的数据库数据导出

不能关闭数据库,因此备份策略和时机可以灵活掌握

基本用法

备份当前数据库的test数据库到db_test.sql文件

root# mysqldump –uroot –p --opt test > db_test.sql

三、Xtrabackup

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。

Xtrabackup有两个主要的工具:xtrabackup、innobackupex

(1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表

(2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁

目前 Xtrabackup 活跃的大版本有三个:

Xtrabackup 2.4 适用于 MySQL 5.6 和 MySQL 5.7。

Xtrabackup 8.0 适用于 MySQL 8.0。

Xtrabackup 8.1 适用于 MySQL 8.1。

注意,三个版本不能混用,因为 MySQL 8.0 版本 redo log 和数据字典格式都发生了变化,可能会出现不兼容的情况。

4. 数据库恢复

1、恢复数据库需要运用binlog日志

数据库各个时间点的变更已经按照时间顺序记录到了binlog日志中

恢复的过程主要是应用(重做)binlog日志中记录的变更

在应用binlog日志的过程中,数据库中的数据逐渐从一个时间点的变化到较新的时间点

2、恢复分类

完全恢复

从还原时的状态恢复到最后一个日志的最后一条语句

不完全恢复

从还原时的状态恢复到指定日志的某个位置

3、成功恢复的条件

要有备份 (非常重要,没有备份意味着存在数据的永久丢失的风险!)

日志完整 (没有日志意味着数据库只能回到备份时间点的状态)

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
28
分享
相关文章
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
285 4
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
73 28
利用Cron表达式实现MySQL数据库的定时备份
以上就是如何使用Cron表达式和mysqldump命令实现MySQL数据库的定时备份。这种方法的优点是简单易用,而且可以根据需要定制备份的时间和频率。但是,它也有一些限制,例如,它不能备份MySQL服务器的配置文件和用户账户信息,也不能实现增量备份。如果需要更复杂的备份策略,可能需要使用专门的备份工具或服务。
32 15
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
399 3
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
216 3
MySQL用户备份
【10月更文挑战第2天】MySQL用户备份
156 3
MySQL如何备份?
【10月更文挑战第2天】MySQL如何备份?
451 3

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等