MySQL 性能、監控與災難恢復

監控方案:

up.time????http://www.php.cn/????收費  ????Cacti????????http://www.php.cn/  ????KDE?System?Guard(KSysGuard)?  ????????????????????http://www.php.cn/  ????Gnome?System?Monitor  ????????????????????http://www.php.cn/  ????Nagios????http://www.php.cn/  ????Shinken??http://www.php.cn/??(個人覺得比nagios好用)  ????Sun?Management?Center  ????????????????????http://www.php.cn/  ????mysql?Enterprise?Monitor  ????????????????????http://www.php.cn/

? ? Linux和UNIX系統監控工具

ps???????????系統進程  ????????top?????????cpu使用率排序的活動進程  ????????vmstat????顯示分頁、內存、塊傳輸、cpu活動相關  ????????uptime???顯示系統運行時間及1、5、15分鐘系統平均負載  ????????free?????????顯示內存使用率  ????????iostat??????顯示平均磁盤活動和處理器負載????centos:?yum?install?sysstat  ????????sar???????????系統活動報告、允許收集和報告各種系統活動  ????????pmap??????顯示各種進程分別占用內存情況  ????????mpstat????多處理器系統的cpu使用率????centos:?yum?install?sysstat  ????????netstat????網絡活動  ????????cron?????????定時進程執行系統(計劃任務)

設置、讀取系統變量

SHOW?[GLOBAL?|?SESSION]?VARIABLES;  ????SET?[GLOBAL?|?SESSION]??<variable_name>?=?<value>;  ????SET?[@@global.?|?@@session.?|?@@]??<variable_name>=<value>;  ????SHOW?STATUS;  ????SHOW?SESSION?STATUS;  ????SHOW?GLOBAL?STATUS;</value></variable_name></value></variable_name>

SQL 命令

SHOW?INDX?FROM?
????//顯示指定表的索引基數統計信息 ????SHOW?PLUGINS?????????????????????????//顯示所有已知插件列表 ????SHOW?[FULL]?PROCESSLIST??????//顯示系統上運行的所有線程。 ????SHOW??[GLOBAL?|?SESSION]?STATUS????//顯示所有系統變量值 ????SHOW??TABLE?[FROM?]??STATUS??//顯示給定數據庫的表的詳情 ????SHOW?[GLOBAL?|?SESSION]?VARIABLES??//顯示系統變量

? ? ????為了查看較少的信息,可使用 ?like ‘‘ ?從句,like 語句中可使用標準MySQL正則表達式符號和控制符

SHOW?ENGINE?<engine_name>?LOGS????//顯示指定存儲引擎的日志信息  ????SHOW?ENGINE?<engine_name>?STATUS?//顯示指定存儲引擎狀態信息  ????SHOW?ENGINES????????????????????????//顯示所有可用的存儲引擎的列表及狀態  ????SHOW?BINARY?LOGS????????????????//顯示服務器二進制LOG列表  ????SHOW?RELAYLOG?EVENTS?[IN?'<log_file>']??[FROM?<pos>]??[LIMIT?[<offset>,?]?<row>]  ????????????????????????????????????????????????????????//僅限制查看Slave上的中繼日志  ????SHOW?MASTER?STATUS???????????//顯示Master當前配置,顯示當前二進制日志文件,文件位置等  ????SHOW?SLAVE?HOSTS????????????????//使用--report-host?選項顯示連接到Master的slave列表  ????SHOW?SLAVE?STATUS???????????????//顯示復制中slave的系統狀態</row></offset></pos></log_file></engine_name></engine_name>

? ??

MySQL GUI工具

MySQL?Administrator  ????MySQL?Query?Browser  ????MySQL?Migration?Toolkit????//用于自動從其他數據庫系統上遷移數據

? ??

第三方工具

MySAR?系統活動報告  ????mytop????監控線程統計信息和Mysql常規性能統計信息  ????innotop???用于監控InnoDB性能和MySQL服務器  ????MONyog??(MySQL?Monitor?and?Advisor)?mysql監控工具,主動監控方案  ????MySQL?Benchmark套件?MySQL基準測試  ????????./run-all-tests?--server=mysql?--cmp=mysql?--user=root?--socket=<socket></socket>

測量數據庫性能

