您好,登錄后才能下訂單哦!
下面一起來了解下組成MYSQL數(shù)據(jù)庫物理文件有哪幾部分,相信大家看完肯定會受益匪淺,文字在精不在多,希望組成MYSQL數(shù)據(jù)庫物理文件有哪幾部分這篇短內(nèi)容是你想要的。
物理文件組成
日志文件:錯誤日志,查詢?nèi)罩荆樵內(nèi)罩?,事?wù)日志,二進制日志
日志是 mysql 數(shù)據(jù)庫的覺要組成部分。日志文件中記錄珩 mysql 數(shù)據(jù)庫運行期間發(fā)生的變化,也就是說用來記錄 mysql 數(shù)據(jù)庫的客戶端連接狀況、 SQL 語句的執(zhí)行情況和錯誤信息
1.錯誤日志(error log)
錯誤日志功能默認是開啟的,存儲在mysql數(shù)據(jù)庫的數(shù)據(jù)目錄中。
錯誤日志文件通常名稱為hostname.err hostname表示云服務(wù)器主機名
錯誤日志信息也可以自己進行配置,通過log-error和log-warnings,前者是定義存儲位置后者是定義是否將警告信息也定義到錯誤日志中
注意,當首次安裝mysql5.7時初始密碼會保存在錯誤日志中
2.二進制文件(binlog)
用于記錄修改數(shù)據(jù)或有可能引起數(shù)據(jù)改變的mysql語句,井且記錄語句發(fā)生時間執(zhí)行時長,操作的數(shù)據(jù)等
可以通過 show global variables like '%log_bin%'; 進行查詢
在主配置文件中加入 log-bin=file_name 打開記錄功能,
MYSQL會將所有修改數(shù)據(jù)庫數(shù)據(jù)的query以二進制形式記錄到日志文件中,日志文件中還包括每一條query所執(zhí)行的時間,所消耗的資源,以及相關(guān)的事務(wù)信息
binlog的附加選項參數(shù)
“max_binlog_size” 設(shè)置binlog的最大存儲上限,一般設(shè)置為512M或1G,不可以超過1G當日志達到上限時mysql會重新創(chuàng)建一個日志并繼續(xù)開始記錄
binlog-do-db=db_name” 對某個db_name(數(shù)據(jù)庫)記錄binlog,
如果有了"binlog-do -db=db_name"參數(shù)的顯式指定,MySQL會忽略針對其他數(shù)據(jù)庫執(zhí)行的query, 而僅僅記錄針對指定數(shù)據(jù)庫執(zhí)行的query
"binlog-ignore-db=db_name"與"binlog-do-db=db_name"完全相反,它顯式指定忽略某個(db_name)數(shù)據(jù)庫的binlog記錄, 當指定了這個參數(shù)之后, MySQL會記錄指定數(shù)據(jù)庫以外所有的數(shù)據(jù)庫的binlog。
啟動binlog記錄后,mysql數(shù)據(jù)庫目錄下還會生成一個mysql-bin.index文件
主要功能是記錄所有Binary Log 的絕對路徑, 保證MySQL各種線程能夠順利的根據(jù)它找到所有需要的Binary Log文件
MYSQL復(fù)制主要有三種方式:
基于SQL語句的復(fù)制(statement-based replication, SBR),
基于行的復(fù)制(row-based replication, RBR),
混合模式復(fù)制(mixed-based replication, MBR)
對應(yīng)的,binlog的格式也有三種: STATEMENT, ROW, MIXED。
statenment模式(SBR)
每一條會修改數(shù)據(jù)的sql語句會記錄到binlog中,優(yōu)點是不需要記錄每一行的數(shù)據(jù)變化
減少了binlog日志量,節(jié)約IO,提高性能,缺點是在某些情況下master-slave中的數(shù)據(jù)不一致
row模式(RBR)
不記錄每條SQL語句的信息,僅記錄那條數(shù)據(jù)被修改了,改成什么樣子,缺點是會產(chǎn)生大量日志,日志暴漲
mixed模式(MBR)
混合模式,以上兩種模式混合使用,一般的復(fù)制使用statement模式保存binlog,對于statement模式無法復(fù)制的操作使用row模式保存binlog,mysql會自行判斷何時使用
“sync_binlog=10” 設(shè)定多久同步一次二進制日志到磁盤文件中 0表示不同步,1表示每條語句都同步
幾種查詢二進制日志信息的方法
show binlog events\G; 查看所有二進制信息
show bin log events in'mysql-bin.000001'\G; 查看指定的二進制信息
show binlog events in 'mysql-bin.000001'from 727; 從指定的事件位置開始
mysqlbinlog mysql-bin.00001 在命令行下查看
幾種刪除二進制日志信息的方法
purge binary logs to 'mysql-bin.000006'; 刪除'mysql-bin.000006'之前的二進制文件
reset master 刪除所有二進制文件并重新生成一個為進制文件
3.事務(wù)日志
事務(wù)日志 (InnoDB 特有的日志)可以幫助提高事務(wù)的效率。
使用事務(wù)日志, 存儲引擎在修改表的數(shù)據(jù)時只需要修改其內(nèi)存拷貝,再把修改行為記錄到持久在硬盤上的事務(wù)日志中,而不用每次都將修改的數(shù)據(jù)本身持久到磁盤。事務(wù)日志采用追加的方式,因此寫日志的操作是磁盤上一小塊區(qū)域內(nèi)的順序I/O, 而不像隨機I/O需要在磁盤的多個地方移動磁頭, 所以采用事務(wù)日志的方式相對來說要快得多。
事務(wù)日志持久以后,內(nèi)存中被修改的數(shù)據(jù)在后臺可以慢慢的刷回到磁盤。
4.慢查詢?nèi)罩?/p>
慢查詢?nèi)罩局杏涗浀氖菆?zhí)行時間較長的query,采用簡單的文本格式記錄方便查看
通過慢查詢?nèi)罩?,可以查找出哪些查詢語句的執(zhí)行效率很低,以便進行優(yōu)化
同樣也是在主配置中加入
“slow_query_log=1”開啟,
“slow_query_log_file=/usr/local/mysql/data/mysqld-slow.log”存儲位置
"long_query_time=1" 需要記錄的時間,
或者直接在數(shù)據(jù)庫中直接定義。
分析日志
進入慢查詢?nèi)罩敬娣拍夸浭褂胢ysqldumpslow分析
“mysqldumpslow mysqld-slow.log”
看完組成MYSQL數(shù)據(jù)庫物理文件有哪幾部分這篇文章后,很多讀者朋友肯定會想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。