位置: 编程技术 - 正文

MySQL数据库遭到攻击篡改(使用备份和binlog进行数据恢复)(mysql数据损坏修复方法)

编辑:rootadmin

推荐整理分享MySQL数据库遭到攻击篡改(使用备份和binlog进行数据恢复)(mysql数据损坏修复方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql数据库被删了怎么办,mysql数据库被攻击方式,mysql数据库遇到的故障及分析,mysql数据库被删了怎么办,mysql数据库遇到的故障及分析,mysql数据库崩了怎么恢复,mysql数据库崩了怎么恢复,mysql数据库崩了怎么恢复,内容如对您有帮助,希望把文章链接给更多的朋友!

本文主要描述了MySQL遭到攻击篡改数据,利用从库的备份和主库的binlog进行不完全恢复。

欢迎转载,请注明作者、出处。作者:张正QQ:如有疑问,欢迎联系。

一、发现问题今天是--,开发大清早就说昨晚数据库遭到了攻击。数据库中某文章表的文章内容字段遭到篡改,全部改成了同一篇文章。

通过查看日制 发现 数据是在 -- :: 遭到篡改。所有的内容全部被改成了如下:

二、解决方法

这个库我们是每天凌晨备份,保留天的备份。主库的binlog保留时间为7天。因此很容易想到的方法是将从库--凌晨的备份拿出来恢复,然后通过主库的binlog通过时间段来筛选出凌晨至-- ::的所有更改,之后的数据,经业务确认,可以舍弃掉。或者后面再通过其他方法慢慢将这部分数据找出来。但是当务之急,是立马恢复数据库。

三、找备份及时间点

在备份的从库上检查备份:crontab -l#0 3 * * * /data/opdir/mysqlbak/backup_mysqldump.sh >> /data/opdir/mysqlbak//mysql-bakup.log 2>&1发现备份任务让注释了

查看备份文件:[root@localhost ]# lltotal drwxr-xr-x 2 root root Aug : drwxr-xr-x 2 root root Aug : drwxr-xr-x 2 root root Aug : drwxr-xr-x 2 root root Aug : drwxr-xr-x 2 root root Aug : drwxr-xr-x 2 root root Aug : drwxr-xr-x 2 root root Aug : drwxr-xr-x 2 root root Sep 1 : drwxr-xr-x 2 root root Sep 2 : drwxr-xr-x 2 root root Sep 3 : drwxr-xr-x 2 root root Sep 4 : drwxr-xr-x 2 root root Sep 5 : drwxr-xr-x 2 root root Sep 6 : drwxr-xr-x 2 root root Sep 7 : drwxr-xr-x 2 root root Sep 8 : drwxr-xr-x 2 root root Sep 9 : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : drwxr-xr-x 2 root root Sep : -rw-r--r-- 1 root root Sep : mysql-bakup.log

备份只到日,下午:分。

备份日志最后一段截取: tail -n 5 mysql-bakup.log

deleting backup of days ago -- -- :: begin backup ... deleted OK-- :: end backup ...

因为这些表是在从库备份的,而且表都是MyiSAM的表。查看备份脚本,是先stop slave之后,才开始备份,因此从备份脚本输出的日志中找到备份开始的时间是:-- ::通过:drwxr-xr-x 2 root root Sep : 可看到结束时间是:-- ::

现在考虑到底是以备份开始的时间:-- :: 为start-datetime还是以-- :: 为start-datetime。前面 提到备份脚本是从库进行备份的,是在-- ::开始的,在这个时刻备份开始,执行了stop slave;因此整个备份的状态反映的是从库-- :: 这个时间的状态。而且通过监控可以看到在这个时间点,从库的延迟为0,因此可以认为这个备份就是 主库在这个时间的备份。NOTES:(有人可能会因为从库上有binlog,从库也会接受主库的binlog之类的机制而造成混淆。这里要结合我们具体的备份方式和恢复方式来看,以选出正确的时间点。)

MySQL数据库遭到攻击篡改(使用备份和binlog进行数据恢复)(mysql数据损坏修复方法)

前面提到通过日志查到遭到篡改的时间为:-- ::,因此可以将-- ::作为stop-datetime

因此binlog命令应该是这样:mysqlbinlog --database=[db_name] --start-datetime='-- ::' --stop-datetime='-- ::' [binlog_name] > binlog_namex.sql

四、具体的恢复操作

清楚了这些,具体的操作就简单了:

1.从备份机拷贝备份:scp <备份机IP>:/data/mysqlbak//.db_name.gz <恢复测试机IP>:/data/opdir/

2.恢复测试机 解压:gunzip .db_name.gz

3.恢复测试机导入(测试恢复库中之前没有db_name这个库):mysql -uroot -pxxxxxx -S /tmp/mysql.sock < .db_name

4.将主库的binlog拷贝到恢复测试机:查看主库binlog-rw-rw---- 1 mysql mysql Sep : mysql-bin.-rw-rw---- 1 mysql mysql Sep : mysql-bin.-rw-rw---- 1 mysql mysql Sep : mysql-bin.-rw-rw---- 1 mysql mysql Sep : mysql-bin.-rw-rw---- 1 mysql mysql Sep : mysql-bin.-rw-rw---- 1 mysql mysql Sep : mysql-bin.

我们需要的binlog时间段为:-- :: 至 -- ::因此只需要:-rw-rw---- 1 mysql mysql Sep : mysql-bin.-rw-rw---- 1 mysql mysql Sep : mysql-bin.-rw-rw---- 1 mysql mysql Sep : mysql-bin.将这3个binlog copy过去:scp mysql-bin. <恢复测试机IP>:/data/opdir/scp mysql-bin. <恢复测试机IP>:/data/opdir/scp mysql-bin. <恢复测试机IP>:/data/opdir/

5.使用mysqlbinlog 生成sql脚本:mysqlbinlog --database=[db_name] --start-datetime='-- ::' --stop-datetime='-- ::' mysql-bin. > .sqlmysqlbinlog --database=[db_name] --start-datetime='-- ::' --stop-datetime='-- ::' mysql-bin. > .sqlmysqlbinlog --database=[db_name] --start-datetime='-- ::' --stop-datetime='-- ::' mysql-bin. > sql

6.binlog生成的sql脚本导入:待.db_name导入到恢复测试库之后,将mysqlbinlog生成的sql脚本导入到数据库中:mysql -uroot -pxxxxxx -S /tmp/mysql.sock db_name < .sqlmysql -uroot -pxxxxxx -S /tmp/mysql.sock db_name < .sqlmysql -uroot -pxxxxxx -S /tmp/mysql.sock db_name < .sql

7.导入完成后检查数据正确性:大致看一下数据的情况,然后可以通过时间字段来看一下情况:mysql> select max(createtime),max(updatetime) from table_name;+-----------------+-----------------+| max(createtime) | max(updatetime) |+-----------------+-----------------+| | |+-----------------+-----------------+1 row in set (0. sec)

时间差不多为 晚上:了这个判断,作为DBA,查看部分数据,只能起到辅助作用,具体的需要 到底是否OK,需要业务开发的人来判断。经过业务开发确认后,即可将该数据导出后,再导入到线上主库中。

8、将该库导出,并压缩:mysqldump -uroot -pxxxxxx -S /tmp/mysql.sock -q db_name table_name > table_name.sql 压缩:gzip table_name.sqlscp 到主库 (复制的时候,请将网络因素考虑进去,确认不会占用过多带宽而影响其他线上业务)

9.恢复测试的数据导入到线上主库中:线上主库操作:操作之前,最好让开发把应用业务那段先暂停,否则可能会影响导入。比如这个表示MyISAM的,应用那边如果不听有update进来,就会阻塞数据导入。a、主库将原始被篡改的表改名:(不要上来就drop,先rename,后续确认没问题了再考虑drop,因为很多问题不是一瞬间就能全部反映上来的)rename table_name to old_table_name;b、解压:gunzip table_name.sql.gzc、导入新表数据:mysql -uroot -pxxxxxx -S /tmp/mysql.sock db_name < table_name.sql

后面就需要开发来进一步验证数据是否 OK 了。 验证没问题后,再启动应用程序。

IPv6设置后如何解决MySQL无法连接localhost的问题 使用phpmyadmin或者navicat链接数据库时提示【客户端软件无法连接localhost】经检查发现是IPV6地址监听了端口,而客户端软件不支持IPV6。新开的系统或者

mysql 加了 skip-name-resolve不能链接数据库问题的解决方法 mysql加了skip-name-resolve不能链接的问题,要确认MySql是否采用过主机名的授权在MySqlServer的配置文件My.ini中,增加如下两行:[mysqld]skip-name-resolve它将禁止My

MYSQL日志的正确删除方法详解 本文详细讲述了MYSQL日志的正确删除方法。分享给大家供大家参考,具体如下:1.查找:MySQLshowbinarylogs;+—————-+———?+|Log_name|File_size|+—————

标签: mysql数据损坏修复方法

本文链接地址:https://www.jiuchutong.com/biancheng/321316.html 转载请保留说明!

上一篇:percona 实用工具之pt-kill使用介绍(persona工具)

下一篇:IPv6设置后如何解决MySQL无法连接localhost的问题(ipv6的设置)

  • 金税盘版开票软件怎么升级
  • 进货开了发票也写了购销合同要交印花税吗?
  • 税务系统纳税申报
  • 一次性年金怎么计算
  • 居民转供电收费标准
  • 个人收到利息要交增值税吗为什么
  • 税控设备抵减增值税政策
  • 票面3个点的增值税发票是交几个点的税金
  • 主营业务成本可以暂估吗
  • 总公司向子公司收取管理费如何纳税
  • 银行电子回单号码什么意思
  • 筹备期会计分录
  • 营改增后房地产企业增值税税收筹划存在问题
  • 中央空调可一次开多少度
  • 加计扣除申报表填报说明
  • 鉴证咨询公司成本是什么
  • 含税销售额的计算公式是什么意思
  • 固定资产折旧从入账时间算还是购入时间算
  • 广告租赁公司
  • mac系统的桌面
  • system占用cpu过高怎么解决
  • php输出姓名
  • php写的代码怎么运行
  • 其他业务成本的意思
  • 预支员工报销费用会计科目
  • 牛顿地名
  • 用php生成一个txt文件
  • 软件研发支出计入什么科目
  • 安装tensorflow1
  • 应收账款管理费会计分录
  • node更新到最新版本
  • ubuntu搭建web服务器流程
  • 成品油发票如何下载库存
  • 个税少扣了怎么账平掉
  • 企业都有哪些资质
  • 农业种植公司有补贴吗
  • 怎么能开公司
  • 发票升位需要什么资料
  • python天气数据的爬取与分析
  • 业务预算包括直销费用吗
  • 小规模纳税人购进农产品可以抵扣进项税吗
  • 个人所得税两处或两处以上工资、薪金所得纳税申报表
  • 工会经费的计提基数不包括
  • win2008安装sql2008教程
  • 专用发票与普通发票的区别有
  • 结转和结算
  • 将购进的材料用于自制生产用设备
  • 资产负债表的作用体现在哪些方面
  • 上月做了未开票收入,这月开了票怎么报税
  • 管理费用处理的是
  • 公司开业两年后辞职
  • 个人支付宝开票一年可以开多少
  • 一般纳税人弱电包工包料怎么开票
  • 培训奖励怎么写
  • 解释sql server实例
  • mysql查看查询耗时
  • 在数据库master中拒绝了create table权限
  • vpengine.exe进程
  • rpm格式如何安装
  • 如何让xp系统崩溃
  • windows10 2021预览版
  • win8旗舰版官方下载
  • 系统右键菜单
  • perl中\s+
  • cocos2d android 游戏开发学习——CCAction(二)
  • nodejs解析路径
  • 置顶在线
  • unity learn premium
  • 用python做开发
  • windows and android
  • shell 读取
  • javascript中的splice
  • javascript框架的作用
  • jquery设置图片路径
  • jquery实战
  • 房产的原值以什么为准
  • 农民专业合作社法
  • 北京税务局待遇有住宿吗
  • 九江税务总局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设