当前位置:首页 > 技术分析 > 正文内容

mariadb数据库备份与恢复-数据一条都不能少

ruisui883个月前 (03-31)技术分析39

数据库备份与恢复是数据安全的最后一道防线。其必要性不仅在于防御风险,更是持续服务和数据资产保值的核心保障。数据面临的威胁:

  • 硬件故障:硬盘损坏、服务器宕机等物理问题可能导致数据无法访问。
  • 软件缺陷:数据库软件或应用系统的漏洞可能破坏数据完整性。
  • 人为误操作:误删表(如 DROP TABLE)、错误更新(如 UPDATE 不加条件)等操作难以回滚。

一、备份方法

1. 逻辑备份(mysqldump)

适用场景:中小型数据库、需跨版本迁移、恢复单个表。
步骤

# 备份单个数据库
mysqldump -u 用户名 -p 数据库名 > backup.sql

# 备份所有数据库(含系统库)
mysqldump -u 用户名 -p --all-databases > full_backup.sql

# 仅备份表结构(不含数据)
mysqldump -u 用户名 -p --no-data 数据库名 > schema.sql

# 压缩备份文件
mysqldump -u 用户名 -p 数据库名 | gzip > backup.sql.gz

参数说明
--single-transaction:InnoDB 表使用事务保证备份一致性(适合在线备份)。
--routines:包含存储过程和函数。
--events:包含事件调度器任务。


2. 物理备份(文件系统快照)

适用场景:大型数据库、快速备份恢复。
工具mariabackup(MariaDB 官方工具,支持热备份)。
步骤

# 安装 mariabackup
sudo apt-get install mariadb-backup

# 全量备份
sudo mariabackup --backup --target-dir=/path/to/backup --user=用户名 --password=密码

# 准备备份(使数据一致)
sudo mariabackup --prepare --target-dir=/path/to/backup

3. 增量备份

适用场景:减少全量备份频率,节省存储空间。
步骤

# 首次全量备份
mariabackup --backup --target-dir=/backup/full

# 增量备份(基于全量备份)
mariabackup --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full

# 合并增量备份到全量
mariabackup --prepare --apply-log-only --target-dir=/backup/full
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/inc1

二、恢复方法

1. 从逻辑备份恢复

# 恢复单个数据库
mysql -u 用户名 -p 数据库名 < backup.sql

# 恢复所有数据库
mysql -u 用户名 -p < full_backup.sql

# 解压后恢复
gunzip < backup.sql.gz | mysql -u 用户名 -p 数据库名

2. 从物理备份恢复

使用 mariabackup 恢复。

# 恢复备份
sudo systemctl stop mariadb
sudo rm -rf /var/lib/mysql/*
sudo mariabackup --copy-back --target-dir=/path/to/backup
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb

3. 时间点恢复(Point-in-Time Recovery)

适用场景:恢复误删数据到指定时间点(需启用二进制日志)。
步骤

# 1. 恢复最近的全量备份
mysql -u root -p < full_backup.sql

# 2. 重放二进制日志到误操作前
mysqlbinlog --start-datetime="2024-05-29 00:00:00" --stop-datetime="2024-05-29 14:30:00" /var/lib/mysql/mariadb-bin.000001 | mysql -u root -p

三、自动化备份

1. 定时任务(Cron)

# 编辑 cron 任务
crontab -e

# 每天凌晨2点全量备份
0 2 * * * /usr/bin/mysqldump -u 用户名 -p密码 数据库名 > /backup/daily_backup.sql

# 每周日凌晨2点压缩备份
0 2 * * 7 gzip /backup/daily_backup.sql

2. 备份验证

# 检查备份文件完整性
grep "Dump completed" backup.sql

# 模拟恢复测试(可选)
mysql -u root -p test_db < backup.sql

四、注意事项

  • 备份存储
  • 异地保存至少3份备份(本地、云存储、离线介质)。
  • 加密敏感备份文件(如使用 openssl enc)。
  • 一致性
  • 备份期间避免执行 ALTER TABLE 等DDL操作。InnoDB 表使用 --single-transaction 参数。
  • 监控
  • 定期检查备份日志和文件大小。使用监控工具(如 Nagios)报警备份失败。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3205.html

标签: 数据库导出
分享给朋友:

“mariadb数据库备份与恢复-数据一条都不能少” 的相关文章

vue项目-父页面数据变化使子页面更新的几种情况

当操作页面时候,特别是增删改操作之后,数据会有所改变,这个时候我们希望组件中的数据要和最新数据一致,就需要重新更新渲染。以下是针对几种不同情况下方式:一.子页面调用接口后重新渲染1.使用ref方式父组件中用ref=“xxx” 来声明子组件,然后通过在父组件值改变的地方来调用子组件中的方法this.$...

30 个纯 HTML5 实现的游戏

浏览器和 JavaScript 的功能逐年不断的变强变大。曾几何时,任何类型的游戏都需要Flash。但随着 HTML5 发展,HTML5 + WebGL 游戏式就慢慢占领着这个舞台。以下是30款流行的游戏,它们可以在所有现代浏览器中运行,并且只使用web技术构建。1. HexGL地址:http://...

HTML5+眼球追踪?黑科技颠覆传统手机体验

今天,iH5工具推出一个新的神秘功能——眼动追踪,可以通过摄像头捕捉观众眼球活动!为了给大家具体演示该功能的使用,我做了一个案例,供大家参考。实际效果如下:案例比较简单,就是通过眼动功能获取视觉焦点位置,剔除用户看中的牌。现在,舞台的属性中多了一个“启用眼动”的选项,另外,还多了一个“启用摄像头”的...

vue开发微信小程序 - 登录组件

移动端登录功能抽象为通用组件,满足:不同移动端应用中一键登录功能复用支持多种登录:微信登录、H5、QQ登录登录组件使用//引用登录组件 import login from "../components/user/login.vue" export default { compone...

慕课 SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

本课程以业务驱动技术栈,打造业务相对完整的掌上医疗小程序,解决大家没有好的毕设项目或者求职项目的困境。本课程案例采用前后端分离架构,业务功能完善(既有WEB管理端,也有移动用户端),界面美观,无需艰涩的技术也能做出亮眼的作品。SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序 |...

三勾知识付费(PHP+vue3)微信小程序平台+SAAS+前后端源码

项目介绍三勾小程序商城基于thinkphp8+element-plus+uniapp打造的面向开发的小程序商城,方便二次开发或直接使用,可发布到多端,包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。软件架构后端:thinkphp8 管理端...