数据备份与恢复
MySQL
数据备份与恢复
数据备份重要性
-
备份的主要目的是灾难恢复。
-
在生产环境中,数据的安全性至关重要。
-
任何数据的丢失都可能产生严重的后果。
-
造成数据丢失的原因:
- 程序错误
- 人为操作错误
- 运算错误
- 磁盘故障
- 灾难(如火灾、地震)和盗窃
数据库备份分类和备份策略
数据库备份的分类
物理备份
物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。
物理备份方法:
- 冷备份(脱机备份) :是在关闭数据库的时候进行的
- 热备份(联机备份) :数据库处于运行状态,依赖于数据库的日志文件
- 温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作
逻辑备份
逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份。
即以sql语句的形式,把库、表结构、表数据保存下来。
数据库的备份策略
- 完全备份(全量备份):每次对数据库进行完整的备份。
- 差异备份:备份自从上次完全备份之后被修改过的文件。
- 增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份。
常见的备份方法
物理冷备: (完全备份)
- 备份时数据库处于关闭状态,直接打包数据库文件
- 备份速度快,恢复时也是最简单的
专用备份工具mydump或mysqlhotcopy (完全备份,逻辑备份)
- mysqldump常用的逻辑备份工具 (导出为sql脚本)
- mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表
启用二进制日志进行增量备份 (增量备份)
进行增量备份,需要刷新二进制日志
第三方工具备份
- 免费的MySQL热备份软件Percona XtraBackup
(阿里云的工具:dts,支持热迁移)
完全备份
物理冷备份与恢复
- 关闭MySQL数据库
- 使用tar命令直接打包数据库文件夹
- 直接替换现有MySQL目录即可
操作
rpm -q xz
#使用xz工具进行压缩,检查xz工具是否已安装
yum install xz -y
#如果没安装,可以先yum安装
systemctl stop mysqld
#关闭服务
mkdir /backup/
#创建备份目录
tar Jcvf /backup/mysql_all_$(date +%F).tar.xz <数据库文件存放目录>
#打包数据库文件。
#源码编译安装/usr/local/mysql/data
#yum安装/var/lib/mysql/
cd /backup/
#切换到备份目录
ls
#查看目录内容
tar tf mysql_all_2022-06-05.tar.xz
#查看tar包内的文件
恢复
tar Jxvf /backup/mysql_all_2024-11-22.tar.xz
#解压备份的数据库文件。
mv /backup/usr/local/mysql/data/ <数据库文件存放目录>
mysqldump备份与恢复
mysqldump -u root -p密码 --databases 库1 [库2 ....] > XXX.sql
#备份一个或多个指定的库及库中所有的表
mysqldump -u root -p密码 --all-databases > XXX.sql
#备份所有库
mysqldump -u root -p密码 库名 > XXX.sql
#只备份指定库中的所有表(不包含库对象本身)
mysqldump -u root -p密码 库名 表1 [表2 ....] > XXX.sql
#只备份指定库中的一个或多个指定的表(不包含库对象本身)
完全恢复
#PALY1
先登录数据库,再执行 source sql文件路径 (如果sql文件里只备份了表,需要先 use 切换库再执行 source)
#PLAY2
mysql -u root -p密码 < sql文件路径 cat sql文件路径 | mysql -u root -p密码 #恢复库
mysql -u root -p密码 库名 < sql文件路径 cat sql文件路径 | mysql -u root -p密码 库名 #恢复表
增量备份
原文地址:https://blog.csdn.net/JIUYINGQAQ/article/details/139842314
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!