2018/09/11《塗抹MySQL》【MySQL數據庫結構】學習筆記(五)
推薦一首歌
- 《往後余生》王貳浪
發現自己每天就聽這麽幾首歌
讀
第七章《MySQL的數據結構》
總結
1:慢查詢日誌
- SQL 完成查詢並完成對於鎖資源的釋放之後,msqld 會將符合條件的SQL寫入慢日誌。因此慢日誌可能和執行順序不一樣。
- 主要參數
- slow_query_log 是否輸出慢查詢日誌 1為輸出/0為關閉
- slow_query_log_file 指定日誌文件路徑和文件名
- log_query_time 設定慢查詢日誌時間闕值,單位/s,默認為10s。
- log_queries_not_using_indexes
- 具體的配置可以查看之前的一篇文章
- 學習計劃 mysql 中的慢日誌查詢
2:普通查詢日誌(輸出所有SQL)
- general_log 是否輸出日誌
- general_log_file 定義日誌的存儲路徑
3:在 MySQL 中,有哪些二進制?
- 兩個比較重要的概念
- 二進制日誌( Binary Log ) 記錄數據庫的修改事件
- 二進制日誌文件( Binary Log File ) 保存數據庫中修改事件的文件
4:二進制日誌的作用是什麽呢?
- 二進制日誌的兩個重要作用
- 主從復制
- 故障恢復
5:如何開啟二進制日誌?
- log_bin 是否開啟二進制日誌功能(默認的話是不啟用的)
- 在開啟時,主要註意,需要配置 server-id 同時 關閉 bind-address 的默認端口綁定
- max_binlog_size 來指定日誌文件大小(當達到指定大小時,會生成新的日誌文件)
- 對於非事務來說,語句執行之後會立即寫入二進制日誌中
- 對於事務來說,在收到更新操作後(CURD),會被緩存起來,直到收到 COMMIT ,才會將整個事務寫入二進制文件中。
- 在處理事務時,會通過 binlog_cache_size
- max_binlog_cache_size 來指定事務可以使用的最大緩存區,如果大於這個,事務會報錯並回滾(最小為4096)
6:二進制日誌是時時同步的麽?
- 同 Redis 的 RDB 一樣,二進制日誌並不是時時同步到磁盤的
- sync_binlog (1s安全級別最高,同時也是最慢的設置)
- 在設置為1(秒)的情況下,也可能出現數據丟失的情況。
- 例如在 Innodb 下,操作已經寫入二進制日誌,但是還未寫入提交,此時數據庫崩潰,當數據庫重啟時,必然造成數據的回滾造成丟失。
- 為了解決這種問題,提供了 innodb_support_xa 設置該參數,啟動分布式的事務支持,確保二進制日誌和 Innodb 的數據文件同步
2018/09/11《塗抹MySQL》【MySQL數據庫結構】學習筆記(五)