菜鳥學Linux 第077篇筆記 mysql logs
内容總覽
錯誤日志
一般查詢日志
慢查詢日志
二進制日志(重點)
中繼日志
事務日志
存儲引擎
日志系統
二進制日志 DML, DDL(任何引起或可能引起資料庫變化操作的日志)
複制,即時點恢複;
中繼日志 (中繼日志格式和二進制日志格式相同)
SHOW GLOBAL VARIABLES LIKE '%log%'; 檢視日志相關全局變量
錯誤日志記錄内容
伺服器啟動和關閉過程中的資訊
伺服器運作過程中的錯誤資訊
事件排程器運作一個事件時産生的資訊
在從伺服器上啟動從伺服器程序時産生的資訊
log_warnings
log_error
一般查詢日志(預設不開啟)
log_output={TABLE|FILE|NONE}
SELECT 查詢記錄
general_log
general_log_file
慢查詢日志 (隻是查詢時間比較長與一般查詢日志相同)
SHOW GLOBAL VARIABLES LIKE '%long%'; 指定慢查詢語句執行時長
log_slow_queries={YES|NO}
long_query_time
slow_query_log
slow_query_log_file
二進制日志
mysqlbinlog
可以重制 重新執行sql語句
二進制日志相關的全局變量
SHOW GLOBAL VARIABLES LIKE '%log%';
binlog_format 二進制日志檔案格式{statement|row|mixed}
log_bin {on|off} 是否啟用二進制日志(可以指定路徑,不指定則在資料目錄中)
binlog_cache_size 二進制日志緩沖大小預設32768
binlog_stmt_cache_size 二進制日志語句緩沖大小(不建議設定太大)
sql_log_bin={on|off} 使用者控制二進制日志資訊是否記錄進日志檔案
sync_binlog 0不同步 如果為其它資料表示以多長時間同步二進制日志檔案到硬碟
expire_logs_days 日志的過期天數 (是指的所有日志不隻是事務日志)
max_binlog_cache_size
max_binlog_size
max_binlog_stmt_cache_size
(此三條用來設定二進制日志檔案大小的上限,一般不用配置)
二進制日志格式
基于語句 statement
基于行 row
混合方式 mixed
二進制日志事件
産生的時間 starttime
相對位置 position
二進制日志檔案
索引檔案 (預設資料庫位置下 mysql-bin.index檔案 )
二進制日志檔案 (預設資料庫位置下 mysql-bin.0000001-....)
(建議和資料庫存儲位置分開,最好硬碟級區分 基于資料可靠性,和性能考慮)
檢視目前所擁有的二進制日志檔案
SHOW BINARY LOGS;
檢視目前使用的二進制日志檔案
SHOW MASTER STATUS;
檢視二進制檔案裡記錄的内容
SHOW BINLOG EVENTS IN 'mysql-bin.000005';
SHOW BINLOG EVENTS IN 'mysql-bin.000005' FROM 205; 指定從某個位置顯示
SHOW BINLOG EVENTS IN '二進制日志檔案名' [FROM pos];
手動讓日志實作滾動
FLUSH LOGS;
SHOW MASTER STATUS;
重新開機mysql伺服器也可以實作日志滾動
清除某個二進制日志檔案之前的二進制日志檔案
PURGE { BINARY | MASTER } LOGS {TO 'log_name' | BEFORE datetime_expr};
PURGE BINARY LOGS TO 'mysql-bin.000002';
即時點還原
當伺服器出現故障時,雖然mysql有備份,但未必是故障時間點正好備份了資料
是以當mysql伺服器出現故障時隻可以還原故障之前某個備份時間點的資料,而備份
點之後的資料要想恢複就需要依靠二進制日志所存儲的資訊來還原到故障發生時的
資料庫狀态,需要手動去查找備份出備份時間點之後的二進制日志,将其導入資料服務
器裡重新執行一次操作指令即可恢複到故障點時的資料伺服器狀态,此流程就叫做
mysqlbinlog (指令行指令)
--start-datetime
--stop-datetime
--start-position
--stop-position
顯示二進制日志檔案全部内容
mysqlbinlog mysql-bin.000004
顯示指定時間的二進制日志檔案内容
mysqlbinlog --start-datetime='2017-01-11 16:48:35'
--stop-datetime='2017-01-12 01:21:52' mysql-bin.000004
(此為一行指令)
如果不指定結束時間則預設顯示到檔案尾部
将上述指令進行重定向寫到某檔案并以.sql結尾 則在進入資料庫後
将此檔案導入指令,即可實作即時點還原(這裡隻作解釋之後有詳細解釋)
顯示指定位置的二進制日志檔案内容
與時間類似這裡不再講解,隻需要把指令datetime 換成position
=号後改為位置即可
從主伺服器的二進制日志檔案中複制而來的事件,并儲存為的日志檔案
此日志檔案會在從伺服器裡再執行一次複制過來的事件
IOPS
IO 100, 200
SSD 500, 1000,
事務性存儲引擎用于保證原子性、一緻性、隔離性和持久性
ACID (Atomicity Consistency Isolation Durability)
送出的事務要同步到資料硬碟
未送出的事務要撤消其事務操作
innodb_flush_log_at_trx_commit = {0|1|2}
0 每秒從緩存同步到事務日志一次(到核心時不會緩存,直接同步硬碟)
1 每事務送出便同步,并執行硬碟flush操作;(預設為1)
2 每事務送出同步,但不執行硬碟flush操作;
innodb_log_buffer_size
記憶體緩存大小
innodb_log_file_size
事務日志大小(不建議設定太大)
innodb_log_files_in_group
事務日志組檔案個數 事務日志檔案可以有多個,當一個寫滿後會切換到下一個事務
日志檔案,被切換的事務日志将同步操作到資料硬碟
innodb_log_group_home_dir
事務日志存放目錄
innodb_mirrored_log_groups
事務日志鏡像
MyISAM
不支援事務
隻支援表鎖
不支援外鍵
支援B樹索引,FULLTEXT索引,空間索引
支援表壓縮
資料檔案
.frm 表格式
.MYD 資料檔案
.MYI 索引檔案
InnoDB
事務
行級鎖
支援B樹索引,聚簇索引,自适應hash索引
表空間,raw磁盤裝置(裸裝置)
.ibd 表空間
設定每表一個表空間 SHOW GLOBAL VARIABLES LIKE 'innodb%';
innodb_file_per_table=on
MRG_MYISAM
支援将MYISAM邏輯上合起來顯示
CSV
将表存儲為文本檔案(資料庫導入導出)
ARCHIVE
歸檔,将表歸檔壓縮存放
MEMORY
将表存儲到記憶體裡(讀寫速度快,安全性相對低)
BLACKHOLE
黑洞存儲引擎(以後再詳細了解)
存儲引擎也稱之為表類型,一個庫裡邊表的存儲引擎可以不一樣,
但是不建議混合使用存儲引擎
(如果一個表支援事務一個表不支援,當撤消操作時 你懂得)
本文轉自Winthcloud部落格51CTO部落格,原文連結http://blog.51cto.com/winthcloud/1891583如需轉載請自行聯系原作者
Winthcloud