在《MySQL 备份类型》一节曾提到过过冷备份,冷备份(即离线备份)是MySQL中最简单的备份方式,操作时仅需将数据库的物理文件完整复制至其他存储路径即可完成。
冷备份通过直接复制数据库的物理文件实现,操作简单且能保证备份完整性,恢复速度较快。但进行备份时必须停止MySQL服务器,这将导致服务中断、用户无法访问,因此通常仅适用于非核心或可容忍停机的业务场景。
冷备份的优点如下:
优点 | 缺点 |
---|---|
备份与恢复简便高效:仅需复制文件即可完成备份,恢复时也只需将文件放回指定位置,无需执行SQL或重建索引。 | 需停止服务:必须关闭数据库,导致服务中断,无法进行其他操作。 |
跨平台/版本兼容性好:备份文件易于在不同操作系统和MySQL版本间恢复。 | 占用空间大:InnoDB表空间包含undo段、插入缓冲等额外数据,备份文件较大。 |
安全可靠,维护成本低:物理备份不易出错,安全性高,运维需求简单。 | 扩展存储性能低:若备份至磁带等外部存储,速度较慢。 |
恢复速度快:无需逻辑转换,直接文件操作,恢复效率高。 | 跨平台限制:可能受操作系统、MySQL版本、文件名大小写、浮点数格式等影响。 |
MySQL数据库的物理文件主要包括数据文件、日志文件及配置文件等。除系统共有的日志和系统表数据文件外,各存储引擎在磁盘上的数据组织方式也存在差异,具体可参考《不同存储引擎的数据表在磁盘中的表示方式》一节。
接下来将为您演示如何进行冷备的备份与恢复操作:
1. 准备阶段:数据刷盘
FLUSH TABLES;
2. 停止MySQL服务
2.1 通用命令:
mysqladmin -u root -p shutdown
2.2 Linux系统:
systemctl stop mysqld
2.3windows系统:
net stop mysql
我的是Windows,win+x+a进入Power Shell,输入
net stop mysql80;
即可完成停止MySQL服务
3. 进行备份操作
拷贝整个数据文件夹到另一台备份服务器或本地其他磁盘上。
Linux系统:
远程备份:scp -r /var/lib/mysql/ user@backup-server:/backup-path/
本地备份:sudo cp -r /var/lib/mysql /path/to/backup/directory/
Windows系统:(先做本地备份,再将备份文件传输到远程)
本地备份:xcopy "C:\ProgramData\MySQL\MySQL Server 8.0\Data" "D:\MySQL_Backup\Data" /E /H /Y
( /E 复制所有子目录,包括空目录;/H 复制隐藏和系统文件;/Y 静默覆盖)
4. 恢复数据
4.1 用备份数据替换目标数据目录
4.2 重新启动MySQL服务:
Linux系统:
systemctl start mysqld
Windows系统:
net start mysq
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程