位置: 编程技术 - 正文

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

  • 如何在天猫平台抢茅台
  • 个人天猫怎么开网店
  • 暂估入库后怎么冲回
  • 租赁收入缴纳个人所得税
  • 工会经费与残保金的取数是一致吗
  • 分公司法人必须是总公司法人吗
  • 所有增值税发票都有抵扣联吗
  • 租金和押金的税率
  • 如何理解出口退税政策
  • 村集体经济组织法
  • 2021年洗车是不是免增值税
  • 停工损失会计科目
  • 进项转出滞纳金规定
  • 安装工程开发票
  • 案例分析关于团员青年的思想困惑疏导和成长问题释疑
  • 管理费用属于什么现金流量项目
  • 成本费用率偏低
  • 外帐如何暂估应付账款
  • 城镇土地使用税的计税依据
  • 净利润和毛利润的计算公式
  • 年度终了,会计部门都要将旧账编造清册
  • win7纯净版系统
  • linux虚拟机怎么输入中文
  • macbook截图快捷键没反应
  • win10安装版u盘安装
  • 其他应收款超过一年是12个月吗?
  • 科研项目财政拨款多少
  • 税收变动作用
  • thinkphp项目怎么运行
  • chat的用法及短语
  • php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
  • thinkphpgui
  • linux mput命令
  • 企业利润分配的账务处理
  • 营改增后工程分包财务
  • 厂房出租一年多少钱
  • 银行存款调节表调整后的银行存款余额
  • 编制科目余额表的方法
  • 报账单大写金额负数填写方式
  • 代收电费增值税品目
  • 偷税行为如何处理
  • 小企业会计准则和一般企业会计准则的区别
  • 农业种植补贴需要审批吗
  • 普通发票可以抵扣吗
  • 发票什么情况下可以作废
  • 建筑行业有哪些生意可以做
  • 进项大于销项会退税吗
  • 单位购买金税盘账务处理
  • 加油账务处理
  • 生产费用总分类核算的程序包括
  • sql基础问题
  • win7系统怎么运行xp系统的软件
  • Windows 9 Storage Sense储存功能更多图像
  • centos6.5mini安装教程
  • 自动启动win10
  • win7 计划任务服务启动失败
  • centos 空闲磁盘合并
  • unix命令大全
  • windows xp隐藏文件夹
  • xp系统桌面图标大小怎么调整
  • w10 xbox
  • win7断电后无法正常启动
  • 系统升级后c盘空间小了
  • centos打包文件
  • linux ftp创建文件夹命令
  • android:Background线程池和UiThread线程池
  • javascript 操作css
  • jquery的实现原理
  • nodejs怎么下载其他版本
  • node.js读取文件的三种方式
  • shell脚本实战
  • jquery选择器实例
  • 基于jquery的移动端ui框架
  • jquery显示当前时间
  • jquery使用css方法添加图片边框视频教学
  • android view类
  • jquery中validate
  • 扣税1.5万
  • 增值电信发票
  • 公司税务认证
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设