前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >msyql truncate 恢复数据

msyql truncate 恢复数据

作者头像
用针戳左手中指指头
发布2022-09-07 14:20:04
9200
发布2022-09-07 14:20:04
举报
文章被收录于专栏:学习计划

一次意外让我有幸了解了binlog,我无意间将某个库的数据都清空了,当时差点没喘过气来,然后经过一晚上的抢救,把这个经验留下。

  1. 先找的MySQL数据存放目录 如果是docker启动的,那么可以可以通过docker inspect 找的,或者是docker-compose 如果不是dockers部署的,可以通过:ps -ef | grep mysql ,找到启动进程
  2. 找到log目录下: 文件是这种格式的:mysql-bin.0000xx ll -t 按时间倒序拍一下,取最上面的一个日志文件,比如:mysql-bin.000020
  3. 找到日志文件后,需要分离要恢复的数据
  4. 1 确定时间,或是数据库,或是表
  5. 2 如果是删除的数据,那么需要把之前的日志也拿下来,把之前的数据都恢复,
  6. 指定数据库恢复成sql 比如数据库:data-analysis 那么命令:
代码语言:javascript
复制
# 方法一:指定数据库从日志导出sql
  mysqlbinlog -u pico -p --database=data-analysis  -vv /data/mysql/log/mysql-bin.000020  >/row-data-analysis.sql
# 方法二:指定数据库,和结束时间,从日志导出sql,如果不记得时间,可以先全部导出,再把出错的sql删除
  mysqlbinlog -u pico -p --database=data-analysis --stop-datetime "2022-06-06 17:16:03"  -vv /data/mysql/log/mysql-bin.000020  >/row-data-analysis.sql
# 方法三:指定数据库,和结束位置,从日志导出sql;这个位置,在日志里可以找到,position可以再日志文件里找到,日志已经一般比较大,所有用方法一最好
  mysqlbinlog -u pico -p --database=data-analysis --stop-position 67840048  -vv /data/mysql/log/mysql-bin.000020  >/row-data-analysis.sql
# 在mysql 5.7 后增加了--rewrite-db 的参数,可以替换数据库名,
  mysqlbinlog -u pico -p --database=data-analysis-2 --rewirite-db "data-analysis->data-analysis-2"  -vv /data/mysql/log/mysql-bin.000020  >/row-data-analysis.sql

参数及命令说明: 详细的看这位博主的,很详细:https://blog.csdn.net/line_on_database/article/details/115487650

代码语言:javascript
复制
-d, --database=name      仅显示指定数据库的转储内容。
-o, --offset=#           跳过前N行的日志条目。
-r, --result-file=name   将输入的文本格式的文件转储到指定的文件。
-s, --short-form         使用简单格式。
--set-charset=name       在转储文件的开头增加'SET NAMES character_set'语句。
--start-datetime=name    转储日志的起始时间。
--stop-datetime=name     转储日志的截止时间。
-j, --start-position=#   转储日志的起始位置。
--stop-position=#        转储日志的截止位置。
--vv                      重建为带注释的语句
  1. 将sql导入

这里不建议使用源库,可以重新弄一个数据库,比如替换生成的sql文件里的数据库名称,或是重新弄一个msyql(这里如果是使用–rewrite-db重写了数据库名,可以直接导入源库,但还是细心的查看下) 导入后检查下数据是否恢复,确认数据无误后导出,再导入生产库: mysql -u root -p < row-data-analysis.sql

注意,主键的问题,自增的话,需要将主键重置以下,我这里是uuid写入的,并不会出现主键的问题

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档