mysql導出二進制日志_使用mysqlbinlog提取二進制日志

MySQL binlog日志記錄了MySQL數據庫從啟用日志以來所有對當前數據庫的變更。binlog日志屬于二進制文件,我們可以從binlog提取出來生成可閱讀的SQL語句來重建當前數據庫以及根據需要實現時點恢復或不完全恢復。本文主要描述了如果提取binlog日志,并給出相關示例。

有關binlog的介紹與描述請參考:MySQL 二進制日志(Binary Log)

1、提取mysqlbinlog的幾種方式

2、演示show binlog events方式

mysql> show variables like 'version';

+---------------+------------+

| Variable_name | Value |

+---------------+------------+

| version | 5.6.12-log |

+---------------+------------+

mysql> show binary logs;

+-----------------+-----------+

| Log_name | File_size |

+-----------------+-----------+

| APP01bin.000001 | 120 |

+-----------------+-----------+

a、只查看第一個binlog文件的內容(show binlog events)

mysql> use replication;

Database changed

mysql> select * from tb;

+------+-------+

| id | val |

+------+-------+

| 1 | robin |

+------+-------+

mysql> insert into tb values(2,'jack');

Query OK, 1 row affected (0.02 sec)

mysql> flush logs;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into tb values(3,'fred');

Query OK, 1 row affected (0.00 sec)

mysql> show binary logs;

+-----------------+-----------+

| Log_name | File_size |

+-----------------+-----------+

| APP01bin.000001 | 409 |

| APP01bin.000002 | 363 |

+-----------------+-----------+

mysql> show binlog events;

+-----------------+-----+-------------+-----------+-------------+----------------------------------------------------+

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

+-----------------+-----+-------------+-----------+-------------+----------------------------------------------------+

| APP01bin.000001 | 4 | Format_desc | 11 | 120 | Server ver: 5.6.12-log, Binlog ver: 4 |

| APP01bin.000001 | 120 | Query | 11 | 213 | BEGIN |

| APP01bin.000001 | 213 | Query | 11 | 332 | use `replication`; insert into tb values(2,'jack') |

| APP01bin.000001 | 332 | Xid | 11 | 363 | COMMIT /* xid=382 */ |

| APP01bin.000001 | 363 | Rotate | 11 | 409 | APP01bin.000002;pos=4 |

+-----------------+-----+-------------+-----------+-------------+----------------------------------------------------+

-- 在上面的結果中第3行可以看到我們執行的SQL語句,第4行為自動提交

-- Author : Leshami

-- Blog : http://blog.csdn.net/leshami

b、查看指定binlog文件的內容(show binlog events in 'binname.xxxxx')

mysql> show binlog events in 'APP01bin.000002';

+-----------------+-----+-------------+-----------+-------------+----------------------------------------------------+

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

+-----------------+-----+-------------+-----------+-------------+----------------------------------------------------+

| APP01bin.000002 | 4 | Format_desc | 11 | 120 | Server ver: 5.6.12-log, Binlog ver: 4 |

| APP01bin.000002 | 120 | Query | 11 | 213 | BEGIN |

| APP01bin.000002 | 213 | Query | 11 | 332 | use `replication`; insert into tb values(3,'fred') |

| APP01bin.000002 | 332 | Xid | 11 | 363 | COMMIT /* xid=394 */ |

+-----------------+-----+-------------+-----------+-------------+----------------------------------------------------+

c、查看當前正在寫入的binlog文件(show master status\G)

mysql> show master status\G

*************************** 1. row ***************************

File: APP01bin.000002

Position: 363

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row in set (0.00 sec)

d、獲取指定位置binlog的內容(show binlog events from)

mysql> show binlog events from 213;

+-----------------+-----+------------+-----------+-------------+----------------------------------------------------+

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

+-----------------+-----+------------+-----------+-------------+----------------------------------------------------+

| APP01bin.000001 | 213 | Query | 11 | 332 | use `replication`; insert into tb values(2,'jack') |

| APP01bin.000001 | 332 | Xid | 11 | 363 | COMMIT /* xid=382 */ |

| APP01bin.000001 | 363 | Rotate | 11 | 409 | APP01bin.000002;pos=4 |

+-----------------+-----+------------+-----------+-------------+----------------------------------------------------+

3、演示mysqlbinlog方式提取binlog

a、提取指定的binlog日志

# mysqlbinlog /opt/data/APP01bin.000001

# mysqlbinlog /opt/data/APP01bin.000001|grep insert

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

insert into tb values(2,'jack')

