MYSQL 数据恢复

 环境信息

系统环境:Centos7.2

数据库:Mysql5.7

前置

开启 mysql binlog 日志功能 vim /etc/my.cnf 添加下面内容

[mysqld]
server_id=100
log-bin = /usr/local/mysql/binlog/mysql-bin.log

日志目录如下:

MYSQL 数据恢复_第1张图片

解决方案一

在binlog的目录中执行以下命令:

mysqlbinlog  --no-defaults  -d DB_name   --start-datetime='2018-09-11 8:54:40' 
--stop-datetime='2018-09-11 12:59:10'  mysql-bin.000032 >temp20180911.sql

说明:将起始时间点为"2018-09-11 8:54:40",结束时间点为“2018-09-11 12:59:10”,这段时间内的"mysql-bin-000032"的binlog日志导出到临时脚本文件"temp20180911.sql"中,用于在mysql数据库里面使用source temp20180911.sql 进行恢复。

也可以按照起始位置和结束位置来恢复(binlog_files自行替换):

mysqlbinlog binlog_files | more  

  恢复示例:

mysqlbinlog --stop-position="102" --start-position="367" mysql-bin.000001 | 
mysql -uroot -pxxx database_name
mysqlbinlog --start-datetime="2018-04-20 10:01:00" 
--stop-datetime="2005-04-21 10:01:00" mysql-bin.000001 | 
mysql -u root -pxxx   database_name

 

参数说明:

--database                             ##与"-d"作用相同,用于指定数据

-d                                     ##与“database”作用相同,用于指定数据库

--start-datetime                       ##起始时间点

--stop-datetime                        ##结束时间点

--start-position                       ##起始位置

--stop-position                        ##结束位置

然后进入mysql环境,执行脚本:

mysql -uadmin -p

source /usr/local/mysql/binlog/tmp20190910.sql

解决方案二

mysqlbinlog  --no-defaults  --start-datetime='2018-09-11 8:54:40' 
--stop-datetime='2018-09-11 12:59:10' /root/mysql-bin.000032   |       mysql -uroot -p

说明:将起始点与结束点之间的binlog日志,直接用于恢复(此种方法在非主从同步的机器上报错),建议采用方案一。
 

注意

reset 是重置日志的指令,要慎重使用。

mysql> reset master;
Query OK, 0 rows affected (0.01 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 |              |                  |
+------------------+----------+--------------+------------------+

 

你可能感兴趣的:(MYSQL)