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>命令執行該文件。
來自:http://blog.csdn.net/hellyhe/article/details/8288696
來自:http://blog.csdn.net/hellyhe/article/details/8288696
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!