mysql架構組成

什麼是mysqlmysql

        mysql有mysqld AB公司自主研發,是最流行的開發源代碼的數據庫管理系統之一,它同時也是一個支持多線程高併發多用戶的關係型數據庫管理系統
web

        mysql數據庫以其簡單高效可靠的特色。
sql

    mysql與其餘數據庫的簡單比較
數據庫

        功能比較:字段類型支持方面,另外一個著名的開源數據庫PostGreSQL支持的類型是最完整的,而oracle和其餘一些商業數據庫,好比DB2,Sybase等,較mysql來講也要相對少一些。事務支持方面,雖然mysql本身的存儲引擎沒有提供,可是已經經過第三方插件式存儲引擎innodb實現了sql 92標準所定義的四個事務隔離級別的所有。在可編程支持方面,mysql和其餘數據庫相比仍是必定的差距,雖然最新版的mysql已經開始提供一些簡單的可編程支持。如開始支持procedure,function,trigger等。可是所支持的功能仍是比較有限,和其餘幾大商用數據庫管理系統相比,還存不足。編程

        易用性比較:系統易用性方面來比較,每個使用過mysql的用戶都可以明顯地感受出mysql在這方面與其餘通用數據庫管理系統之間的優點所在。尤爲相對於一些大型的商業數據庫管理系統如oracle,DB2以及sybase來講,對於普通用戶來講,操做的難易程度明顯不處於一個級別,mysql一直都奉行簡單易用的原則。從安裝方面來講,mysql安裝包僅僅只有100MB左右,與幾大商業數據庫徹底不在一個數量級,安裝難易程度也要逼oraccle等商業數據庫簡單不少,不管是經過已經編譯好的二進制分發包仍是源碼編譯安裝。數據建立比較,mysql僅僅只須要一個簡單的create datebase命令,便可在瞬間完成建庫的,而oracle建立一個數據庫簡直就是一個很是龐大的工程
vim

        性能比較:僅僅只有oracle數據庫可以與其一較高下
安全

        可靠性:當前最火的facebook這樣大型的網站都是使用mysql數據庫,能夠看出,mysql在穩定可靠性方面,並且排在全球10位的大型網站裏面,大部分都是部分業務是運行在mysql數據庫環境上。mysql數據庫在發展過程當中一直有本身的三個原則:簡單,高效,可靠。
服務器

    mysql的主要適合場景
session

        web網站系統
