成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL數(shù)據(jù)恢復,你會嗎?

數(shù)據(jù)庫 MySQL
今天分享一下Binlog2sql,它是一款比較常用的數(shù)據(jù)恢復工具,可以通過它從MySQL Binlog解析出你要的SQL,并根據(jù)不同選項,可以得到原始SQL、回滾SQL、去除主鍵的INSERT SQL等。

今天分享一下binlog2sql,它是一款比較常用的數(shù)據(jù)恢復工具,可以通過它從MySQL binlog解析出你要的SQL,并根據(jù)不同選項,可以得到原始SQL、回滾SQL、去除主鍵的INSERT SQL等。主要用途如下:

  • 數(shù)據(jù)快速回滾(閃回)
  • 主從切換后新master丟數(shù)據(jù)的修復
  • 從binlog生成標準SQL,帶來的衍生功能

1.系統(tǒng)環(huán)境準備

(1)安裝Git

該項目分享與git上,可以直接從git上獲取,因此可以先安裝git。

yum install  -y  pip

(2)安裝Python

因binlog2sql依賴于python2.7或python3.4+版本,如果本機python版本較低,則無法使用。安裝或升級python的方法可以參考 《python安裝及升級》

(3)安裝pip

如果系統(tǒng)中沒有安裝pip,則需要先安裝pip,因為后續(xù)需要用pip安裝python所需的包。

(4)binlog2sql下載及依賴包安裝

binlog2sql可以部署在其他機器上,而不是必須部署在mysql服務端上。

git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
pip install -r requirements.txt

2.MySQL環(huán)境準備

(1)參數(shù)設置

MySQL server必須設置以下參數(shù)。

[mysqld]
server_id = 128
log_bin = /data/mysql/mysql3306/logs/mysql-bin
max_binlog_size = 512M
binlog_format = row
binlog_row_image = full   # 默認值,可以不顯式設置

(2)創(chuàng)建恢復賬號

因binlog2sql是通過模擬從庫的方式獲取binlog,所以,數(shù)據(jù)庫賬號權限至少需設置為從庫所需的權限。

--  創(chuàng)建用戶
mysql> create  user  data_rec@'192.168.56.%'  identified by 'xxxxxxxx';
Query OK, 0 rows affected (0.01 sec)
--  授權
mysql> GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO data_rec@'192.168.56.%';
Query OK, 0 rows affected (0.00 sec)

權限說明:

  • select:需要讀取server端information_schema.COLUMNS表,獲取表結構的元信息,拼接成可視化的sql語句。
  • super/replication client:兩個權限都可以,需要執(zhí)行'SHOW MASTER STATUS', 獲取server端的binlog列表。
  • replication slave:通過BINLOG_DUMP協(xié)議獲取binlog內(nèi)容的權限。

(3)創(chuàng)建測試表及數(shù)據(jù)

mysql> use testdb;
Database changed
mysql> create table t_test1 (id int primary key  auto_increment ,c_name  varchar(20), c_num  int );
Query OK, 0 rows affected (0.02 sec)


mysql> insert into  t_test1(c_name,c_num) values('aaaa',10),('abcc',15),('bacess',9),('andd',10);
Query OK, 4 rows affected (0.03 sec)
Records: 4  Duplicates: 0  Warnings: 0


mysql> insert into  t_test1(c_name,c_num) values('bbbaa',1),('dc',5),('vgcess',29),('hdgd',0);
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

(4)模擬誤刪除數(shù)據(jù)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-09-18 16:29:08 |
+---------------------+
1 row in set (0.00 sec)


mysql> delete from  t_test1;
Query OK, 8 rows affected (0.00 sec)


mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-09-18 16:29:26 |
+---------------------+
1 row in set (0.00 sec)

3.binlog2sql恢復數(shù)據(jù)

(1)生成恢復SQL

因知道大概誤刪除的時間,因此通過解析對應時間的binlog恢復出指定庫表的數(shù)據(jù),生成的結果是用于恢復的sql.

python binlog2sql.py  --flashback  -h 192.168.56.128 -udata_rec -p'xxxxxxxx' -d testdb  -t t_test1  --start-file='mysql-bin.000003' --start-datetime='2020-09-18 16:29:08' --stop-datetime='2020-09-18 16:30:00'  >/tmp/rec.sql

結果內(nèi)容如下:

(2)恢復數(shù)據(jù)

mysql> select  * from t_test1;
Empty set (0.00 sec)
mysql> source /tmp/rec.sql;
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
mysql> select  * from t_test1;
+----+--------+-------+
| id | c_name | c_num |
+----+--------+-------+
|  1 | aaaa   |    10 |
|  2 | abcc   |    15 |
|  3 | bacess |     9 |
|  4 | andd   |    10 |
|  5 | bbbaa  |     1 |
|  6 | dc     |     5 |
|  7 | vgcess |    29 |
|  8 | hdgd   |     0 |
+----+--------+-------+
8 rows in set (0.00 sec)

 數(shù)據(jù)已恢復。

 4.使用說明

