随笔 - 745, 文章 - 1, 评论 - 180, 阅读 - 155万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

2020年8月3日

简介

Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基于GTID的二进制文件还原数据

传统二进制日志还原数据

1.修改配置文件

[root@localhost ~]# vi /etc/my.cnf
server-id=1
log-bin=binlog

#重启数据库服务
[root@localhost ~]# systemctl restart mysqld

2.操作数据库

mysql> create database mydb charset utf8mb4;
mysql> use mydb;
mysql> create table test(id int)engine=innodb charset=utf8mb4;
mysql> insert into test values(1);
mysql> insert into test values(2);
mysql> insert into test values(3);
mysql> insert into test values(4);
mysql> commit;
mysql> update test set id=10 where id=4;
mysql> commit;
mysql> select * from test;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|   10 |
+------+
4 rows in set (0.00 sec)
mysql> drop database mydb;

3.查看二进制日志信息

mysql> show master status\G;
*************************** 1. row ***************************
             File: binlog.000001
         Position: 1960
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

#查找创库和删库的点,为2191868
mysql> show binlog events in 'binlog.000001';
+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
| Log_name      | Pos  | Event_type     | Server_id | End_log_pos | Info                                                               |
+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
| binlog.000001 |  219 | Query          |         1 |         329 | create database mydb charset utf8mb4                               |
| binlog.000001 | 1868 | Query          |         1 |        1960 | drop database mydb                                                 |
+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+

4.另存为二进制日志信息

[root@localhost ~]# mysqlbinlog --start-position=219 --stop-position=1868 /var/lib/mysql/binlog.000001 > /tmp/binlog.sql

5.恢复数据

#临时关闭二进制日志记录以免重复记录
mysql> set sql_log_bin=0;
#恢复数据
mysql> source /tmp/binlog.sql
#重启二进制日志记录
mysql> set sql_log_bin=1;

6.查看数据恢复情况

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use mydb;
Database changed
mysql> select * from test;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|   10 |
+------+
4 rows in set (0.00 sec)、

基于GTID二进制日志还原数据

1.修改配置文件

[root@localhost ~]# vi /etc/my.cnf
server-id=1
log-bin=binlog
gtid_mode=ON
enforce_gtid_consistency=true
log_slave_updates=1

#重启数据库服务
[root@localhost ~]# systemctl restart mysqld

2.操作数据库

mysql> create database mydb1;
mysql> use mydb1;
Database changed
mysql> create table t1(id int)engine=innodb charset=utf8mb4;
mysql> insert into t1 values(1);
mysql> insert into t1 values(2);
mysql> insert into t1 values(3);
mysql> insert into t1 values(11);
mysql> insert into t1 values(12);
mysql> commit;
mysql> select * from t1;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|   11 |
|   12 |
+------+
5 rows in set (0.00 sec)
mysql> drop database mydb1;

3.查看二进制日志信息

mysql> show master status\G;
*************************** 1. row ***************************
             File: binlog.000003
         Position: 1944
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 51d3db57-bf69-11ea-976c-000c2911a022:1-8
1 row in set (0.00 sec)

mysql> show binlog events in 'binlog.000003';
+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+
| Log_name      | Pos  | Event_type     | Server_id | End_log_pos | Info                                                              |
+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+
| binlog.000003 |  154 | Gtid           |         1 |         219 | SET @@SESSION.GTID_NEXT= '51d3db57-bf69-11ea-976c-000c2911a022:1' |
| binlog.000003 |  219 | Query          |         1 |         316 | create database mydb1                                             |
| binlog.000003 | 1784 | Gtid           |         1 |        1849 | SET @@SESSION.GTID_NEXT= '51d3db57-bf69-11ea-976c-000c2911a022:8' |
| binlog.000003 | 1849 | Query          |         1 |        1944 | drop database mydb1                                               |
+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+

4.另存为二进制日志信息

