数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!(Ⅰ)

《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!》

数据意外删除是数据库管理中常见的问题之一。MySQL作为广泛使用的数据库管理系统,当数据意外删除时,有几种方法可以尝试恢复数据。以下是一些常见的数据恢复方法和步骤:

1. 数据备份与恢复(脚本自动备份)

数据库定期备份是数据恢复的最有效手段之一。如果有可用的备份文件,可以通过以下步骤进行恢复:

  • 关闭MySQL服务器,以免写入新数据影响恢复。
  • 将备份文件还原到一个新的数据库或恢复到旧数据库。
  • 确保备份文件的完整性和准确性。

一般来说很多数据库客户端工具都会自带备份与恢复功能。不过引出的新问题就是自动备份,很多工具都没有自带自动备份功能。

以下是自动备份的方案:

MySQL自动备份可以通过使用mysqldump命令结合定时任务来实现。mysqldump是MySQL提供的用于备份数据库的命令行工具。以下是在Linux系统上使用cron定时任务进行MySQL自动备份的步骤:

  1. 创建备份脚本:
    创建一个备份脚本,例如 backup_script.sh,并将以下内容添加到脚本中:
bash 复制代码
#!/bin/bash

# MySQL连接参数
DB_USER="your_username"
DB_PASSWORD="your_password"
DB_NAME="your_database"

# 备份文件路径和名称
BACKUP_DIR="/path/to/backup/directory"
BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql"

# 使用mysqldump进行备份
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE

# 删除旧的备份文件,保留最近几次备份
find $BACKUP_DIR -name "backup_*.sql" -type f -mtime +7 -exec rm {} ;

请替换 your_usernameyour_passwordyour_database/path/to/backup/directory 为你的MySQL用户名、密码、数据库名和备份目录。

  1. 赋予脚本执行权限:
bash 复制代码
chmod +x backup_script.sh
  1. 设置定时任务:
    打开cron表达式编辑器,可以使用 crontab -e 命令来编辑用户的cron表达式。

    crontab -e

添加以下行以设置每天凌晨2点执行备份脚本的定时任务:

javascript 复制代码
0 2 * * * /path/to/backup_script.sh

保存并关闭编辑器。

这将使系统在每天凌晨2点执行备份脚本,创建一个以当前日期和时间命名的备份文件,并删除旧于7天的备份文件。

设置好定时任务后就会自动生成相应的sql文件,用于恢复数据库。

以下是cron表达式的说明:

Linux的cron表达式用于指定定时任务的执行时间。cron表达式的格式如下:

markdown 复制代码
* * * * * command_to_be_executed

这里的五个星号分别代表分钟、小时、日期、月份和星期,它们分别可以取值范围如下:

  • 分钟(0 - 59)
  • 小时(0 - 23)
  • 日期(1 - 31)
  • 月份(1 - 12)
  • 星期(0 - 6,其中0和6表示星期天)

* 表示匹配所有可能的值。以下是一些示例:

  • 每天凌晨2点:

    0 2 * * * command_to_be_executed

  • 每小时的第15分钟:

    15 * * * * command_to_be_executed

p.s.一般出现以下错误,一般是cron表达式格式有问题,调整好应该就可以了。

2. 数据备份与恢复(工具自动备份)

有些第三方工具专门用于MySQL数据恢复,可以帮助从损坏或意外删除的数据库中恢复数据。

  • 选择可靠的第三方工具,并遵循其文档中的指示来执行数据恢复操作。
  • 这些工具可能需要一定的专业知识和费用。

有许多第三方工具可以用于MySQL数据恢复,这些工具提供了比原生工具更多的功能和选项。以下是Navicat for MySQL的自动备份工具介绍:

  • 先创建好备份
  • 再选择自动运行
  • 然后设置任务计划

3、通过日志恢复

3.1、 使用Binlog进行恢复

MySQL的二进制日志(Binary Log)可以用于数据的恢复,特别是在数据库发生灾难性故障或误操作时。二进制日志记录了数据库中所有对数据的更改操作,包括插入、更新和删除。

详细步骤见另一篇文章

3.2、 事务日志(Transaction Logs)

MySQL的事务日志(Transaction Log)是InnoDB存储引擎的一部分,用于记录正在进行的事务的信息,包括事务的开始、提交和回滚。事务日志可以用于数据的恢复,尤其是在数据库发生故障或误操作时。

详细步骤见另一篇文章

相关推荐
web1309332039817 分钟前
RabbitMQ 篇-深入了解延迟消息、MQ 可靠性(生产者可靠性、MQ 可靠性、消费者可靠性)
数据库·分布式·rabbitmq
一二小选手33 分钟前
【Mybatis】动态SQL详解
数据库·sql·mybatis
江小北37 分钟前
Java基础面试题03:简述什么是迭代器(Iterator)?
java·后端·java ee
微扬嘴角43 分钟前
Redis(概念、IO模型、多路选择算法、安装和启停)
数据库·redis·缓存
.ccc.。1 小时前
mysql定位慢查询以及分析原因
数据库·mysql
Ares-Wang1 小时前
Asp.net core Autofac 案例 注入、AOP 启用接口代理拦截 启用 类代理拦截=== 只会拦截虚方法
后端·asp.net
半桶水专家1 小时前
MySQL遇到“ Access denied for user ”问题的解决办法
数据库·mysql·adb
Achou.Wang1 小时前
Redis中的消息订阅与发布
数据库·redis·缓存
2401_857026231 小时前
英语知识在线平台:Spring Boot框架实践
数据库·spring boot·后端