MySQL 下全量和增量备份与还原原理|学习笔记

简介: 快速学习 MySQL 下全量和增量备份与还原原理

开发者学堂课程【MySQL 实操课程:MySQL 下全量和增量备份与还原原理】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/717/detail/12825


MySQL 下全量和增量备份与还原原理

 

内容介绍

一、完全备份与备份方式

二、案例演示

 

一、完全备份与备份方式

1、完全备份

(1)完全备份最简单也最快速的方法是拷贝数据库文件夹 ,当然在拷贝时对MySQL 会有些要求一般在进行拷贝时是希望没有新数据的型的,这是他的一个要求,所以要进行使用表的操作。

(2)也可以使用 mysqldump 程序或 mysqlhotcopy 脚本对数据库进行 SQL 语句级别的备份, 与前面一种备份方式不同,前面的备份方式是备份实际存放的物理文件,而第二种相对于是一种导出的操作,就是将 MySQL 中的数据导出成sql脚本,然后再重新执行 sql 脚本,从而实现还原,是属于一种逻辑的备份,缺点就是它们速度要稍微慢些,因为不只是文件的复制,还要将应用 sql 本身的处理能力导出sql,不过通用性更强因为是基于 sql 语句,可以在不同的 MySQL 版本上执行,而且可以分析 sql 语句,更加清楚的理解 sql 语句,从而进行选择性的还原。

2、使用拷贝文件夹的方式备份

(1)因为My SQL 表保存为文件方式,所以理论上来说可以通过拷贝文件的方式对数据库进行备份。不过,使用直接备份方法时,必须要保证表在拷贝期间不被使用。如果不能满足这一条件,拷贝的文件就可能存在数据的不致性拷贝操作也就失败了。就是在进行拷贝时不能让 MySQL 数据库再进行写入数据,因为会导致备份拷贝出的文件与最终数据形成偏差,出现不一致的情况,所以在备份之前要将数据库进行锁表的操作,为可读不可写。

(2)最可靠的方法是在拷贝以前关闭 MySQL 服务拷贝完成后再重新启动服务。但有些应用会要求24小时不间断服务此时关闭服务器的方法就不很合适,不过MySQL 提供了表的锁定和解锁的相关操作以确保在拷贝文件期间该文件不会被修改。

 

二、案例演示

下面进行文件夹备份案例演示:

1、备份

首先连接到服务器:

[root@iZwz9bize6nk8hug8jOvywZ~]# ssh root@47.112.159.55

进入 MySQL:

[root@iZwz9bize6nk8hug8jOvywZ~]# /usr/ local/ mysq1/bin/mysql -uroot -p

Enter password:

在 aliyun 下面有测试表 school,打开 school 可以看到有三条事例:

mysql> select * from school;

|  id | name        |

|1001 | yizhong      |

|1002 | erzhong      |

|1003 | sanzhong      |

然后切换到 aliyun 数据库:

[root@iZwz9bize6nk8hug8jOvywZ mysql]# cd aliyun

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# ll

-rw-r----- 1 mysql mysql  8586 Aug 20  16:17  school.frm

-rw-r----- 1 mysql mysql 114688 Aug 20  22:53  school.ibd

可以看到 school.frmschool.ibd 文件,一个是表结构文件,一个是数据文件,这种文件属于 InnoDB create table school 文件的存储引擎,可以通过 mysql> show create table school; 进行查看。

在当前目录进行备份文件,先创建 school 文件夹,然后拷贝 school 文件到 school 文件夹:

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# mkdir school

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# cp -r school.* school/

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# cd school

[root@iZwz9bize6nk8hug8jOvywZ school]# ll

total 108

-rw-r----- 1 mysql mysql  8586 Aug 20  16:17  school.frm

-rw-r----- 1 mysql mysql 114688 Aug 20  22:53  school.ibd

说明拷贝成功。

2、还原

然后删除 school 的两条数据和切换到 aliyun 删除 school 的两个文件:

mysql> delete from school;

mysql> select * from school;

Empty set (0.00 sec)

