MySQL备份与恢复

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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、成功恢复的条件

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

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 关系型数据库 MySQL
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
57 4
|
4月前
|
存储 SQL 关系型数据库
|
19天前
|
安全 关系型数据库 MySQL
MySQL用户备份
【10月更文挑战第2天】MySQL用户备份
39 3
|
19天前
|
存储 关系型数据库 MySQL
MySQL如何备份?
【10月更文挑战第2天】MySQL如何备份?
34 3
|
2月前
|
SQL 关系型数据库 MySQL
在Linux中,如何备份和恢复MySQL数据库?
在Linux中,如何备份和恢复MySQL数据库?
|
2月前
|
SQL 数据可视化 关系型数据库
MySQL 备份可视化巡检系统
MySQL 备份可视化巡检系统
|
2月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
2月前
|
安全 关系型数据库 MySQL
揭秘MySQL海量数据迁移终极秘籍:从逻辑备份到物理复制,解锁大数据迁移的高效与安全之道
【8月更文挑战第2天】MySQL数据量很大的数据库迁移最优方案
519 17
|
2月前
|
关系型数据库 MySQL Shell
分享一篇mysql数据库备份脚本
分享一篇mysql数据库备份脚本
28 0
|
2月前
|
关系型数据库 MySQL Shell
MySQL 备份:从mysqldump全备中 匹配出某几个表
MySQL 备份:从mysqldump全备中 匹配出某几个表