利用mysql的二進制日誌文件,mysql二進制日誌文件如何打開

本文目錄一覽:

mysql 怎麼查看mysql的二進制日誌

MySQL的日誌文件模塊啟動後才會有日誌記錄。

開啟日誌服務:

在MY.INI里,MYSQLD項下添加log-bin=mysql。

如果只對某個庫進行日誌文件記錄,那麼再添加binlog-do-db=test,這樣就只記錄test數據庫的日誌,而放棄其他的。

添加完後,重新啟動MYSQL的服務,日誌文件開始工作了.

查看是否啟用了日誌命令:mysqlshow variables like ‘log_bin’;

查看當前的日誌命令:mysql show master status;

看二進制日誌文件用mysqlbinlog命令:shellmysqlbinlog mail-bin.000001

如何查看mysql二進制日誌目錄

從概述中我可以看到my.ini配置信息的log-bin沒有指定文件擴展名,這是因為即使你指定上擴展名它也不使用。當mysql創建二進制日誌文件時,首先創建一個以“mysql_log_bin”為名稱,以“.index”為後綴的文件;再創建一個以“mysql_log_bin”為名稱,以“.000001”為後綴的文件。當mysql服務重新啟動一次以“.000001”為後綴的文件會增加一個,並且後綴名加1遞增;如果日誌長度超過了max_binlog_size的上限(默認是1G)也會創建一個新的日誌文件;使用flush logs(mysql命令符)或者執行mysqladmin –u –p flush-logs(windows命令提示符)也會創建一個新的日誌文件。

既然寫入的都是MySQL二進制數據,用記事本打開文件是看不到正常數據的,那怎麼查看呢?

使用BIN目錄下mysqlbinlog命令,如:

Binmysqlbinlog d:/mysql_log/mysql_bin.000001

Binmysqlbinlog d:/mysql_log/mysql_bin.000002

Binmysqlbinlog d:/mysql_log/mysql_bin.000003

Binmysqlbinlog d:/mysql_log/mysql_bin.000004

Binmysqlbinlog d:/mysql_log/mysql_bin.000005

使用SQL語句也可查看mysql創建的二進制的文件目錄:

Mysql show master logs; 查看當前二進制文件狀態:

mysql show master status;

如何通過Mysql的二進制日誌恢複數據庫數

創建臨時數據庫,把備份導入進去進行 恢復單獨的數據庫 ,

mysqlbinlog 有一個 –databases 參數可以指定解析出指定db相關的sql ,你可以更加這個sql來恢複數據。

能不能建立多個二進制日誌文件,使每個數據庫對應自己的二進制日誌文件?

mysql 下 無此功能,mysqlbinlog 記錄的是整個mysql 實例的變化記錄,不能針對單獨的db 記錄日誌。

希望可以幫到您,謝謝!

如何實現mysql 數據庫的二進制日誌回滾

mysql命令行下怎樣實現數據的回滾操作

在MySQL有時執行了錯誤的update或者delete時導致大量數據錯誤恢復的辦法。執行時沒有開啟事務,也沒有對數據進行。這時就需要使用到sqlbinlog工具。

sqlbinlog需要開啟,具體的打開方法就不說了。

使用sqlbinlog會產生bin文件,恢復就需要用到這些文件。文件中記錄著數據庫的所有操作。(此方法的操作是將數據庫之前所執行的語句重新執行一次,以達到恢復效果)

具體步驟:1,先找到bin文件,一般都是在mysql的data文件夾中,結尾以.00000X等形式結束。

2,尋找需要還原的時間點 使用語句 mysqlbinlog 文件名 例(MySQLbinlog xxbin.000001)來查看內容,然後找到對應的具體時間

3,導出sql語句,使用語句 mysqlbinlog 文件名sql文件路徑 例(mysqlbinlog xxxbin,00001a.sql | mysql -u root -p )

如果需要指定時間導出–start–date -stop=” –date=” 來導出指定時間執行的語句例(sqlbinlog –start-stop=’2015-11-22 10:00:00′ xxbin.000001a.sql | mysql -u root -p )這句意思是導出在2015-11-22 10點之前的語句,反之start是導出時間之後的。 start和stop可以同時使用。

如果存在多個bin文件,則按照需要導出。

4,使用mysql將導出的語句執行一次。

MYSQL備份:啟用二進制日誌功能的MYSQL增量備份

小量的數據庫我們可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,我們就不太可能每天進行一次完整備份了,而且改成每周一次完整備份,每天一次增量備份類似這樣的備份策略。增量備份的原理就是使用了mysql的二進制日誌,所以我們必須啟用二進制日誌功能。

一、增量備份

1、比如我們在星期天下午11點做一次完整備份:

mysqldump

–single-transaction

–flush-logs

–master-data=2

–all-databases

fullbackup_sunday_11_PM.sql

在sql文件中我們會看到兩行:

Position

to

start

replication

or

point-in-time

recovery

from

CHANGE

MASTER

TO

MASTER_LOG_FILE=’bin-log.000002′,

MASTER_LOG_POS=107;

第二行包含了我們需要的信息,是指備份後所有的更改將會保存到bin-log.000002二進制文件中。

2、然後在星期一下午11點我們來做一次增量備份:

mysqladmin

flush-logs

這時將會產生一個新的二進制日誌文件bin-log.000003,bin-log.000002則保存了自星期天下午11點到現在的所有更改,我們只需要把這個文件備份到安全的地方就行了。然後星期二我們又做增量備份,還是執行同樣的命令,這時我們保存bin-log.000003文件。

二、恢復備份

比如星期三中午12點出現了故障,這時需要恢復,我們首先導入星期天的完整備份:

mysql

fullbackup_sunday_3_AM.sql

接着我們導入星期一和星期二的增量備份:

mysqlbinlog

bin-log.000002

bin-log.000003

mysql

這時我們已經恢復了所有備份數據,我們還可以找到bin-log.000004,進一步恢復最新的數據。

使用mysqlbinlog二進制日誌文件 導出

 查看MySQL是否開啟binlog(進mysql操作)

 show variables like ‘log_bin%’;

2. 查詢binlog文件名

   show master status;

路徑一般在安裝的mysql/data 下

進入 mysqlbinlog 運行文件目錄 一在mysql/bin下

執行 

 mysqlbinlog –no-defaults ../data/mysql-bin.000012 b.log

1、查詢時間段內日誌的執行內容

mysqlbinlog –start-datetime=’2018-01-08 02:01:00′ –stop-datetime=’2018-01-08 02:30:10′ -d test /var/lib/mysql/mysql-bin.000170 -v

2、查詢時間段內日誌中執行的刪除語句

mysqlbinlog –start-datetime=’2018-01-08 02:01:00′ –stop-datetime=’2018-01-08 02:30:10′ -d test /var/lib/mysql/mysql-bin.000170 -v|grep DELETE -A 5

3、統計時間段內日誌中執行的刪除語句

mysqlbinlog –start-datetime=’2018-01-08 02:01:00′ –stop-datetime=’2018-01-08 02:30:10′ -d test /var/lib/mysql/mysql-bin.000170 -v|grep DELETE |wc -l

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/155314.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-17 02:40
下一篇 2024-11-17 02:40

相關推薦

發表回復

登錄後才能評論