mysql數據庫的各種類型的文件簡述

1.參數文件:
     1)參數
        數據庫參數其實就是一個鍵值對,比如innodb存儲引擎中的innodb_buffer_pool_size,將這個參數設爲1G,則鍵是innodb_buffer_pool_size,值爲1G,一般通過show variables來查看數據庫中的所有參數。
     2)參數類型
        mysql數據庫中的參數可以分爲兩類,分別是動態參數(可以在mysql實例運行過程中進行修改,通過set命令進行修改,有些參數的只能在當前會話進行修改,有的參數可以在整個生命週期修改,有的參數可以既可以在整個生命週期又可以在當前會話修改生效)和靜態參數(在整個實例生命週期內不得進行修改),
2.日誌文件:
   mysql日誌文件記錄了影響mysql數據庫的各種類型活動,mysql數據庫中常見的日誌文件有:
  1).錯誤日誌:
        錯誤日誌文件對mysql的啓動、運行、關閉過程進行了記錄,該文件不僅記錄了錯誤信息,還記錄了一些警告信息正確信息,用戶可以通過show variables like'log_error'來定位該文件,有些時候用戶可以直接從錯誤日誌文件中得到優化的幫助,因爲有些警告很好的說明了問題所在,
 2)慢查詢日誌:
       慢查詢日誌可以直接定位到存在問題的sql語句,從而進行sql語句層面的優化,比如可以在mysql啓動時設置一個閾值(通過long_query_time來設定,默認爲10秒),將運行時間超過該值的所有sql語句都記錄到慢查詢日誌中,從而可以觀察到是否有sql語句可以進行優化,默認mysql數據庫並不啓動慢查詢日誌。可以通過將參數log_slow_queries設置爲on來開啓,另外一個參數log_queries_not_using_indexes(打開則設置爲on),如果sql語句沒有使用索引,也會記錄到慢查詢日誌中,mysql5.6.5版本開始還有一個參數log_throttle_queries_not_using_indexes,用來表示每分鐘允許記錄到slow log的且沒有使用索引的sql語句次數,默認爲0,表示沒有限制,從而導致slow log文件的帶下不斷增加,因此可以通過這個參數進行配置,
   當有很多的sql語句被記錄到文件中,爲了是用戶查看並分析該文件更加直觀,使用數據庫提供的mysqldumpslow命令,例如如果想要查看執行時間最長的10條語句,可以運用mysqldumpslow -s al -n 10 david.log(其中david.log是文件名),從mysql5.1開始可以將慢查詢的日誌記錄放在一張表中,名爲slow_log,通過參數log_output(動態的,並且是全局的)指定慢查詢的輸出方式,默認爲file,設爲table,則就可以查看slow_log表了,innosql版本加強了對於sql語句的捕獲方式,增加了邏輯讀取(包括磁盤和緩衝池)和物理讀取(指從磁盤進行io讀取的次數),
3)查詢日誌:
         查詢日誌記錄了所有對mysql數據庫請求的信息,無論這些請求是否得到了執行,默認文件名爲主機名.log
4) 二進制日誌(binary  log):
        二進制文件記錄了對mysql數據庫執行更改的所有操作,但是不包括select 、show這類操作 ,因爲這類操作對數據本身並沒有修改,如果想要記錄該操作,只能使用查詢日誌,通過配置參數log-bin [=name]啓動二進制日誌,不指定name,則默認日誌文件名爲主機名,後綴爲二進制日誌的序列號,所在路徑爲數據庫所在目錄。
      二進制日誌主要包括以下幾個作用:
          恢復:例如在一個數據庫全備文件恢復後,可以通過二進制日誌進行point-in-time的恢復
          複製:通過複製和執行二進制日誌使一臺遠程的mysql數據庫與一臺mysql數據庫進行實時同步。
          審計:用戶可以通過二進制日誌中的信息進行審計,判斷是否有對數據庫進行注入的攻擊。
   以下配置文件的參數影響着二進制日誌記錄的信息和行爲:
       max_binlog_size:指定了單個二進制日誌文件的最大值,如果超過該值,則產生一個新的二進制文件,後綴名+1,
       binlog_cache_size:當使用事務的表存儲引擎時,所有未提交的二進制日誌會被記錄到一個緩存中去,等該事務提交時直接將緩衝的二進制日誌寫入二進制日誌文件,而該緩衝的大小有 binlog_cache_size決定,默認爲32k,而且其是基於會話的,當一個線程開始一個事務,mysql會自動分配一個大小爲binlog_cache_size的緩存。
       sync_binlog:默認情況下,二進制日誌並不是在每次寫的時候同步到磁盤,因此,當數據庫所在系統發生宕機,可能會有最後一部分數據沒有寫入二進制日誌文件中,這會給恢復和複製帶來問題,參數sync_binlog=[N]表示每寫緩衝多少次就同步到磁盤,n=1表示以同步寫磁盤的方式來寫二進制日誌,默認爲0
       binlog-do-db和binlog-ignore-db:表示需要寫入或忽略寫入哪些庫的日誌,默認爲空,表示需要同步所有庫的日誌到二進制日誌
       binlog_format:  
         影響記錄二進制日誌的格式,mysql5.1版本之前沒有這個參數,所有二進制文件的格式都是基於sql語句的級別的,mysql5.1版本之後引入這個參數,其可設的值爲statement(記錄日誌的邏輯sql語句)、row(增加記錄表的行更改情況)、mixed(默認纔有statement格式進行二進制日誌文件的記錄,在一些情況下會使用row格式).  
      這個參數是動態參數,可以在數據庫運行環境下進行修改,設置爲row,可以爲數據庫的回覆和複製帶來更好的可靠性,但是會增加二進制文件的大小,對磁盤要求會增加

    要想查看二進制日誌文件的內容,必須使用mysql提供的狗根據mysqlbinlog,但是這個時候採用row格式,會使得mysqlbinlog後的結果不可讀,只要加上-v或 -vv就可以看到具體的執行信息了,-vv會比-v顯示更新的類型,
3.套接字文件:
       在unix系統下本地連接mysql可以採用unix域套接字方式,這時就需要一個套接字文件,一般在/tmp目錄下,名爲mysql.sock
4.pid文件:
      當mysql實例啓動時,會將自己的進程id寫入一個文件中,即pid文件,由參數pid_file控制,默認位於數據庫目錄下,文件名爲主機名.pid。
5.表結構定義文件:
       因爲mysql插件式存儲引擎的體系結構的關係,mysql數據的存儲是根據表進行的,每個表都有與之對應的文件,但是不管是用何種引擎,mysql都有一個以frm爲後綴名的文件,記錄了該表的表結構定義,frm還用來存放視圖的定義,例如用戶創建了一個v_a視圖,對應產生一個v_a.frm文件。用來記錄視圖的定義。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章