參考原文鏈接:https://github.com/danfengcao/binlog2sql。

(1)解析模式

  • stop-never 持續(xù)解析binlog。可選。默認False,同步至執(zhí)行命令時最新的binlog位置。一般情況下解析單個binlog即可,但是如果需要回退的表之后有操作,則可能需要持續(xù)解析。
  • K, --no-primary-key 對INSERT語句去除主鍵??蛇x。默認False。
  • B, --flashback 生成回滾SQL,可解析大文件,不受內(nèi)存限制??蛇x。默認False。與stop-never或no-primary-key不能同時添加。該情況用的較多。
  • back-interval -B模式下,每打印一千行回滾SQL,加一句SLEEP多少秒,如不想加SLEEP,請設為0??蛇x。默認1.0。

(2)解析范圍控制

  • start-file 起始解析文件,只需文件名,無需全路徑 ,必選參數(shù)。即指定對應的binlog起始文件名。
  • start-position/--start-pos 起始解析位置。可選。默認為start-file的起始位置。
  • stop-file/--end-file 終止解析文件??蛇x。默認為start-file同一個文件。若解析模式為stop-never,此選項失效。
  • stop-position/--end-pos 終止解析位置。可選。默認為stop-file的最末位置;若解析模式為stop-never,此選項失效。
  • start-datetime 起始解析時間,格式'%Y-%m-%d %H:%M:%S'??蛇x。默認不過濾。
  • stop-datetime 終止解析時間,格式'%Y-%m-%d %H:%M:%S'??蛇x。默認不過濾。

(3)對象過濾

  • d, --databases 只解析目標db的sql,多個庫用空格隔開,如-d db1 db2。可選。默認為空。
  • t, --tables 只解析目標table的sql,多張表用空格隔開,如-t tbl1 tbl2。可選。默認為空。
  • only-dml 只解析dml,忽略ddl??蛇x。默認False。
  • sql-type 只解析指定類型,支持INSERT, UPDATE, DELETE。多個類型用空格隔開,如--sql-type INSERT DELETE??蛇x。默認為增刪改都解析。用了此參數(shù)但沒填任何類型,則三者都不解析。
責任編輯:姜華 來源: 數(shù)據(jù)庫干貨鋪
相關推薦

2021-08-19 15:36:09

數(shù)據(jù)備份存儲備份策略

2021-12-10 07:47:31

MySQL設置數(shù)據(jù)庫

2024-09-14 09:10:26

MySQL數(shù)據(jù)庫UOS

2021-04-14 06:53:52

C# 修飾符 Public

2021-04-16 15:02:11

CAP理論分布式

2020-09-21 14:55:15

數(shù)據(jù)庫SQL技術

2012-06-20 10:47:25

Team Leader

2021-09-12 17:25:12

SQLite數(shù)據(jù)庫

2019-05-07 15:49:27

AI人工智能藝術

2010-07-13 10:40:30

唐駿

2024-05-14 08:19:54

2021-03-10 18:07:58

協(xié)議調(diào)試 Modbus

2019-07-17 15:45:24

Spark內(nèi)存Java

2011-09-30 13:37:35

51CTO博客一周熱門薪酬

2022-03-25 09:39:50

LinuxLinux top

2021-11-05 10:59:06

元編程語言工具

2025-01-10 10:44:52

2024-03-13 10:40:00

性能探測工具SQL語句數(shù)據(jù)庫

2024-03-29 12:50:00

項目分層模型

2021-11-29 11:11:45

SQL查詢技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 香蕉一区二区 | 91精品国产一区二区三区 | 亚洲在线日韩 | av一级久久 | 国产黄色在线 | 免费久久精品 | 天天干干 | 久久专区 | 日本不卡一区二区三区在线观看 | 久久久国产一区二区三区 | 国产欧美日韩视频 | 日韩精品一区二区在线 | 精品国产视频 | 欧美午夜视频 | 亚洲精品电影 | 国产成人99久久亚洲综合精品 | 日本亚洲一区 | 日韩伦理一区二区 | 91在线视频在线观看 | 91中文字幕在线 | 午夜在线| 久久久久久久久久久久亚洲 | 人人玩人人添人人澡欧美 | 在线免费观看视频你懂的 | 一级片免费视频 | 亚洲在线 | 丝袜天堂 | 亚洲视频手机在线 | 久久久久九九九女人毛片 | 日本污视频 | 亚洲最大福利网 | 你懂的国产 | 日本不卡一区二区三区 | 成人在线视频一区二区三区 | 中文字幕亚洲精品 | 天天操夜夜操免费视频 | 久久久精品黄色 | 亚洲精品在线免费观看视频 | 欧美xxxx日本| 日韩精品一区二区三区中文在线 | 日韩欧美在线播放 |