mysql學習8:第四章:資料庫檔案--日誌檔案
)
預設存放路徑在資料目錄下,以error.log結尾的檔案。
檢視檔案位置:
show variables like ‘%og_error%’;
注意warnings資訊
TIMESTAMP型別特點
記錄提交後的所有DML語句。如需記錄select 和show,需要開啟全量日誌功能。
二進位制日誌的主要作用:
l 完成主從複製功能,binlog記錄主伺服器上所有修改資料的記錄,傳送到從伺服器。
l 進行恢復操作,透過binlog,使用mysqlbinlog命令,實現基於時間點和位置的恢復。
配置引數log-bin=ON啟動二進位制日誌,如沒有命名檔名則預設mysql-binlog.xxxx為binlog檔名,預設儲存在資料目錄下。
[mysql]>show variables like '%log_bin%';
+---------------------------------+--------------------------------+
| Variable_name | Value |
+---------------------------------+--------------------------------+
| log_bin | ON |
| log_bin_basename | /data/mysql/mysql-binlog |
| log_bin_index | /data/mysql/mysql-binlog.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+--------------------------------+
6 rows in set (0.00 sec)
檢視當前binlog檔案及值大小
[mysql]>show binary logs;
+---------------------+-----------+
| Log_name | File_size |
+---------------------+-----------+
| mysql-binlog.000001 | 177 |
| mysql-binlog.000002 | 177 |
| mysql-binlog.000003 | 1844 |
| mysql-binlog.000004 | 369 |
| mysql-binlog.000005 | 592 |
| mysql-binlog.000006 | 1065 |
| mysql-binlog.000007 | 615 |
| mysql-binlog.000008 | 217 |
| mysql-binlog.000009 | 194 |
+---------------------+-----------+
9 rows in set (0.00 sec)
檢視mysql當前日誌及狀態
[mysql]>show master status;
+---------------------+----------+--------------+------------------+-------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------------+----------+--------------+------------------+-------------------------------------------+
| mysql-binlog.000009 | 194 | | | 9c21d663-e09d-11e8-b535-000c29899e07:1-13 |
+---------------------+----------+--------------+------------------+-------------------------------------------+
1 row in set (0.00 sec)
資料目錄下的 mysql-bin.index 檔案時二進位制日誌的索引檔案,用來記錄產生的二進位制日誌的序號。
binlog引數介紹
max_binlog_size: 制定單個binlog的最大值,預設1G;生產環境控制生成時間小於5分鐘,建議調整為256MB。
binlog_cache_size :所有未提交的事務會記錄到一個快取中,等待事務提交時,直接將快取中的二進位制日誌寫入binlog。每個新會話預設32K;每個執行緒開始一個事務自動分配一個快取。緩衝區太小將會使用磁碟臨時檔案。可透過如下命令判斷。
[mysql]>show global status like '%binlog_cache%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
+-----------------------+-------+
主要看這兩個值得使用情況;生產環境一般4MB。
binlog_format 代表二進位制檔案格式,有statement,row,mixed三種。
l statement:基於操作的SQL語句記錄到binlog中,簡稱SBR,5.1前的預設格式,節約IO,但有時master-slave資料不一致,廢棄。
l mixed:混合使用row和statement格式,不建議使用。
l row:基於行的變更情況記錄,記錄變更前後的內容,簡稱RBR。不記錄SQL語句上下文資訊,只記錄資料變更,任何情況下都可以被複制,但產生日誌多。推薦使用。
mysql5.6後新增binlog_rows_query_log_events引數,可在row模式下看見完整sql語句。5.7預設關閉。
[mysql]>show variables like '%binlog_rows%';
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| binlog_rows_query_log_events | OFF |
+------------------------------+-------+
sync_binlog: 決定binlog的重新整理機制。
expire_logs_days :binlog過期時間(天);
binlog-do-db或binlog-ignore-db: 表示寫入或忽略哪些庫的日誌,預設空;
log_slave_updates :配置m>s1>s2的架構時,需要在s1上設定為1,才能s1同步s2;
binlog_checksum: 對寫入binlog進行校驗,預設crc32.
binlog_row_imag 決定記錄範圍,預設full,記錄全部記錄;minimal只記錄要修改列的資訊;noblob記錄除了blog和text的所有欄位。
mysqlbinlog命令檢視binlog示範
l 檢視當前binlog format
[mysql]>show variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+
l 建立測試表t
CREATE TABLE `t` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(10) DEFAULT NULL ,
`city` varchar(10) DEFAULT NULL ,
PRIMARY KEY (`id`))
ENGINE=INNODB auto_increment=1 ;
l 插入資料
insert into t (name,city) values('zs','bj'),('zz','sh');
l 更新資料
update t set name ='zs1' where name='zs';
l 複製binlog檔案
# cp mysql-binlog.000009 /tmp/mysqlbinlog9bk
l 轉換binlog
# /usr/local/mysql/bin/mysqlbinlog --no-defaults -v -v --base64-output=decode-rows /tmp/mysqlbinlog9bk > /tmp/binlog.txt
引數解釋:
-v 可以看到具體的執行資訊;
--base64-output:把二進位制日誌檔案轉化格式;
l 檢視轉換後的檔案,可看到更新前後的內容。
### UPDATE `mysql`.`t`
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='zs' /* VARSTRING(40) meta=40 nullable=1 is_null=0 */
### @3='bj' /* VARSTRING(40) meta=40 nullable=1 is_null=0 */
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='zs1' /* VARSTRING(40) meta=40 nullable=1 is_null=0 */
### @3='bj' /* VARSTRING(40) meta=40 nullable=1 is_null=0 */
把超過引數long_query_time時間的所有sql語句記錄下來,5.7預設0.5;
檢視slow log位置:[mysql]>show variables like '%slow_query_log_file%';
檢視slow log的工具:percona-toolkit,參考p84
下載地址:
書中示例版本為3.0.3,官網當前最新版本為3.0.12,可下載對應系統的rpm包,或linux-generic通用版本,安裝包7.8M。
下載後解壓:
# tar -zxvf percona-toolkit-3.0.12_x86_64.tar.gz
透過如下命令生成慢SQL報告:
# pwd
/usr/local/percona-toolkit-3.0.12/bin
# ./pt-query-digest --since=24th /data/mysql/slow.log >slowquery.log
Invalid --since value at ./pt-query-digest line 13813.
安裝rpm包同樣的報錯;後續再研究。
記錄mysql 資料庫所有操作的sql,包含select和show,預設關閉。
檢視general log配置情況:
[mysql]>show variables like '%general%';
+------------------+---------------------------+
| Variable_name | Value |
+------------------+---------------------------+
| general_log | OFF |
| general_log_file | /data/mysql/localhost.log |
+------------------+---------------------------+
設定使重啟資料庫前生效:
[mysql]>set global general_log='ON';
日誌內容:
[root@localhost mysql]# tail -f -n 100 localhost.log
/usr/local/mysql/bin/mysqld, Version: 5.7.24-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
2018-11-06T06:14:26.924983Z 67 Query commit
2018-11-06T06:14:29.037015Z 67 Query set global general_log='ON'
2018-11-06T06:14:32.715302Z 67 Query show variables like '%general%'
2018-11-06T06:15:04.075786Z 67 Quit
log_output:全域性動態變數 ,決定全量日誌儲存方式,該引數也決定了slow log的儲存方式,可選:
l File,預設檔案儲存,建議;
l table:存放到新建表general_log表;
l NONE:不儲存;
資料庫審計(簡稱DBAudit)能夠實時記錄網路上資料庫活動,對資料庫操作進行細粒度審計的合規性管理,對遭受到的風險行為進行告警,對攻擊行為進行阻斷。透過對使用者訪問資料庫行為的記分析和彙報,用來幫助使用者事後生成合規報、事故追根溯源,同時加強內外部資料庫網路行為記錄,提高資料資產安全。
企業版才可使用審計功能。可使用第三方開源外掛libaudit_plugin.so在mysql5.7社群版中wa記憶體審計工作。參考p88
官方下載地址:
github:
書中版本:1.1.4-725 當前下載最新版本為1.1.6-784
l 解壓外掛包:
# unzip audit-plugin-mysql-5.7-1.1.6-784-linux-x86_64.zip
l 把解壓好的外掛複製到mysqllib庫的外掛目錄下:
[root@localhost lib]# pwd
/orasoft/audit-plugin-mysql-5.7-1.1.6-784/lib
[root@localhost lib]# cp libaudit_plugin.so /usr/local/mysql/lib/plugin/
l 資料庫命令列安裝外掛
INSTALL PLUGIN AUDIT SONANEM ‘libaudit_plugin.so’;
[mysql]>install plugin audit soname 'libaudit_plugin.so';
ERROR 1123 (HY000): Can't initialize function 'audit'; Plugin initialization function failed.
查github,當前版本支援到mysql 5.7.19,而當前資料庫版本為5.7.24,看來不能使用了。
資料庫日誌提示:2018-11-06T06:48:10.122754Z 5 [Note] McAfee Audit Plugin: Couldn't find proper THD offsets for: 5.7.24-log
下面按書記錄,有空再研究
l 檢視外掛功能是否開啟;
show variables like ‘%audit%’;
l 開啟外掛功能:
set global audit_json_file=1;
l 檢視日誌
mysql資料目錄下產生一個mysql-audit.json審計日誌,可查操作SQL的使用者名稱,IP。
主從複製中,從伺服器IO執行緒將主伺服器的binlog讀取並記錄到本地檔案relay log中,然後從伺服器SQL執行緒讀取應用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2218904/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql學習9:第四章:資料庫檔案--檔案MySql資料庫
- 建立資料庫檔案-日誌檔案-次要資料庫檔案資料庫
- MySQL資料庫中的日誌檔案---(4)配置日誌檔案輸出路徑MySql資料庫
- 資料庫引數檔案控制檔案日誌檔案資料檔案跟蹤檔案等8大檔案的字典資料庫
- mysql學習7:第四章:資料庫檔案--引數檔案和型別MySql資料庫型別
- oracle資料庫移動資料檔案、日誌檔案和控制檔案Oracle資料庫
- MySQL資料庫中的日誌檔案---(1)錯誤日誌MySql資料庫
- MySQL資料庫中的日誌檔案---(3)慢查詢日誌MySql資料庫
- MySQL資料庫中的日誌檔案---(2)普通查詢日誌MySql資料庫
- MySQL資料庫中常見的日誌檔案彙總!MySql資料庫
- 分析Oracle資料庫日誌檔案(1)Oracle資料庫
- 分析Oracle資料庫日誌檔案(2)Oracle資料庫
- 分析Oracle資料庫日誌檔案(3)Oracle資料庫
- 達夢資料庫DM8之刪除歸檔日誌檔案資料庫
- oracle中移動控制檔案、資料檔案、日誌檔案Oracle
- RMAN備份資料檔案+控制檔案+歸檔日誌
- 分析Oracle資料庫日誌檔案(三)EPOracle資料庫
- 分析Oracle資料庫日誌檔案(二)DOOracle資料庫
- 分析Oracle資料庫日誌檔案(一)HBOracle資料庫
- SQL Server 無日誌檔案附加資料庫SQLServer資料庫
- 分析Oracle資料庫日誌檔案(1)(轉)Oracle資料庫
- 分析Oracle資料庫日誌檔案(1) [轉]Oracle資料庫
- 【MySQL日誌】MySQL日誌檔案初級管理MySql
- MySQL資料庫中的日誌檔案---(5)系統日誌表的特點MySql資料庫
- window下刪除過舊的日誌檔案指令碼(如jboss的日誌檔案 資料庫的trace檔案)指令碼資料庫
- MySql資料庫——檔案MySql資料庫
- MySQL InnoDB日誌檔案配置MySql
- MySQL 日誌檔案 說明MySql
- mysql 資料儲存檔案及6類日誌MySql
- 在Oracle中移動資料檔案、控制檔案和日誌檔案Oracle
- mysql 主從日誌檔案mysql-bin檔案清除方法MySql
- oracle學習(4) -資料庫檔案Oracle資料庫
- redo日誌檔案學習筆記(一)筆記
- 丟失已歸檔日誌檔案下恢復資料庫資料庫
- 教你自動恢復MySQL資料庫的日誌檔案(binlog)MySql資料庫
- 達夢資料庫DM8之REDOLOG重做日誌檔案管理資料庫
- 【學習日記】oracle之表空間、資料檔案、控制檔案Oracle
- 日誌檔案