mysql-bin 恢复数据库

                 能看到这里的同学估计肯定摊上大事了吧!不要慌,一定要冷静,记录一下作者的大事件吧,黑客通过SQL注入的方式执行了一段SQL :

DROP DATABASE ******

后果就是导致整个数据库被删了,当时心是拔凉拔凉的,想过最近执行的各种命令都没发现做了删库这个操作,直到看到了下面这句话 :

大概的意思就是说,需要在24小时内转0.1个BTC到那个地址才能拿到数据,我们就算重来也不会惯着这种无底线的人,一般没有网络安全或运维的都是小公司,小公司很艰难的,遇到这种无疑是雪上加霜。

要想使用 mysql-bin 恢复数据库首先我们得在数据库配置里面 my.cnf 加上:

[mysqld]
log-bin=mysql-bin
server-id=1

然后在我们数据库表文件中,目录/var/lib/mysql下面会出现很多这种文件:

这是SQL的二进制文件,我们需要把它转换成  .SQL文件,不管是服务器还是本地,我们需要确认已经安装了mysqlbinlog 这个工具。然后使用命令将文件转换成我们的SQL。

mysqlbinlog /path/to/mysql-bin.000001 > /path/to/output.sql

如果是本地转换的话需要再mysql的安装目录里面的bin目录里面打开命令窗口,然后调整到SQL二进制文件地址和转换的SQL文件存储地址即可转换。

转换以后可以直接执行我们的SQL文件进行恢复,我们这里主要讲解恢复在服务器上面:
将mysql里面的my.cnf文件修改成如下配置,主要是快速恢复数据:

[mysqld]
# 调整缓冲区大小以提高性能
innodb_buffer_pool_size=2G
innodb_log_file_size=1G
innodb_flush_log_at_trx_commit=2
innodb_io_capacity=2000
innodb_io_capacity_max=4000
innodb_flush_method=O_DIRECT
innodb_write_io_threads=16
innodb_read_io_threads=16

# 关闭查询缓存
query_cache_size=0
query_cache_type=0

# 增加排序缓冲区大小
sort_buffer_size=64M

如果是docker的话需要进入到mysql容器里面执行下面命令即可恢复,请一定按照顺序执行01-02-03-04...................

mysql -u root -p < /var/lib/mysql/000001.sql;

 然后数据数据库密码即可执行SQL恢复我们的数据库和表了。

由于我的二进制文件是在本地转换的SQL文件,所以我使用了下面命令将SQL文件快速上传到了服务器的对应目录,快速上传文件用下面命令,然后输入服务器密码即可

scp 000009.sql root@8.152.122.149:/data/mysql/data

服务器备份命令,把mysql 里面的数据备份到mysql2里面去:

cp -a /data/mysql /data/mysql2

这里提醒一下:如果SQL文件很大很多,我们在每恢复一个SQL文件时记得备份mysql里面的data文件夹(表和数据),一般黑客留下的删除表命令也会在SQL文件里面,所以如果我们不小心执行到了那个SQL文件以后我们还可以恢复data,然后将SQL文件修改以后重新执行。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值