[root@iZwz9bize6nk8hug8jOvywZ //]# cd /data/mysql/aliyun

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# rm -rf school.*

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# ll

此时看不到 school 的两个文件了,然后将这两个文件切换到上一级目录,拷贝到 /data/mysql/aliyun 目录:

[root@iZwz9bize6nk8hug8jOvywZ school]# cp -r * ./

[root@iZwz9bize6nk8hug8jOvywZ school]# cp -r * /data/mysql/aliyun

[root@iZwz9bize6nk8hug8jOvywZ school]# cd ..

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# ll

-rw-r----- 1 root root  8586 Aug 20  16:17  school.frm

-rw-r----- 1 root root  114688 Aug 20  22:53  school.ibd

此时进行查看可以发现两个文件又出现了,说明还原操作成功,但因为是通过 root进行操作的,所以所有者由 mysql 变为了 root,所以需要修改所以权:

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# chgrp -R mysql /data/mysql/ && chown -R mysql /data/mysql/

[root@iZwz9bize6nk8hug8jOvywZ aliyun]# ll

-rw-r----- 1 mysql mysql  8586 Aug 20  16:17  school.frm

-rw-r----- 1 mysql mysql 114688 Aug 20  22:53  school.ibd

此时所有权为 mysql,说明修改成功。再去查询 school 表中的记录会发现查不到:

mysql> select * from school;

Empty set (0.00 sec)

mysql> exit

因为这里涉及 mysql 的重启操作:

[root@iZwz9bize6nk8hug8jOvywZ~]# /usr/local/mysql/bin/mysqladmin shutdown -uroot -p

[root@iZwz9bize6nk8hug8jOvywZ~]# /usr/local/mysql/bin/mysqld_safe /etc/my.cnf&

[root@iZwz9bize6nk8hug8jOvywZ~]# sed: -e expression #1,char 10: unknown option to ‘s’

[root@iZwz9bize6nk8hug8jOvywZ~]# /usr/local/mysql/bin/mysql -uroot -p

然后再进行查询可以发现两条记录重新出现:

mysql> use aliyun

mysql> show tables;

mysql> select * from school;

|  id | name        |

|1001 | yizhong      |

|1002 | erzhong      |

|1003 | sanzhong      |

说明还原成功。所以可以通过这样的一种方式去还原操作,就是完成物理文件的备份,这里是手动的进行拷贝,也可以去做定时的备份,比如说通过 shell 脚本。这里讲解的是使用拷贝文件夹的方式进行备份还原,通过物理方式备份,后面的课程将讲解逻辑的备份。而在备份过程中,最好是关闭 MySQL 服务,但是在实际生产环境下不会这样做,所以可以选择业务不繁忙的情况下进行备份,前提是需要锁表

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
4月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
400 10
|
6月前
|
存储 关系型数据库 MySQL
【赵渝强老师】使用select...into outfile语句备份MySQL
本文介绍了MySQL中使用`SELECT...INTO OUTFILE`语句将表数据导出为文本文件的方法。通过示例演示了如何备份员工表(emp)的数据,包括创建存储目录、设置权限、配置参数`secure_file_priv`以及解决相关错误的过程。字段分隔符和行终止符可自定义,确保数据格式符合需求。最后展示了备份文件的内容,验证操作成功。
468 36
|
5月前
|
SQL 关系型数据库 MySQL
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
MySQL group by 底层原理详解。group by 执行 慢 原因深度分析。(图解+秒懂+史上最全)
|
6月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mysqldump备份MySQL
本文介绍了 MySQL 自带的逻辑备份工具 mysqldump 的使用方法。通过 mysqldump,可以将数据库中的数据转换为对应的 SQL 插入语句,便于备份和还原。文章详细说明了如何备份所有数据库、指定数据库及特定表,排除某些表不备份的操作,以及删除数据库后如何通过备份文件恢复数据。同时提供了视频讲解和具体命令示例,帮助用户更好地理解和应用该工具。
368 5
|
6月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mydumper备份MySQL
本文介绍了使用mydumper工具进行MySQL数据库备份与恢复的操作方法。相比单线程工作的mysqldump,mydumper支持多线程,速度提升可达10倍。其功能包括事务性表快照、快速压缩、导出binlog等,并提供详细的参数说明和操作步骤。文章通过实例演示了安装mydumper、创建存储目录、全库备份、指定数据库及表备份、删除数据库以及使用myloader恢复数据的完整流程,并附带视频讲解,帮助用户更好地理解和应用该工具。
362 0
|
8月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
399 28
|
8月前
|
存储 关系型数据库 MySQL
利用Cron表达式实现MySQL数据库的定时备份
以上就是如何使用Cron表达式和mysqldump命令实现MySQL数据库的定时备份。这种方法的优点是简单易用,而且可以根据需要定制备份的时间和频率。但是,它也有一些限制,例如,它不能备份MySQL服务器的配置文件和用户账户信息,也不能实现增量备份。如果需要更复杂的备份策略,可能需要使用专门的备份工具或服务。
219 15
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
165 3
|
3月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

推荐镜像

更多