溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql binlog日志是什么?如何使用binlog恢復數據庫?

發布時間:2020-05-06 16:41:08 來源:億速云 閱讀:416 作者:三月 欄目:MySQL數據庫

下文主要給大家帶來Mysql binlog日志是什么?如何使用binlog恢復數據庫?,希望Mysql binlog日志是什么?如何使用binlog恢復數據庫?能夠帶給大家實際用處,這也是我編輯這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。

初識MySQL  日志binlog
MySQL重要log,二進制日志文件,記錄所有DDL和DML語句(除select),事件形式記錄,包含語句所執行的消耗時間,事務安全型。
DDL(數據庫定義語言),主要命令有create、alter、drop等。DDL主要定義或改變表table的結構、數據類型。建表時使用。
MDL(數據操縱語言),主要命令有select、update、insert、delete。

Mysql binlog日志是什么?如何使用binlog恢復數據庫?

mysqlbinlog常見選項:
--start-datetime:從二進制中讀取指定時間戳。
--stop-datetime:從二進制中讀取指定時間戳。
--start-position:從二進制中讀取指定position事件位置。
--stop-position:從二進制中讀取指定position事件位置。

binlog日志使用場景:
1)MySQL主從復制:MySQL在replication在Master端開啟binlog,master將二進制文件傳遞給slaves來達到master-slave數據一致。
2)數據恢復:通過mysqlbinlog工具恢復數據
binlog日志包括兩類文件:
1)二進制日志索引文件(文件后綴名.index)用于記錄所有二進制文件
2)二進制日志文件(文件后綴名.00000)記錄數據庫所有DDL和DML(select除)語句事件

開啟binlog日志和基本操作

開啟binlog:
/etc/my.cnf文件
log-bin=mysql-bin

mysql命令操作:

查看日志開啟
mysql>show variables like 'log_%';

查看所有binlog列表
mysql>show master logs;

查看master狀態,最后一個binlog日志的編號名稱,及最后一個操作事件pos結束點(position)值。
mysql>show master status;

刷新log日志,開始產生一新的編號的binlog日志文件
mysql>flush logs;
注:mysqld服務重啟時,也會執行此命令,刷新binlog日志。

重置(清空)所有binlog
mysql>reset master;

MySQL binlog日志內容查看
binlog日志為二進制文件,cat、vim等工具無法打開,使用自帶的mysqlbinlog命令查看

binlog內容分析:

# at 28226679
#181116 0:20:01 server id 776499703 end_log_pos 28226710 CRC32 0xb12373d2 Xid = 54012151
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
# at 28226710
#181116 0:20:35 server id 3095565156 end_log_pos 28226757 CRC32 0x05f2d78a Rotate to mysql-bin.001121 pos: 4
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

server id :數據庫主機服務號
end_log_pos:數據庫SQL結束時pos節點

binlog日志查看命令:
mysql> show binlog events in ‘mysql-bin.001120’\G;

binlog 從pos點100開始查,查詢10條
mysql> show binlog events in ‘mysql-bin.001120’ from 100 limit 10\G;

利用binlog日志恢復數據庫
1)恢復就近的完整備份庫
mysql -uusername -p -v db_test -h 192.168.1.100 < ./db_test .sql

2)通過binlog找到要恢復的--start-position點 和  --stop-position
binlog:mysql-bin.001118 、mysql-bin.001119 、mysql-bin.001120

mysqlbinlog -v --base64-output=DECODE-ROWS  /data/binlog/mysql-bin.001118 | head -10
mysqlbinlog -v --base64-output=DECODE-ROWS /data/binlog/mysql-bin.001120 | grep -C 30 -i "22:05:01"

3)binlog恢復
/bin/mysqlbinlog --start-position=120 --stop-position=2174941 /data/binlog/mysql-bin.001118 /data/binlog/mysql-bin.001119 /data/binlog/mysql-bin.001120 |/bin/mysql -uusername -p -v db_test -h 192.168.1.100
--start-position是備份后記錄下的pos點, --stop-position是誤操前的pos點,如果批多個binlog文件,那么start-position是第一個binlog文件的pos點,stop-position是最后一個binlog文件的pos點

總結:所謂恢復,就是用mysql保存的binlog日志中指定的區間段的sql語句進行重新執行一次。

對于以上關于Mysql binlog日志是什么?如何使用binlog恢復數據庫?,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女