本文介紹mysql binlog的使用,包括開啟,關閉,查看狀態,刷新,清空,查看執行的sql語句等操作。並對5.7及舊版的設定加以說明,方便大家學習。
binlog就是binary log,二進位日誌文件,記錄了mysql所有的dml操作。
根據mysql binlog文件,我們可以查看執行了什麼sql語句,進行資料恢復,主從同步複製等操作。
binlog檔案對於一個資料庫的處理和復原有很重要的作用。
查看mysql binlog設定
show global variables like '%log_bin%'; +---------------------------------+-------+| Variable_name | Value | +---------------------------------+-------+| log_bin | OFF | | log_bin_basename | | | log_bin_index | | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF |+---------------------------------+-------+
binlog 目前是關閉的。
開啟binlog
開啟my.cnf或my.ini加入以下語句,重啟mysql
log_bin=ONlog_bin_basename=/usr/local/var/mysql/mysql-binlog_bin_index=/usr/local/var/mysql/mysql-bin.index
log_bin
ON表示開啟binlog日誌,關閉改為OFF。
log_bin_basename
表示binlog日誌的基本檔名,後面會追加標識來區分每一個檔案。
log_bin_index
指定binlog文件的索引文件,這個文件管理了所有binlog文件的目錄。
如果是mysql5.7以下,這樣設定就可以了,如果是5.7以上,需要按以下設定
log_bin=mysql-binserver_id=123456
log_bin # 表示自訂binlog檔案名稱。
server_id 表示隨機指定一個與其他叢集機器不重名的字串,設定mysql replication需要定義,不能和canal的slaveId重複。
重啟後再次查看mysql binlog配置
show global variables like '%log_bin%'; +---------------------------------+--------------------------------------+| Variable_name | Value | +---------------------------------+--------------------------------------+| log_bin | ON | | log_bin_basename | /usr/local/var/mysql/mysql-bin | | log_bin_index | /usr/local/var/mysql/mysql-bin.index | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF |+---------------------------------+--------------------------------------+
可以看到binlog已開啟。
show master logs; +------------------+-----------+| Log_name | File_size | +------------------+-----------+| mysql-bin.000001 | 177 | | mysql-bin.000002 | 177 | | mysql-bin.000003 | 177 | | mysql-bin.000004 | 177 | | mysql-bin.000005 | 177 | | mysql-bin.000006 | 177 | | mysql-bin.000007 | 201 | | mysql-bin.000008 | 201 | | mysql-bin.000009 | 201 || mysql-bin.000010 | 154 | +------------------+-----------+
show master status; +------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+| mysql-bin.000010 | 154 | | | | +------------------+----------+--------------+------------------+-------------------+
flush logs;
reset master;
查看binlog日誌文件,查看執行了哪些sql語句,我們可以使用mysqlbinlog 工具進行處理。
首先根據log_bin_basename,找到存放binlog檔案的目錄,然後使用mysqlbinlog工具查看對應的binlog檔案。
例如:
mysqlbinlog -v mysql-bin.000001 > mysql-bin-1.log
然後查看mysql-bin-1.log,可以查看執行過的sql語句。
BINLOG ' Xq1HWhNA4gEAPAAAAGQBAAAAAPEEAAAAAAEACXRlc3RfdXNlcgAGY3NfdGFnAAUDDwEDAwL9AgBa WZlG Xq1HWh5A4gEANwAAAJsBAAAAAPEEAAAAAAEAAgAF/+ACAAAABABjc2RuAf2LG1r9ixtaIS88ZA== '/*!*/;### INSERT INTO `test_user`.`cs_tag`### SET### @1=2### @2='csdn'### @3=1### @4=1511754749### @5=1511754749# at 411
使用mysqlbinlog時需要注意一下幾點
#1.不要查看目前正在寫入的binlog文件,可以先把文件複製到其他目錄,再執行查看。
2.不要加force參數強制存取。
3.如果binlog格式是row模式的,請加-vv參數。
本篇文章解釋了mysql binlog的使用方法,更多相關知識請關注php中文網。
相關推薦:
講解php 基於redis使用令牌桶演算法實現流量控制的相關內容
以上是講解mysql binlog的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!