>  기사  >  데이터 베이스  >  MySQL 성능, 모니터링 및 재해 복구

MySQL 성능, 모니터링 및 재해 복구

黄舟
黄舟원래의
2017-02-21 10:27:191262검색



모니터링 솔루션:

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 'a6f114c758be113d08282881423b4728' 절을 사용할 수 있습니다. 표준 MySQL 정규식 기호 및 제어 기호는 like 문

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을 사용하여 식별 누락되거나 잘못된 인덱스

* 벤치마크() 함수를 사용하여 쿼리의 일부를 테스트

* 쿼리 다시 작성 고려

* 표준 쿼리에 뷰 사용

* 쿼리 캐시 활성화


3. 느린 애플리케이션

* 쿼리 캐시 활성화

* 스토리지 엔진 고려 및 최적화

* 서버 문제인지 운영체제 문제인지 확인

* 애플리케이션에 대한 기준을 정의하고 이를 알려진 기준과 비교

* 내부 확인(애플리케이션에서(내부에 작성됨) 프로그램) 쿼리 및 성능 극대화

* 분할 및 정복 - 한 번에 한 부분만 확인

* 파티셔닝 클래스를 사용하여 데이터 분산

* 개별 파티션 확인 인덱스


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 성능, 모니터링, 재해복구 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.