原文:
MySQL性能、監控與災難恢復
監控方案:
? ? up.time ? ?http://www.uptimesoftware.com/ ? ?收費
? ? Cacti ? ? ? ?http://www.cacti.net/
? ? KDE System Guard(KSysGuard)?
? ? ? ? ? ? ? ? ? ? http://docs.kde.org/stable/en/kdebase-workspace/ksysguard/index.html
? ? Gnome System Monitor
? ? ? ? ? ? ? ? ? ? http://library.gnome.org/users/gnome-system-monitor/
? ? Nagios ? ?http://www.nagios.org/
? ? Shinken ?
http://www.shinken-monitoring.org/
? (個人覺得比nagios好用)
? ? Sun Management Center
? ? ? ? ? ? ? ? ? ? http://www.sun.com/software/products/sunmanagementcenter/index.xml
? ? MySQL Enterprise Monitor
? ? ? ? ? ? ? ? ? ? http://www.mysql.com/products/enterprise/monitor.html
? ? 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;
SQL 命令
? ? SHOW INDX FROM <table> ? ?//顯示指定表的索引基數統計信息
? ? SHOW PLUGINS ? ? ? ? ? ? ? ? ? ? ? ? //顯示所有已知插件列表
? ? SHOW [FULL] PROCESSLIST ? ? ?//顯示系統上運行的所有線程。
? ? SHOW ?[GLOBAL | SESSION] STATUS ? ?//顯示所有系統變量值
? ? SHOW ?TABLE [FROM <db>] ?STATUS ?//顯示給定數據庫的表的詳情
? ? SHOW [GLOBAL | SESSION] VARIABLES ?//顯示系統變量
? ? ????為了查看較少的信息,可使用 ?like '<pattern>' ?從句,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 count>]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //僅限制查看Slave上的中繼日志
? ? SHOW MASTER STATUS ? ? ? ? ? //顯示Master當前配置,顯示當前二進制日志文件,文件位置等
? ? SHOW SLAVE HOSTS ? ? ? ? ? ? ? ?//使用--report-host 選項顯示連接到Master的slave列表
? ? SHOW SLAVE STATUS ? ? ? ? ? ? ? //顯示復制中slave的系統狀態
? ??
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>
測量數據庫性能
? ? 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; ?查看所有進程信息
數據庫優化
? ? 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> set global emp_cache.key_buffer_size = 128*1024; //128K
? ? ? ? ? ? mysql> cache index salaries in emp_cache;
? ? ? ? ? ? mysql> set global emp_cache.key_buffer_size=0;
? ? ? ? ? ? #確認一個二級緩存是否存在
? ? ? ? ? ? mysql> select @@global.emp_cache.key_buffer_size;
? ? ? ? ? ? 重啟而不丟失二級緩存配置的方式:將配置語句保存在一個文件中,使用mysql的配置文件的[mysqld]部分的 init-file=<patch_to_file>命令執行該文件
MySQL 性能分析工具
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
