本文目錄一覽:
- 1、mysql 怎麼查看mysql的二進制日誌
- 2、如何查看mysql二進制日誌目錄
- 3、如何通過Mysql的二進制日誌恢複數據庫數
- 4、如何實現mysql 數據庫的二進制日誌回滾
- 5、MYSQL備份:啟用二進制日誌功能的MYSQL增量備份
- 6、使用mysqlbinlog二進制日誌文件 導出
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-hk/n/155314.html