数据库被删除了,如何恢复

记录一下今天下午的谜之操作,不小心把数据库给删除掉了,而且没有备份,差点真是删库跑路了。(一切源于一言难尽),我的案例是在宝塔环境下面执行的,所以仅供参考。

第一步:登录数据库,查看是否开启了binlog日志

[root@iZwz9cir5blv91u0r6eyboZ ~]# mysql -u root -p
Enter password: ****
mysql> SHOW VARIABLES LIKE 'LOG_BIN%';
+---------------------------------+----------------------------------+
| Variable_name                   | Value                            |
+---------------------------------+----------------------------------+
| log_bin                         | ON                               |
| log_bin_basename                | /www/server/data/mysql-bin       |
| log_bin_index                   | /www/server/data/mysql-bin.index |
| log_bin_trust_function_creators | OFF                              |
| log_bin_use_v1_row_events       | OFF                              |
+---------------------------------+----------------------------------+
5 rows in set (0.00 sec)

mysql> show master logs; # 查看日志文件
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000007 |   5476353 |
| mysql-bin.000008 |       167 |
| mysql-bin.000009 |       143 |
| mysql-bin.000010 |       143 |
| mysql-bin.000011 |  45125413 |
+------------------+-----------+
5 rows in set (0.00 sec)


mysql> show master status; # 查看最后更新日志文件 一般都是用于恢复
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000011 | 45164856 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

 log_bin为on 就是开启状态,off 就是关闭状态。(宝塔默认是开启的)

如果你的数据库开处于关闭状态建议你马上开启。

# 找到你的mysql 配置文件 添加下面三行
log_bin=ON
log_bin_basename=/var/lib/mysql/mysql-bin   # 日志存储地址
log_bin_index=/var/lib/mysql/mysql-bin.index  # 日志索引存储地址

# 重启mysql服务

三个参数来指定,

第一个参数是打开binlog日志 on

第二个参数:binlog日志存储地方以及命名

第三个参数:binlog文件的索引文件

还有一种简单的配置 就是把 log-bin=mysql-bin

#在数据库配置文件中添加,log-bin = 数据库命令执行目录的bin中
log-bin=mysql-bin # /var/lib/mysql/mysql-bin

第二步:利用使用 mysqlbinlog工具 提取 binlog 内容

 由于binlog日志是二进制的,所以是无法查看的,需要借助 mysqlbinlog工具进行提取操作。

# 进入到
cd  /www/server/data/

[root@iZwz9cir5blv91u0r6eyboZ data]# ll
total 649792
-rw-rw---- 1 mysql mysql   5476353 Apr 29 16:04 mysql-bin.000007
-rw-rw---- 1 mysql mysql       167 Apr 29 16:06 mysql-bin.000008
-rw-rw---- 1 mysql mysql       143 Apr 29 16:09 mysql-bin.000009
-rw-rw---- 1 mysql mysql       143 Apr 29 16:26 mysql-bin.000010
-rw-rw---- 1 mysql mysql  45111211 Sep 24 16:16 mysql-bin.000011
-rw-rw---- 1 mysql mysql        95 Apr 29 16:27 mysql-bin.index


以 mysql-bin 命名的就是 binlog文件了。

# 查看 mysqlbinlog 工具所在的位置
[root@iZwz9cir5blv91u0r6eyboZ log]# find / -name mysqlbinlog
/www/server/mysql/bin/mysqlbinlog

# 查看日志文件
[root@iZwz9cir5blv91u0r6eyboZ log]/www/server/mysql/bin/mysqlbinlog
/www/server/data/mysql-bin.000007

# 执行提取文件命令
# 语法 mysqlbinlog  -v --base64-output=decode-rows  
--start-datetime='开始时间' 
--stop-datetime = '结束时间' 
-d '数据库名称' 日志文件 > 写入的sql文件


/www/server/mysql/bin/mysqlbinlog -v --base64-output=decode-rows
 --start-datetime='2021-08-03 11:00:00'
--stop-datetime='2021-09-24 16:50:00'
-d 'card' /www/server/data/mysql-bin.000011 > /home/log/data_3.sql



# 参数说明
方式一、按照时间提取(一般都是按照这个方式筛选)
--start-datetime 指定开始日期
--stop-datetime  指定结束时间

方式二、按照文件的行数提取

--start-position(指定开始位置,恢复到此位置之后的数据,包括此位置)

--stop-position(指定结束位置,恢复此位置之前的数据,不包括此位置)

-d 指定库

-v --base64-output=decode-rows
# 看得到dml语句具体做了什么操作(例如:insert时具体插入了什么数据)
# 看不到dml语句的完整sql语句(例如:insert into t1(id) values(1);)
# 看不到dml语句的"伪"sql语句 无所谓的

-vv --base64-output=decode-rows
# 看得到dml语句具体做了什么操作(例如:insert时具体插入了什么数据)
# 看得到dml语句的完整sql语句(例如:insert into t1(id) values(1);),但是被注释掉了的;
# 看不到dml语句的"伪"sql语句 无所谓的这个

# 导出文件以后,下载sql文件,然后打开

打开文件后的样子

 本质就是一个sql文件,一些create 操作。搜索一下  drop database 关键字,把有关删除操作的sql 语句全部去掉, 直接下来在本地导入运行sql文件 测试。

可以使用source 命令进行导入操作

source C:/Users/Administrator/Desktop/card_3.sql;

也可以使用PHPstorm 打开sql文件,右键运行。(建议这个操作)

 运行完成以后,你打开数据库,本地启动项目检测一下数据是否完全恢复了。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是安装xtrabackup工具、备份数据以及模拟数据库删除恢复数据的步骤: 1. 安装xtrabackup工具 首先需要安装xtrabackup工具,可以按照如下步骤进行安装: ``` sudo apt-get update sudo apt-get install -y lsb-release sudo apt-get install -y curl sudo apt-get install -y gnupg2 sudo curl -L https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.21/binary/debian/$(lsb_release -sc)/amd64/percona-xtrabackup-24_2.4.21-1.$(lsb_release -sc)_amd64.deb -o percona-xtrabackup-24.deb sudo dpkg -i percona-xtrabackup-24.deb sudo apt-get update sudo apt-get install -y percona-xtrabackup-24 ``` 2. 备份数据 使用xtrabackup工具备份数据库,可以按照如下步骤进行备份: ``` sudo service mysql stop sudo xtrabackup --backup --user=<username> --password=<password> --target-dir=/backup/mysql sudo service mysql start ``` 其中,`<username>` 和 `<password>` 是MySQL数据库的用户名和密码,`/backup/mysql` 是备份数据存储的目录。 3. 模拟数据库删除 为了模拟数据库删除的情况,可以按照如下步骤进行操作: ``` sudo service mysql stop sudo rm -rf /var/lib/mysql/* sudo service mysql start ``` 这个操作将会删除MySQL数据库中所有的数据。 4. 恢复数据 使用xtrabackup工具恢复备份的数据,可以按照如下步骤进行操作: ``` sudo service mysql stop sudo rm -rf /var/lib/mysql/* sudo xtrabackup --copy-back --target-dir=/backup/mysql sudo chown -R mysql:mysql /var/lib/mysql sudo service mysql start ``` 其中,`/backup/mysql` 是备份数据存储的目录,`/var/lib/mysql` 是MySQL数据库的数据目录。这个操作将会将备份数据恢复到MySQL数据库中。 以上就是安装xtrabackup工具、备份数据以及模拟数据库删除恢复数据的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值