位置: 编程技术 - 正文

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%征收率)怎么算
  • 股息率超过10%的公司
  • 环评费用计入管理费用吗 是否需要摊销
  • 坏账准备需要做账吗
  • 合作建房分配的房屋
  • 甲供材料如何纳税
  • 子网掩码和默认网关怎么填
  • php提高性能
  • php的pdo是什么
  • 清除cmos数据按钮一直亮
  • win10资源管理器在哪里找
  • 附有退货权商品是什么
  • 去年未计提费用,今年付怎么做账
  • 房屋装修各项费用比例
  • 软件能否成为无线网
  • macOS 11 Big Sur 开发者预览版 Beta 8推送
  • 采购周转材料会计分录怎么写
  • 冰岛北部内陆景观有哪些
  • 退款会退货吗
  • 浦东森林村
  • 房地产预缴所得税计算公式
  • 建筑工程价款结算
  • 视同销售实物出资是否开专票吗
  • 企业直接费
  • 固定资产一次性折旧账务处理
  • 进出口额等于进口额加出口额吗
  • python sockets
  • 织梦如何添加浮动广告
  • 盈余公积转增实收资本会计科目
  • 增值税纳税申报实训报告
  • 已计提完的固定资产怎么做账
  • 总公司和子公司可以是一个法人吗
  • 收到加油
  • 年初未分配利润借方增加还是减少
  • 缴纳残保金会计分录怎么做
  • 个人所得税利息股息红利所得适用比例税率
  • 关于外币折算会计处理的表述中
  • 营业外收入在汇算清缴里填哪张表
  • 坏账收回所得税需要确认收入吗汇算清缴表如何填报
  • 篮球俱乐部归什么部门管理
  • 预付账款怎么转
  • 法人代表可以兼任出纳吗
  • 出口的样品如何销售
  • 商业企业会计制度变迁论文
  • centos编译安装tcpdump工具
  • linux临时目录在哪
  • boot from
  • ntdll.dll no matching
  • Windowsxp桌面没有图标怎么办
  • win8怎么外接屏幕
  • .exe是什么软件
  • linux系统基本操作命令
  • win7系统出现COMSurrogate
  • 投影变换的使用方法
  • 深入linux内核架构与底层原理 pdf
  • jni静态注册和动态注册
  • shell 计算表达式
  • jQuery Ajax传值到Servlet出现乱码问题的解决方法
  • shell脚本语句
  • jqueryui easyui
  • 税务局服务大厅办办退税要身份证复印件吗
  • 北京市国家税务局官网手机app
  • 个人税务登记证怎么注销
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设