原文: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 性能分析工具

MySQL性能、监控与灾难恢复的更多相关文章

  1. MySQL 性能监控 4 大指标

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的 4 大指标. 文章系国内 ITOM 管理平台 OneAPM 编译呈现.    MySQL 是什么? MySQL  ...

  2. MySQL 性能监控4大指标——第二部分

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分介绍了前两个指标:查询吞吐量与查询执行性能.本文将继续介绍另两个指标:MySQL 连接与缓冲池 ...

  3. MySQL 性能监控4大指标——第一部分

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分将详细介绍前两个指标: 查询吞吐量与查询执行性能.文章系国内 ITOM 管理平台 OneAPM ...

  4. Mysql性能监控可视化

    前言 ​ 操作系统以及Mysql数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或Mysql数据库的性能瓶颈,镜像你在Linux系统上使用top.i ...

  5. mysql性能监控相关

    目录 一,获取mysql用户下的进程总数 二,主机性能状态 三,CPU使用率 四,磁盘IO量 五,swap进出量[内存] 六,数据库性能状态 七.querylog 八.mysqladmin的exten ...

  6. mysql性能监控软件pmm

    具体配置操作步骤:1.在vmware或者virtualbox上安装centos镜像,可以选择阿里巴巴的镜像,下载速度快 centos7 修改yum源为阿里源,某下网络下速度比较快 首先是到yum源设置 ...

  7. Mysql性能监控项及sql语句

    推荐一款mysql监控软件MONyog 1.查询缓存: mysql> show variables like '%query_cache%'; 2.缓存在Cache中线程数量thread_cac ...

  8. Mysql 性能监控及调优

    死锁概念: 两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象 1.监控死锁(innotop): (1) 启用 innodb_status_file 在/etc/my.cnf添加如 ...

  9. myawr : mysql性能监控

    myawr以mysql instance 为单位,每隔一段时间进行采样,然后把数据保存到数据库,以便分析.目前myawr脚本收集的信息包括5个部分: 1 系统方面的:负载.cpu.io.网络.swap ...

  10. Mysql性能监控

    show processlist; show global variables like 'max_allowed_packet'; // QPS计算(每秒查询数)show global status ...

随机推荐

  1. 从后台绑定数据到ligerui 的comboBox下拉框组件

    这次来记录一下ligerUI的comboBox下拉框组件,ligerUI的API里也有相关描写叙述,上面都是前台写死数据,然后显示在组件中,我这次要说的是将后台的数据绑定到下拉框组件中,废话不多说. ...

  2. Net分布式系统

    Net分布式系统 Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用 摘要: 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡, ...

  3. 以todomvc为例分析knockout、backbone和angularjs

    一.整体结构 项目github地址https://github.com/tastejs/todomvc/ 排除通用的css样式文件和引用的js库文件,仅看html和js 1.1 knockoutjs版 ...

  4. 怎样在C++中获得完整的类型名称

    Wrote by mutouyun. (http://darkc.at/cxx-get-the-name-of-the-given-type/) 地球人都知道C++里有一个typeid操作符能够用来获 ...

  5. HDU 1164 Eddy&#39;s research I【素数筛选法】

    思路:将输入的这个数分成n个素数的相乘的结果,用一个数组存储起来.之后再输出就能够了 Eddy's research I Time Limit: 2000/1000 MS (Java/Others)  ...

  6. 关于SSIS批量抽取Excel文件报0x80004005错误的解决办法

    原文:关于SSIS批量抽取Excel文件报0x80004005错误的解决办法 标题: Microsoft Visual Studio ------------------------------ Pa ...

  7. 【前端攻略】:玩转图片Base64编码(转)

    引言 图片处理在前端工作中可谓占据了很重要的一壁江山.而图片的Base64编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的base64编码.标题略大,不过只是希望通过一些浅显的论述, ...

  8. UML 之 序列图和协作图

    序列图(Sequence Diagram)     亦称为时序图或循序图,是一种UML行为图.它通过描写叙述对象之间发送消息的时间顺序显示多个对象之间的动态协作.它能够表示用例的行为顺序,当运行一个用 ...

  9. Android正在使用Handler实现信息发布机制(一)

    上一篇文章,我们谈到了电话Handler的sendMessage方法,最后,我们将进入一个电话 sendMessageAtTime方法,例如下列: public boolean sendMessage ...

  10. 足球和oracle系列(3):oracle过程排名,世界杯第二回合战罢到来!

    足球与oracle系列(3):oracle进程排名.世界杯次回合即将战罢! 声明:        这不是技术文档,既然学来几招oracle简单招式.就忍不了在人前卖弄几下.纯为茶余饭后与数朋库友的插科 ...