MySQL8.0二进制恢复案例

二进制文件恢复先决:
先决1.0:查看系统变量log_bin,如果其值为OFF,表示没有开启二进制日志(binary log)。
mysql> show variables like '%log_bin%';#查看是否开启二进制
mysql> show variables like '%server_id%';#查看server_id
没有开启的话下面跟我一起来做。(你们也可以跳过这一步,)
先决2.0:开启二进制日志,修改my.cnf,在[mysqld]下面增加
[root@yulong01 ~]# vim /etc/my.cnf
[mysqld]
log-bin=/data/mysql/binlogs/server1(这个目录需要777权限,server1文件)
server_id = 100
先决3.0
[root@yulong01 ~]# systemctl restart mysqld
先决4.0(非常tm的重要)
如果想要可以更改的日志文件:
则必须修改statement类型为ROW:
mysql> set global binlog_format = 'ROW';
退出数据库,重新启动服务!

样例恢复案件

1.创建test_db01数据库,并且创建t1表:
1.1
mysql> create database test_db01;
Query OK, 1 row affected (0.11 sec)
1.2
mysql> use test_db01;
Database changed
1.3
mysql> create table if not exists t1 ( id int unsigned auto_increment primary key, name varchar(20) ) engine=InnoDB; 
Query OK, 0 rows affected (0.16 sec)
1.4
mysql> show tables;
+---------------------+
| Tables_in_test_db01 |
+---------------------+
| t1                  |
+---------------------+
1 row in set (0.00 sec)
1.5
mysql> insert ignore into t1 (name) values ('tom'), ('scot)t'), ('jerry'), ('rose'), ('john');
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0
1.6
mysql> insert ignore into t1 (name) values ('tom'), ('scot)t'), ('jerry'), ('rose'), ('john');
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0
1.7
mysql> select * from t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | tom   |
|  2 | scott |
|  3 | jerry |
|  4 | rose  |
|  5 | john  |
+----+-------+
5 rows in set (0.00 sec)
2.删除数据
2.1
mysql> delete from t1;
Query OK, 5 rows affected (0.01 sec)
2.2
mysql> commit;#当你写完一条sql语句后,点击执行,看到数据变化,或者修改,但是在数据中这些数据是没有变化的,如果你要修改数据库中的数据,必须在sql语句会面加一条语句commit。
Query OK, 0 rows affected (0.00 sec)
2.3
mysql> select * from t1;
Empty#空的 set (0.00 sec)
3.利用日志恢复,将日志生成文本文件进行分析
3.1
mysql> show binary logs;                                          
+----------------+-----------+-----------+
| Log_name       | File_size | Encrypted |
+----------------+-----------+-----------+
| server1.000001 |      1538 | No        |
+----------------+-----------+-----------+
1 row in set (0.00 sec)
3.2
[root@yulong01 ~]# mysqlbinlog /data/mysql/binlogs/server1.000001 >/home/mysql/log1.txt
3.3
[root@yulong01 /]# cat /home/mysql/log1.txt 
咳咳,找到删除的时间临界点,抽取出不包含删除数据的日志,重新做,即可恢复,让我们一起来找到那个Delete 语句。
4.抽取出不包含删除数据的日志,重新做,即可恢复
[root@yulong01 ~]# mysqlbinlog /data/mysql/binlogs/server1.000002 --stop-position=936 | mysql -u root -pCom.123!

若有疑问,请添加QQ(2594676962),博主常在线

发布了3 篇原创文章 · 获赞 2 · 访问量 87

猜你喜欢

转载自blog.csdn.net/weixin_43740875/article/details/104627878