#8号事务记录为删除数据库,因此只需恢复1-7号事务记录即可
[root@localhost ~]# mysqlbinlog --skip-gtids --include-gtids='51d3db57-bf69-11ea-976c-000c2911a022:1-7' /var/lib/mysql/binlog.000003 >  /tmp/gtid.sql

参数说明:
--include-gtids:包含事务
--exclude-gtids:排除事务
--skip-gtids:跳过事务

5.恢复数据

mysql> set sql_log_bin=0;
mysql> source /tmp/gtid.sql
mysql> set sql_log_bin=1;

6.查看数据恢复情况

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mydb1              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

mysql> use mydb1;
Database changed
mysql> select * from t1;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|   11 |
|   12 |
+------+
5 rows in set (0.00 sec)

posted @ 2020-08-03 23:25 moss_tan_jun 阅读(551) 评论(0) 推荐(0) 编辑

摘要: nload工具 nload用于实时查看网卡流量,默认系统都没有安装,首先安装方式如下: $ yum install -y epel-release$ yum install -y nload 使用也非常简单,如下: $ nloadDevice eth0 [192.168.0.110] (4/5): 阅读全文

posted @ 2020-08-03 23:13 moss_tan_jun 阅读(790) 评论(0) 推荐(0) 编辑

摘要: Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。 linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别检查介绍下。 一、误删除文件进程还在的情况。 这种一般是有活动的进程存在持续标准输入或输出,到时 阅读全文

posted @ 2020-08-03 23:05 moss_tan_jun 阅读(518) 评论(0) 推荐(0) 编辑

2020年6月9日

摘要: 常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Linux 下有一个更好用的网络联通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是 mtr。mtr 全称 my traceroute,是一个把 ping 和 阅读全文

posted @ 2020-06-09 21:29 moss_tan_jun 阅读(802) 评论(0) 推荐(0) 编辑

2020年5月12日

摘要: 为什么升级到MySQL 8.0 基于安全考虑 基于性能和 稳定性考虑:mgr复制 ,并行复制writeset 等功能,性能提升 新的功能:Hash join ,窗口函数,DDL即时,json 支持 原始环境中版本太多,统一版本 8.0版本基本已到稳定期,可以大量投入生产环境中 升级之前需要了解 数据 阅读全文

posted @ 2020-05-12 22:43 moss_tan_jun 阅读(6279) 评论(1) 推荐(1) 编辑

2020年5月7日

摘要: 在performance_schema有如下表记录内存使用情况 1 2 3 4 5 6 7 8 9 10 mysql> show tables like '%memory%summary%'; + + | Tables_in_performance_schema (%memory%summary%) 阅读全文

posted @ 2020-05-07 23:11 moss_tan_jun 阅读(3324) 评论(0) 推荐(0) 编辑

摘要: RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。 MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。 共享内存 执行如下命令,即 阅读全文

posted @ 2020-05-07 22:57 moss_tan_jun 阅读(558) 评论(0) 推荐(0) 编辑

2020年4月26日

摘要: # python doc https://www.cnblogs.com/june-L/category/1586901.html 一、configparser介绍configparser模块主要用于读取配置文件,导入方法:import configparser 二、基本操作 2.1、获取节点sec 阅读全文

posted @ 2020-04-26 23:08 moss_tan_jun 阅读(135) 评论(0) 推荐(0) 编辑

2020年4月5日

摘要: # -*- coding: utf-8 -*-from xml.dom.minidom import parsedef readXML(): domTree = parse("./defalt.xml") rootNode = domTree.documentElement print(rootNo 阅读全文

posted @ 2020-04-05 13:27 moss_tan_jun 阅读(154) 评论(0) 推荐(0) 编辑

摘要: # -*- coding: utf-8 -*-from xml.dom.minidom import parsedef writexml(): dom = parse("server.xml") root = dom.documentElement systemlist = root.getElem 阅读全文

posted @ 2020-04-05 13:24 moss_tan_jun 阅读(171) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示