b、提取指定position位置的binlog日志

# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001

c、提取指定position位置的binlog日志并輸出到壓縮文件

# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 |gzip >extra_01.sql.gz

d、提取指定position位置的binlog日志導入數據庫

# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 | mysql -uroot -p

e、提取指定開始時間的binlog并輸出到日志文件

# mysqlbinlog --start-datetime="2014-12-15 20:15:23" /opt/data/APP01bin.000002 --result-file=extra02.sql

f、提取指定位置的多個binlog日志文件

# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 /opt/data/APP01bin.000002|more

g、提取指定數據庫binlog并轉換字符集到UTF8

# mysqlbinlog --database=test --set-charset=utf8 /opt/data/APP01bin.000001 /opt/data/APP01bin.000002 >test.sql

h、遠程提取日志,指定結束時間

# mysqlbinlog -urobin -p -h192.168.1.116 -P3306 --stop-datetime="2014-12-15 20:30:23" --read-from-remote-server mysql-bin.000033 |more

i、遠程提取使用row格式的binlog日志并輸出到本地文件

# mysqlbinlog -urobin -p -P3606 -h192.168.1.177 --read-from-remote-server -vv inst3606bin.000005 >row.sql

4、獲取mysqlbinlog的幫助信息(僅列出常用選項)

-d, --database=name

-f, --force-read

-h, --host=name

-l, --local-load=name

-p, --password[=name]

-P, --port=#

--protocol=name

-R, --read-from-remote-server|--read-from-remote-master=name

-r, --result-file=name

-s, --short-form

-S, --socket=name

--start-datetime=name

--stop-datetime=name

-j, --start-position=#

--server-id=#

--set-charset=name

-D, --disable-log-bin

-u, --user=name

-v, --verbose

-V, --version

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287641.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287641.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287641.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《零基礎看得懂的C++入門教程 》——(5) 容我套個娃 循環

一、學習目標 了解循環的使用方法 目錄 預備第一篇,使用軟件介紹在這一篇,C與C使用的軟件是一樣的,查看這篇即可:《軟件介紹》 想了解編譯原理和學習方法點這篇,學習方法和一些原理C與C都是相同的《脫離學習誤區》 …

Android之把app作為獨立的module導入其他項目遇到的坑

1 問題 把app作為獨立的module導入其他項目 2 步驟 1)在app的里面的build.gradle里面把 apply plugin: com.android.application 替換成如下 apply plugin: com.android.library 2)注視掉build.gradle文件里面的applicationId 3)app的AndroidManifest文件中MainActiv…

【ArcGIS風暴】ArcGIS解決數字化之前創建圖層時未定義坐標系而導致數據跑偏的問題

數字化時,第一步需要創建點線面圖層,創建圖層需要指定一個地理坐標系,但如果忽略了這一步,我們數字化的適量數據時沒有坐標系的,后果很嚴重,如果數字化工作只做了一點點,可以卷土重來;如果是大量工作的話,可以采取以下補救措施,建議收藏。 注: (1)如果底圖為無任…

Android兩個注意事項.深入了解Intent和IntentFilter(兩)

深入理解Intent和IntentFiler(二)轉載請表明出處:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 在上一篇文章中,我們比較具體學習了"Intent"的相關知識,如今將學習怎樣設置Intent對象的這些屬性以及怎樣使用他們來啟動組件。…

Oracle常用sql語句(一)

Sql的分類DDL操作數據庫表列等表基本的操作主鍵索引視圖 常用數據類型字符串類型數字類型日期類型LOB類型LONG類型 數據轉換character datenumbercharacter通用函數條件表達式Sql的分類 DDL (Data Definition Language):數據定義語言&#xf…

ASP.NET Web API 實現客戶端Basic(基本)認證 之簡單實現

優點是邏輯簡單明了、設置簡單。 缺點顯而易見,即使是BASE64后也是可見的明文,很容易被破解、非法利用,使用HTTPS是一個解決方案。 還有就是HTTP是無狀態的,同一客戶端每次都需要驗證。 實現: 客戶端在用戶輸入用戶名及…

WPF|分享一個登錄界面設計

分享一個登錄界面,先看效果圖:準備文中使用到了一些圖標:我們可以從 iconfont[1]免費下載:代碼簡單說明請隨手創建一個WPF項目(.NET Framework、.NET 5\6\7皆可),使用tree /f命令看看最終的文件…

《零基礎看得懂的C++入門教程 》——(6)自己動手寫個函數