多線程

            是mysql最大的客戶羣,由於mysql數據庫的安裝配置很是簡單,使用過程維護也不像大型商業數據庫管理系統那麼複雜,並且性能出色。重要的一個緣由是mysql是開放源代碼的,能夠徹底無償使用。

        日誌記錄系統

            mysql數據庫的插入和查詢性能都很是的高效,若是設計地較好,在使用myLSAM存儲引擎的時候,二者能夠作到互不鎖定,達到很高的併發性能。因此對須要大量的插入和查詢日誌記錄的系統來講。好比處理用戶的登陸日誌,操做日誌等是很是適合的應用場景

        數據倉庫系統

            隨着21世紀的數據倉庫數據量飛速增加,咱們須要的存儲空間愈來愈大,數據量的不斷增加,使數據的統計分析變得愈來愈低效,也愈來愈困難。仍是有幾個能夠解決的思路:一是採用昂貴的高性能主機以提升計算性能,用高端存儲設備提供i/o性能,可是成本很是高:二是經過將數據複製到多臺使用大容量硬盤的廉價pc server上,以提升總體計算性能和i/o能力,效果尚可,存儲空間有必定的限制,成本低廉:三是經過將數據水平拆分,使用多臺廉價的pc server和本地磁盤來存放數據,每臺機器上面都只有全部數據的一部分,解決了數據量的問題,全部pc server一塊兒並行計算,也解決了計算能力問題,經過中間代理程序調配各臺機器的運算任務,便可以解決計算性能問題又能夠解決i/o性能問題,成本也很低廉。第二和第三的實現,mysql都有較大的優點,經過mysql的簡單複製功能,能夠很好的將數據從一臺主機複製到另外一臺,在internet也能夠複製。固然,其餘的數據庫一樣也能夠作到,不是隻有mysql有這樣的功能,可是mysql是米那份,其餘數據庫大多數都是按照主機數量或cpu數量來收費,基本上全部數據庫系統都能實現,可是其高昂的成本並非每個公司都能承擔。

    mysql架構組成

        日誌文件:錯誤日誌,查詢日誌,慢查詢日誌,事務日誌,二進制日誌

            日誌是mysql數據庫的重要組成部分日誌文件中記錄着mysql數據庫運行期間發生的變化,也就是說用來記錄mysql數據庫的客戶端鏈接情況,sql語句的執行狀況和錯誤信息等。當數據庫意外損壞時能夠經過查看日誌文件找出錯誤的緣由,而且還能夠經過日誌文件進行數據恢復。

            錯誤日誌:ErrorLog

                在myslq數據庫中,錯誤日誌功能是默認開啓的,錯誤日誌默認存儲在mysql數據庫的數據目錄中,錯誤日誌文件一般的名稱爲hostname.err。其中,hostnmae表示服務器主機名。

                錯誤日誌信息能夠本身進行配置,錯誤日誌所記錄的信息是能夠經過log-error和log-warnings來定義的,其中log-warnings是定義是否將警告信息也定義至錯誤日誌中,默認狀況下錯誤日誌大概記錄服務器啓動和關閉過程當中的信息,服務器容許過程當中的錯誤信息,事件調度器容許一個事件時產生的信息,在服務器上啓動服務器進程時產生的信息。

                    mysql有不少系統變量能夠設置,系統變量設置不一樣,會致使系統容許狀態不一樣。

                    查看系統設置:

                        show [global | session] variables [like_or_where]

                        show variables: shows the values of mysql system variables

                    查看容許狀態:

                        show [global | session] status [linke_or_where]

                        show status: provides server status information

                    如何修改系統配置

                        配置文件設置my.cnf

                            binlog_cache_size=1M

                        set global binlog_cache_size=1048576

                    通常而言,日誌級別的定義沒有會話變量都只是在全局級別下進行定義

                    查看錯誤日誌的狀態:show global variables like '%log_error%';

                        log_error定義爲錯誤日誌的文件路徑

                        log_error_verbosity

                    更改錯誤日誌位置可使用log-error來設置形式

                        vim /etc/my.cnf

                        log-error=/usr/local/mysql/data/mysqld.err

                        tail /usr/local/mysql/data/mysqld.err

                    爲了方便維護須要,有時候會但願將錯誤日誌中的內容作北方並從新開始記錄,這時候,能夠利用ysql的flush logs命令來告訴mysql備份舊日誌文件並生成新的日誌文件,北方文件名以.old結尾

                    刪除錯誤日誌

                        mysql5.5.7以前:數據庫管理員能夠刪除很長時間以前的錯誤日誌,以包子mysql服務器上的硬盤空間。mysql數據庫中,可使用mysqladmin命令開啓新的錯誤日誌。mysqladmin命令語法:mysqladmin -u root -p    flush-logs也能夠登陸mysql數據庫中使用flush logs語句來開啓新的錯誤日誌。

                    在mysql5.5.7以後:服務器將關閉此項功能,只能使用重命名原來的錯誤日誌文件,手動沖洗日誌建立一個新的

        二進制日誌:binary Log & Binary Log index

            二進制日誌,也就是咱們常說的binlog,也是mysql server中最重要的日誌之一,主要用於記錄修改數據或者可能引發數據改變的mysql語句,而且記錄了語句發生時間,執行時長,操做的數據等等。因此說經過二進制日誌能夠查詢mysql數據庫中進行了哪些變化,通常大小體積上限爲1G。

            當咱們經過「log-bin=file_name」打開了記錄的功能以後,mysql會將全部修改數據庫數據的query以二進制形式記錄到日誌文件中,日誌中並不只限於query語句這麼簡單,還包括一條query所執行的時機,所消耗的資源,以及相關的事務信息,因此binlog是事務安全的

            和錯誤日誌同樣,binlog記錄功能一樣需呀「log-bin=file_name」參數的顯式指定才能開啓,若是未指定file_name,則會在數據目錄下記錄爲mysql-bin.******

                查看二進制開啓狀態

                    show global variables like '%log_bin%';

                variable_name                value

                log_bin                      ON

                log_bin_basename             /usr/local/mysql/data/mysql-bin

                log_bin_index                /usr/local/mysql/data/mysql-bin.index

                log_bin_trust_function_creators OFF

                log_bin_use_v1_row_events    OFF

                binlog還有其餘一些附加選項參數:

                    「max_binlog_size」設置binlog的最大存儲上限,通常設置爲512或1G,通常不能超過1G當日志達到上限是,mysql會從新建立一個日誌開始繼續記錄,不過偶爾也有超過設置的binlog產生,通常都是由於即將達到上限是,產生了一個較大的事務,爲了保證事務安全,mysql不會將同一個事務分開記錄到兩個binlog中

                    「binlog-do-db_name」參數明確告訴mysql,須要對某個數據庫記錄binlog,若是有了「binlog-do-db=db_name」參數的顯示指定,mysql會忽略對其餘數據庫執行的query,而僅僅記錄針對數據庫執行的query。

相關文章
相關標籤/搜索