MySQL 小技巧:删库跑路如何恢复

实战案例:利用二进制日志,将数据库还原至最新状态

0) "前置条件" ( 开启二进制日志功能 )
## 并将二进制日志文件与数据库文件分开存放
1. 创建二进制日志文件的存放目录
mkdir /mysql/data/logbin -pv
chown -R mysql:mysql /mysql/data/logbin/

2. 定义二进制日志文件路径 ( 服务器选项: log-bin )
vim /etc/my.cnf
vim /etc/my.cnf.d/mysql-server.cnf      # MySQL 8.0
[mysqld]
log_bin                                 # 开启二进制日志功能 ( 必须 )
log-bin=/mysql/data/logbin/mysql-bin    # 定义二进制日志文件路径

3. 重启 mariadb 服务
setenforce 0         # 关闭 SELinux ( 重要 )
systemctl restart mariadb.service
# 如重启报错 ( 可以尝试查看日志 tail -f /var/log/mysql/mysqld.log )
# 将报错信息发送至 ChatGPT 为你提供解决思路

4. 验证
ll /mysql/data/logbin
cat /mysql/data/logbin/mysql-bin.index ( 该文件记录当前已有的二进制日志文件列表 )

5. 验证
select @@sql_log_bin;
select @@log_bin;
1) 基于 mysqldump 完全备份数据库
mysqldump -A --master-data=2 > /data/all.sql
mysqldump -A --master-data=2 | gzip > /data/all.sql.gz # 建议: 备份并压缩

2) 备份完成后, "继续操作数据库"
mysql hellodb;
insert teachers values(5,'xiaoming',20,'M');
insert teachers values(6,'xiaohong',18,'F');
select * from teachers;

// 瞅瞅二进制日志
ll /mysql/data/logbin

// 查看完全备份文件
vim /data/all.sql        // 该备份文件 ( 记录着当时二进制文件的备份位置 )

如图:该行记录着 mysqldump 命令运行时

二进制日志文件 binlog 的起始位置这有助于我们恢复近期的二进制日志数据

3) 直接"删库跑路"
systemctl stop mysqld
rm -rf /var/lib/mysql/*
4) 先导出有用处的二进制日志文件
# 查看二进制日志文件中记录的备份位置信息
cat /data/all.sql | grep '^-- CHANGE MASTER TO'

# 然后进入二进制日志文件存放目录
cd /mysql/data/logbin

# 从特定的二进制日志位置开始提取数据,并将结果保存到一个新的SQL文件中
# 将有用处的二进制日志信息都导入一个新的 sql 文件
# 也就是执行完完全备份命令后 ( 记录的二进制日志内容 )
mysqlbinlog --start-position=7667 mysql-bin.000002 > /data/binlog.sql

# 验证文件
vim /data/binlog.sql

5) 恢复数据库
systemctl start mysqld  # 启用数据库服务 ( 现在的数据库相当于是新安装的 )

set sql_log_bin=0;      # 先临时禁用二进制日志记录功能 ( 避免在恢复过程中产生更多的日志数据 )
source /data/all.sql    # 还原 mysqldump 数据库文件 ( 完全备份数据 )
source /data/binlog.sql # 还原 binlog 二进制日志数据
set sql_log_bin=1;      # 继续开启二进制日志功能

6) 验证数据库
use hellodb;
select * from teachers;

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Toasten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值