一、學習目標 了解C語言的自定義函數的使用方法了解C語言自定義函數的傳參了解C語言自定義函數的返回值 目錄 預備第一篇,使用軟件介紹在這一篇,C與C使用的軟件是一樣的,查看這篇即可:《軟件介紹》 想了解編譯原理和學習方法點…

k8s mysql數據同步_K8s——MySQL實現數據持久化

1、搭建nfs存儲[rootdocker-k8s01 ~]# yum -y install nfs-utils[rootdocker-k8s01 ~]# mkdir /nfsdata/mysql -p[rootdocker-k8s01 ~]# cat /etc/exports/nfsdata *(rw,sync,no_root_squash)[rootdocker-k8s01 ~]# systemctl restart nfs-server[rootdocker-k8s01 ~]# systemc…

【計算機圖形學】實驗:C#語言采用GDI+定義筆刷并填充圖形完整實驗操作流程

一、實驗目的: 熟練掌握在.net環境下對筆刷的定義,并可用定義好的筆刷填充多邊形。 二、實驗準備: 學習在.net環境下GDI+所提供的5種筆刷類型,掌握定義筆刷的方法和填充圖形的函數,如FillRectange ( )、FillEllipse ( )等。 三、實驗內容: 在.net環境中設計一個窗體…

Android之提示Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed

1 問題 02-28 22:44:33.031 7379 7379 E AndroidRuntime: java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed 02-28 22:44:33.031 7379 7379 E AndroidRuntime: at android.graphics.Canvas.checkValidClipOp(C…

使用Java API的5個技巧

本文介紹了一些關于Java API安全和性能方面的簡單易用的技巧,其中包括保證API Key安全和開發Web Service方面中在框架方面選擇的一些建議。 程序員都喜歡使用API!例如為app應用構建API或作為微服務架構體系的一部分。當然,使用API的前提是能讓…

管道模式 pipe

先放一個圖,預則立嘛 PipelinePattern.rar 這里是 不完整的碼轉載于:https://www.cnblogs.com/ganmk--jy/p/5525897.html

《零基礎看得懂的C++入門教程 》——(7)小數組玩起來

一、學習目標 了解數組的使用方法了解一維數組的使用方法了解一維數組與循環的使用方法 目錄 預備第一篇,使用軟件介紹在這一篇,C與C使用的軟件是一樣的,查看這篇即可:《軟件介紹》 想了解編譯原理和學習方法點這篇&#xff0c…

SSO 方案演進

1背景介紹 隨著業務與技術的發展,現今比以往任何時候都更需要單點登錄 SSO 身份驗證。現在幾乎每個網站都需要某種形式的身份驗證才能訪問其功能和內容。隨著網站和服務數量的增加,集中登錄系統已成為一種必要。在本文中,我們將討論下 …

【計算機圖形學】實驗:VB.net環境下的圖形裁剪完整實驗操作流程

一、實驗目的: 熟練掌握在.net環境下對圖形的裁剪。 二、實驗準備: 學習圖形裁剪的基本算法,以及在.net環境下裁剪圖形的基本方法。 三、實驗內容: 在.net環境中利用裁剪圖形的基本方法對任意圖形進行裁剪。

UI之常用通過顏色值和透明度怎么得到最后的顏色值

1 、問題 UI給了顏色#000000,透明度是75%,我需要最終的顏色值。 2 、透明度色值表 00%FF(不透明) 5%F2 10%E5 15%D8 20%CC 25%BF 30%B2 35%A5 40%99 45%8c 50%7F 55%72 60%66 65%59 70%4c 75%3F 80%33 85%21 90%19 95%0c 100%00…

《零基礎看得懂的C++入門教程 》——(8)搞定二維數組與循環嵌套

一、學習目標 了解二維數組的使用方法了解循環嵌套的使用方法 目錄 預備第一篇,使用軟件介紹在這一篇,C與C使用的軟件是一樣的,查看這篇即可:《軟件介紹》 想了解編譯原理和學習方法點這篇,學習方法和一些原理C與C都…

mybatis模糊查詢不同寫法

工作中用到,寫三種用法吧,第四種為大小寫匹配查詢 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT(%, #{text}), %); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE %${text}%; 3. 程序中拼接 Java …

常見的Ubuntu命令30條(一)

Ubuntu命令是指在Ubuntu操作系統中用于執行各種任務和操作的命令行指令。這些命令可以用于管理系統、配置網絡、安裝軟件、瀏覽文件等。Ubuntu命令通常在終端(Terminal)應用程序中輸入并執行。 在Ubuntu中,有許多常用的命令和指令。以下是一…