EXPLAIN???分析關于如何執行SELECT語句的信息  ????ANALYZE?[?LOCAL?|??NO_WRUTE_TO_BINLOG?]?TABLE????  ????????#[?LOCAL?|??NO_WRUTE_TO_BINLOG?]?可防止命令寫入二進制日志。  ????SHOW?INDEX?FROM??TABLE  ????OPTIMIZE??[?LOCAL?|??NO_WRUTE_TO_BINLOG?]?TABLE?<table_list>  ????????#重構一個或多個表的數據結構,整理存儲空間  ????SHOW?FULL?PROCESSLIST;??查看所有進程信息</table_list>


數據庫優化

? ? 1、謹慎而有效的使用索引

? ? 2、使用規范化(范式),但不要過頭

? ? 3、使用正確的存儲引擎

? ? ? ? ? ? alter table t1 ENGINE=MEMORY;

提高性能的最佳實踐

? ? 1、一切都很慢(檢查問題)

? ? ? ? * 檢查硬件

? ? ? ? * 改善硬件環境(如添加硬盤)

? ? ? ? * 考慮將數據遷移到獨立的磁盤上

? ? ? ? * 檢查操作系統配置是否正確

? ? ? ? * 考慮將有些應用遷移到其他服務器上

? ? ? ? * 考慮可以向外擴展的復制

? ? ? ? * 優化服務器性能

? ? 2、慢查詢

? ? ? ? * 規范化數據庫模式

? ? ? ? * 使用EXPLAIN識別丟失的或不正確的索引

? ? ? ? * 使用benchmark() 函數測試部分查詢

? ? ? ? * 考慮重寫查詢

? ? ? ? * 對標準查詢使用視圖

? ? ? ? * 啟用Query Cache

? ? 3、慢應用

? ? ? ? * 開啟 Query Cache

? ? ? ? * 考慮并優化存儲引擎

? ? ? ? * 確認是否是服務器或操作系統的問題

? ? ? ? * 定義應用程序的基準,并將它與已知基準比較

? ? ? ? * 檢查內部(在應用程序 內部編寫的)查詢,并最大化他們的性能

? ? ? ? * 分而治之——一次只檢查一個部分

? ? ? ? * 使用劃分類分散數據

? ? ? ? * 檢查各個分區的索引

? ? 4、慢復制

? ? ? ? * 確保網絡運行狀況最佳

? ? ? ? * 確保服務器配置正確

? ? ? ? * 優化數據庫

? ? ? ? * 限制 Master 的更新

? ? ? ? * 將數據讀取劃分到多個Slave中

? ? ? ? * 檢查Slave 的復制延遲

? ? ? ? * 定期維護日志(二進制日志和中繼日志)

? ? ? ? * 在帶寬有限的情況下,使用壓縮

? ? ? ? * 使用包容性和排他性日志選項,最小化復制內容

數據引擎的優化和監控

? ? MyISAM實用工具

? ? ? ? * myisam_ftdump: 顯示全文索引信息

? ? ? ? * myisamchk : 執行MyISAM 表的分析(只能在脫機狀態使用)

? ? ? ? * myisamlog : 查看MyISAM 表的更改日志

? ? ? ? * myisampack:壓縮表以減少存儲量

? ? Key Cache

? ? ? ? 1、預加載Key Cache

? ? ? ? ? ? #將salary表的索引加載到key cache中,ignore leaves: 表明只加載索引的非葉子節點,可通過修改表的方式從Key cache中移除相關索引

????????????mysql> load index into cache salaries ignore leaves;

? ? ? ? 2、使用多個Key Cache

? ? ? ? ? ? #使用耳機主緩存

mysql&gt;?set?global?emp_cache.key_buffer_size?=?128*1024;?//128K  ????????????mysql&gt;?cache?index?salaries?in?emp_cache;  ????????????mysql&gt;?set?global?emp_cache.key_buffer_size=0;

? ? ? ? ? ? #確認一個二級緩存是否存在

? ? ? ? ? ? mysql> select @@global.emp_cache.key_buffer_size;

? ? ? ? ? ? 重啟而不丟失二級緩存配置的方式:將配置語句保存在一個文件中,使用mysql的配置文件的[mysqld]部分的 init-file=命令執行該文件。

以上就是MySQL 性能、監控與災難恢復的內容,更多相關內容請關注PHP中文網(www.php.cn)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享