本案例要求配置2臺MySQL服務器+1臺代理服務器,實現MySQL代理的讀寫分離:前端
使用4臺RHEL 7.2虛擬機,如圖-1所示。其中192.168.4.十、192.168.4.20分別做爲MySQL主、從服務器,是整個服務的後端;另外一臺 192.168.4.100做爲MySQL代理服務器,是直接面向客戶的服務前端;客戶機192.168.4.120用做訪問測試。mysql
圖-1sql
對比兩種方式的讀寫分離效果——數據庫
其中MySQL主、從複製結構的搭建參考前面的課程,這裏再也不贅述。vim
實現此案例須要按照以下步驟進行。後端
步驟一:部署mysql-proxy代理服務器緩存
1)安裝mariadb官方提供的maxscale軟件包服務器
修改配置文件:併發
分別在主、從數據庫服務器上添加受權用戶(只在主服務器受權便可 從服務器會自動同步):socket
2)啓動maxscale服務
步驟二:測試配置
1)在客戶端192.168.4.120上使用上邊受權用戶student 鏈接代理服務器192.168.4.100:
客戶端當前訪問的是從數據庫服務器,仍然可以插入紀錄。表示成功。
基於一臺普通版的MySQL服務器,執行下列操做:
實現此案例須要按照以下步驟進行。
步驟一:MySQL併發及鏈接控制
max_connections對應併發客戶端鏈接的數量,增長該值會增長 mysqld 要求的文件描述符的數量。若這個數值過小,可能會常常出現「too many connections」錯誤。好比 默認的數值是151,能夠將其改成1024。
1)查看當前已創建的鏈接數
2)查看當前的最大鏈接數限制
步驟二:MySQL緩存參數控制
當 Key_reads / Key_read_requests 較低時,可適當加大key_buffer_size的緩存值,以提升性能。而增大sort_buffer_size的值,能夠顯著提升ORDER和GROUP的響應速度。
1)查看key_read相關數值
2)查看當前的key_buffer_size緩存大小
3)查看當前的sort_buffer_size大小
4)查看檢索表記錄時的讀取緩存大小
緩存值read_buffer_size和read_rnd_buffer_size會影響SQL查詢的響應速度:
步驟三:MySQL線程重用和開表控制
分析「已打開表的數量/當前可緩存表的數量」,比值不超過95%就基本正常。
1)查看當前已打開、一共打開過多少個表
2)查看當前可緩存多少個打開的表
步驟四:MySQL調整示例:記錄慢查詢
1)調整my.cnf配置文件,啓用慢查詢
2)查看慢查詢日誌(mysqldumpslow工具)
3)瞭解與查詢相關的緩存選項
查看當前的查詢緩存大小:
查看當前的查詢緩存統計數據:
步驟五:關於MySQL狀態和相關變量的查看
1)查看服務器的相關狀態值(運行中動態變化)
使用SHOW GLOBAL STATUS語句,可結合LIKE條件作模糊過濾。
默認有400多個狀態值:
2)查看服務器的運行選項(通常爲靜態限制,可經過my.cnf文件配置,或SET修改)
使用SHOW VARIABLES語句,也可結合LIKE條件作模糊過濾。
默認也有400多個(接近500個)配置選項: