1、binlog概念:
binlog是一個(gè)二進(jìn)制格式的文件,用于記錄“修改數(shù)據(jù)或可能引起數(shù)據(jù)變更”的SQL語(yǔ)句(查詢的SQL不會(huì)記錄)。
2、binlog功能:
(1)恢復(fù):
利用binlog日志恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)。
(2)復(fù)制:
主從架構(gòu)通過(guò)binlog同步數(shù)據(jù)。
(3)審計(jì):
可以用binlog中的信息進(jìn)行審計(jì),
判斷是否有對(duì)數(shù)據(jù)庫(kù)進(jìn)行注入攻擊。
3、binlog的記錄格式:
(1)statement:
基于"語(yǔ)句"記錄,記錄的是修改SQL語(yǔ)句。
(2)row:
基于"行"記錄,記錄的是每行實(shí)際數(shù)據(jù)的變更。
(3)mixed:
statement和row模式的混合。
4、binlog的配置參數(shù)
(1)開關(guān)配置:
sql_log_bin=1|0
用于控制會(huì)話級(jí)別二進(jìn)制日志功能的開啟與關(guān)閉
MySQL> SET SQL_LOG_BIN=0;
mysql> SOURCE somefile.sql;
mysql> SET SQL_LOG_BIN=1;
(2)文件路徑:
log_bin=/data/mysql3306/data/mysql-bin
(3)記錄格式:
binlog_format=MIXED
(4)過(guò)期時(shí)間:
expire_logs_days=0
日志過(guò)期后會(huì)被自動(dòng)清理
(5)同步磁盤:
sync_binlog=1|0:
事務(wù)提交時(shí), 是否將事件從內(nèi)存刷新至磁盤,
安全期間應(yīng)該開啟保證數(shù)據(jù)安全, 開啟后會(huì)略微造成性能下降(至關(guān)重要)
(6)cache相關(guān):
binlog_cache_size=xx
binlog_stmt_cache_size=xx
max_binlog_size=xx
max_binlog_cache_size=xx
max_binlog_stmt_cache_size=xx
5、binlog文件的管理:
二進(jìn)制日志文件的構(gòu)成:
索引文件: mysql-bin.index
日志文件: mysql-bin.000xxx
(1)查看二進(jìn)制日志文件列表
mysql> SHOW MASTER LOGS;
mysql> SHOW BINARY LOGS;
(2)查看正在使用中的二進(jìn)制文件
mysql> SHOW MASTER STATUS;
(3)查看二進(jìn)制文件內(nèi)容:
方式一:
mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000001' LIMIT 5;
mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000001' FROM 208 LIMIT 5, 10;
方式二:
# mysqlbinlog --start-position='100' --stop-position='1000' ./mysql-bin.000001
# mysqlbinlog --start-datetime='2020-04-24 00:00:00' --stop-datetime='2020-04-24 17:00:00' ./mysql-bin.000001
查看mysqlbinlog使用幫助
# mysqlbinlog --help
(4)日志滾動(dòng):
mysql> FLUSH LOGS;
避免日志文件太大,可生成新binlog文件
(5)清除二進(jìn)制日志:
注意:只有做過(guò)備份的binlog才可以清除, 不可以手動(dòng)直接刪除文件。
mysql> PURGE BINARY LOGS BEFORE '2019-01-20 21:10:24';
mysql> PURGE BINARY LOGS TO 'mysql-bin.000xxx';
說(shuō)明: 刪除mysql-bin.000xxx之前的文件
示例: 先做備份!!!
# mkdir /data/backup/binlog/
# cp mysql-bin.00000[0-9] /data/backup/binlog/
# sync
mysql> PURGE BINARY LOGS TO 'mysql-bin.000009'
另外,清除所有binlog(慎用)
mysql> reset master;
