什麽是Binlog
binlog是Mysql sever層維護的一種二進製日誌,主要是用來記錄對mysql數據更新或潛在發生更新的SQL語句,並以"事務"的形式保存在磁盤中;
作用:
- 復製:MySQL Replication在Master端開啟binlog,Master把它的二進製日誌傳遞給slaves並回放來達到master-slave數據一致的目的
- 數據恢復:通過mysqlbinlog工具恢復數據
- 增量備份
操作Binlog
開啟
my.cnf => [mysqld]塊 => 添加 log-bin=mysql-bin
查看狀態
mysql> show variables like 'log_%';
+----------------------------------------+---------------------------------------+
| Variable_name | Value |
+----------------------------------------+---------------------------------------+
| log_bin | ON | ------> ON表示已經開啟binlog日誌
| log_bin_basename | /usr/local/mysql/data/mysql-bin |
| log_bin_index | /usr/local/mysql/data/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| log_error | /usr/local/mysql/data/martin.err |
| log_output | FILE |
| log_queries_not_using_indexes | OFF |
| log_slave_updates | OFF |
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| log_throttle_queries_not_using_indexes | 0 |
| log_warnings | 1 |
+----------------------------------------+---------------------------------------+
查看內容
默認情況下binlog日誌是二進製格式,無法直接查看。有以下兩種方式查看:
1. mysql查看binlog
mysql> show binlog events; #只查看第一個binlog文件的內容
mysql> show binlog events in 'mysql-bin.000002';#查看指定binlog文件的內容
mysql> show binary logs; #獲取binlog文件列表
mysql> show master status; #查看當前正在寫入的binlog文件
2. 使用mysqlbinlog工具
- 基於開始/結束時間
mysqlbinlog --start-datetime='2013-09-10 00:00:00' --stop-datetime='2013-09-10 01:01:01' -d {database} {binlog-file}
- 基於pos值
mysqlbinlog --start-postion=107 --stop-position=1000 -d {database} {binlog-file}
- 轉換為可讀文本
mysqlbinlog –base64-output=DECODE-ROWS -v -d {database} {binlog-file}