位置: 编程技术 - 正文

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的设置)

  • 企业消费税会计处理案例
  • 增值税抵扣怎么取消
  • 计入税金及附加的科目
  • 委托开发票的证明怎么写
  • 商贸公司营业执照范围
  • 定期定额的个税起征点
  • 广告公司如何经营管理
  • 租金属于什么会计要素
  • 房地产开发企业土地增值税清算
  • 购入固定资产如何摊销
  • 预付货款核销如何做会计摘要呢?
  • 写字楼注册公司对面积有要求吗
  • 营改增后混合销售的规定
  • 职工的保险费在哪里查
  • 股权转让以前年度怎么算
  • 核算错误和重分类错误
  • 房地产开发企业什么意思
  • 一次性发放奖金个税怎么计算
  • 海关对现金携带数量有要求吗
  • 中期支付内容包括
  • 稽查补缴增值税怎样做账
  • 有哪些方法可以判断乳剂的类型
  • 增值税发票过期未抵扣怎么办
  • 如何恢复回收站永久删除的文件
  • 水利基金返还分录怎么写
  • 自产自销的茶叶要交增值税吗
  • php数组函数题目
  • php密码加密和解密
  • 工人工资怎么算
  • 暂估成本会计分录
  • wordpress 中文版和国际版区别
  • php语言设计模式之单例模式
  • 往来账怎么处理
  • 财政资金借款给企业
  • thinkphp验证码刷新
  • 中科院院士2023增选
  • 负债大于资产能贷款吗
  • 申请高新技术企业收入要多少
  • 涌泉的准确位置图 图解
  • ps怎么弄树
  • 库存商品是什么会计要素
  • 帝国cms视频教程
  • ibm_db_dbi
  • 应计入损益的利得有什么
  • 税控盘百科
  • mysql左连接和右连接语法
  • 金税四期对企业的影响与应对
  • 外购无形资产的增值税计入成本吗
  • 低值易耗品的账务处理图片
  • 城建税减半从什么时候开始
  • 预收租金发票怎么开
  • 公司主要产品
  • 工会经费可以在以后年度扣除吗
  • 疫情期间免征什么税
  • 新开企业去银行开户需要什么
  • MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别
  • 硬盘安装在机箱内,属于主机的组成部分
  • mac复制文件路径后怎么粘贴
  • win7删除windows.old
  • win8系统升级
  • windows7开机启动
  • centos6.5配置ssh
  • windows8如何关闭杀毒软件
  • windows8.1更新windows10
  • 在centos7中,一般用( )命令来查看网络接口的状态
  • linux 截屏
  • win10 cpu使用率高怎么办
  • 批处理 >nul
  • cocos2dx drawcall优化
  • opengl基础知识噪声名词解释
  • Node.js中的事件循环是什么
  • python django事务transaction源码分析详解
  • javascrpt绑定事件之匿名函数无法解除绑定问题
  • unity3d颜色
  • 进项发票认证了怎么冲红
  • 申请电子发票需要去税务局吗
  • 宁波镇海哪里可以赶海
  • 电子税务局怎么添加开票员
  • 韩国税务怎么算收入
  • 办税服务厅是税收工作的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设