mysql裏面的bin-log日誌,相信大家都有過相應的瞭解,但是對於bin-log日誌而言,具體的內容是做什麼的,今天小編特意抽空學習了一下,下邊是我的筆記心得。
主從同步的一個基本原理
MySQL的二進制日誌可以說是MySQL最重要的日誌了,它記錄了所有的DDL和DML(除了數據查詢語句)語句,以事件形式記錄,還包含語句所執行的消耗的時間,MySQL的二進制日誌是事務安全型的。
由於在主從架構中,master將相應的sql信息通過Replication寫入到了bin-log文件當中,然後slaver的io線程讀取master的日誌內容,並將裏面的內容寫入到寫入到 Slave 端的Relay Log,sql線程會監控到Relay Log相應的內容並且進行讀取,達到相應的一個主從數據同步的模式。
mysql的binlog日誌除了我們常說的這個主從同步功能以外,還能爲我們的數據庫備份提供一定的幫助。
常用binlog日誌操作命令
1.查看所有binlog日誌列表
mysql> show master logs;
2.查看master狀態,即最後(最新)一個binlog日誌的編號名稱,及其最後一個操作事件pos結束點(Position)值
mysql> show master status;
3.刷新log日誌,自此刻開始產生一個新編號的binlog日誌文件
mysql> flush logs;
注:每當mysqld服務重啓時,會自動執行此命令,刷新binlog日誌;在mysqldump備份數據時加 -F 選項也會刷新binlog日誌;
4.重置(清空)所有binlog日誌
mysql> reset master;
我們登錄自己的mysql服務器,在確認log-bin配置開啓之後,使用mysql自帶的mysqlbinlog工具進行日誌文件的查看(mysql的binlog日誌文件通過vi,cat是無法查看的)
這裏面正好有一段相應的write_rows的插入數據記錄,根據相應的end_log_pos指標,我們可以記住相應的pos數值,然後進入mysql服務裏面進行詳細日誌文件的閱讀
通過相應的mysql-binlog閱讀命令,我們可以去查詢相關的日誌記錄:
這裏需要結合以下相應的命令進行查看:
mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
選項解析:
IN 'log_name' 指定要查詢的binlog文件名(不指定就是第一個binlog文件)
FROM pos 指定從哪個pos起始點開始查起(不指定就是從整個文件首個pos點開始算)
LIMIT [offset,] 偏移量(不指定就是0)
row_count 查詢總條數(不指定就是所有行)
注意,這裏要求起始點位置是正確的offset才能使得命令生效。