MySQL 效能、監控與災難復原

黄舟
發布: 2017-02-21 10:27:19
原創
1209 人瀏覽過



監控方案:

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;
登入後複製


SQL 指令

SHOW INDX FROM <table>    //显示指定表的索引基数统计信息
    SHOW PLUGINS                         //显示所有已知插件列表
    SHOW [FULL] PROCESSLIST      //显示系统上运行的所有线程。
    SHOW  [GLOBAL | SESSION] STATUS    //显示所有系统变量值
    SHOW  TABLE [FROM <db>]  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 &#39;<log_file>&#39;]  [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;

  @@global.emp_cache.key_buffer_size;

 在一個檔案中,使用mysql的設定檔的[mysqld]部分的init-file=指令執行該檔。

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

*&**&*
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!