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文件修改以后重新执行。

如果这篇文章在你一筹莫展的时候帮助到了你,可以请作者吃个棒棒糖🙂,如果有啥疑问或者需要完善的地方欢迎大家在下面留言或者私信作者优化改进。

MySQL的二进制日志(binary log),通常以文件名"mysql-bin.00001"开始,记录了数据库的所有更改操作(如数据修改、表结构变化等)。这些日志对于数据的备份和恢复至关重要,尤其是在主从复制和数据恢复场景中。 如果需要使用mysql-bin.00001等二进制日志文件进行恢复,通常要按照以下步骤操作: 1. 停止MySQL服务以防止数据进一步变化。 2. 备份当前的数据库文件,以防恢复过程中出现问题。 3. 使用mysqlbinlog工具读取二进制日志文件,并将其内容转换为可读的SQL语句。这一步骤可以通过以下命令实现: ``` mysqlbinlog mysql-bin.00001 > mysql-bin.00001.sql ``` 这会将日志文件中的事件转换为SQL语句,并保存到一个文件中。 4. 使用MySQL客户端工具执行上一步生成的SQL文件,将数据恢复到特定状态: ``` mysql -u username -p < mysql-bin.00001.sql ``` 在执行这个命令之前,需要输入正确的数据库用户名和密码。 5. 在数据恢复完成后,检查数据的完整性和一致性。 6. 重启MySQL服务,以使更改生效。 注意:在使用二进制日志进行恢复时,需要特别注意二进制日志中的时间点,以确保数据恢复到期望的状态。如果二进制日志文件中包含的是增量数据,可能需要执行多个日志文件来完成恢复。 在执行恢复操作之前,建议详细了解mysqlbinlog工具的使用方法和选项,以及数据库的备份和恢复策略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值