• mysql性能优化工具mysqlreport


    进行MySQL的配置优化,首先必须找出MySQL的性能瓶颈所在;而SHOW STATUS输出的报告正是用来计算性能瓶颈的参考数据。mysqlreport不像SHOW STATUS那样简单的罗列数据,而是对这些参考数据加以融合计算,整理成一个个优化参考点,然后DBA就可以根据这个优化参考点的值以及该点的衡量标准,进行对应调整。这篇文章既不分析mysqlreport的报告含义,也不说明优化参考点的计算公式和原理,只简单描述使用方法。后面再逐次深入分析。

    mysqlreport主页和下载地址
    web site:http://hackmysql.com/mysqlreport
    download:http://hackmysql.com/scripts/mysqlreport-3.5.tgz

    mysqlreport的安装极为简单,下载上述文档后,使用tar -xvf mysqlreport-3.5.tar解压后,在当前目录生成文件夹mysqlreport-3.5,该文件夹下的mysqlreport即是可执行程序。
    注意:mysqlreport为perl脚本,用到DBI以及DBD::mysql,须正确安装后才能正常使用!

    mysqlreport命令行选项参数
    linux-8tpn:/home/kevin/perl # perl mysqlreport  --help
    mysqlreport v3.5 Apr 16 2008
    mysqlreport makes an easy-to-read report of important MySQL status values.
    
    Command line options (abbreviations work):
       --user USER       Connect to MySQL as USER
       --password PASS   Use PASS or prompt for MySQL user's password
       --host ADDRESS    Connect to MySQL at ADDRESS
       --port PORT       Connect to MySQL at PORT
       --socket SOCKET   Connect to MySQL at SOCKET
       --no-mycnf        Don't read ~/.my.cnf
       --infile FILE     Read status values from FILE instead of MySQL
       --outfile FILE    Write report to FILE
       --email ADDRESS   Email report to ADDRESS (doesn't work on Windows)
       --flush-status    Issue FLUSH STATUS; after getting current values
       --relative X      Generate relative reports. If X is an integer,
                         reports are live from the MySQL server X seconds apart.
                         If X is a list of infiles (file1 file2 etc.),
                         reports are generated from the infiles in the order
                         that they are given.
       --report-count N  Collect N number of live relative reports (default 1)
       --detach          Fork and detach from terminal (run in background)
       --help            Prints this
       --debug           Print debugging information
    
    Visit http://hackmysql.com/mysqlreport for more information.

    选项
    解释

    - -user
    连接MySQL的用户名

    - -password
    连接MySQL的用户密码。命令行上出现该选项但没有给出参数时,mysqlreport将在用户回车后提示输入密码

    - -host
    MySQL服务器地址

    - -port
    MySQL服务器的开发端口

    - -socket
    本地MySQL UNIX域套接口路径

    - -no-mycnf
    该选项指引mysqlreport不要读取 ~/.my.cnf,默认情况下会去读取这个文件。- -user 和 - -password 总是覆盖从 ~/.my.cnf 中取得的参数

    - -infile
    从status文件读取数据,代替从服务器上读取

    - -outfile
    打印报告后,将报告同时写入该选项指定的文件中。mysqlreport 的内部机制总是先将报告写入临时文件中,然后将该临时文件里的内容打印到屏幕上。如果指定了- -outfile选项,则将临时文件拷贝成 指定的文件。如果指定了选项- -email,则会删除临时文件

    - -email
    打印报告后,将结果发送到指定的邮箱。该选项需要使用/usr/sbin/目录下的sendmail程序,因此无法在windows 平台下使用。/usr/sbin/sendmail可以符号链接到 qmail,或者任何其他能模拟sendmail -t方式的MTA程序。邮件来源是:mysqlreport,主题是:MySQL status report on HOST,HOST是mysqlreport所在的主机名,可能是读取到的- -host值,默认是localhost

    - -flush-status
    打印报告后,运行FLUSH STATUS命令

    - -relative
    mysqlreport通常产生从MySQL启动以来的状态报告。指定- -relative选项可产生相对于前次报告以来的相关报告。

    如果选项参数是一个整数,程序每隔指定的秒数后再次产生一份状态报告,报告次数由- -report-count选项指定。默认产生1份相关报告。例如,指定- -relative的值为60,则会产生2份报告:第一份基本报告马上生成,第二份相关报告在60秒后生成。第二份报告中的数值和前面的那份相关。例如,前者总共有10.00k次查询,在这60秒的间隔时间里接受了新的1.00k次查询,则后者的总查询次数是1.00k而非11.00k次。

    如果选项参数是本地文件列表(就像- -infile选项那样),程序会按照参数中文件的顺序来依次产生状态报告。文件列表中的文件应该以空格分隔。以文件产生时间依次排列文件就显得很重要,较早产生的文件应该放在列表的前面。第一个文件中必须有系统变量,例如:key_buffer_size、table_cache 等。每个文件中可以有多组”SHOW STATUS”的结果。注意:通过 “mysqladmin -r -i N extended” 产生的状态文件无法使用,因为 mysqladmin的-r参数已经令其产生了具有相对性的状态值了。

    由于mysqlreport首先会把状态报告写到临时文件中,如果- -relative的参数是整数时,mysqlreport会显示它把文件写到哪了。那么就可以直接通过查看这些文件内容来观察服务器的状况

    - -report-count
    生成N份相关的报告。本选项只有在同时启用- -relative选项后才有效。mysqlreport会自动产生N+1份报告:第一份基本报告,以及后面的N份相关报告

    - -detach
    本选项使得mysqlreport派生新进程,从终端上脱离转入后台继续运行。派生新进程后,mysqlreport 会报告它把结果写入了哪个临时文件。本选项需要- -outfile或- -email中的一个,如果这两个选项都没有给出,则产生的临时文件就会被删除,因为自派生出新进程后,无法再将结果打印到终端屏幕上了。本选项如果和- -relative选项一起使用的话就更有意义了,这样mysqlreport就能定时报告信息,而无需人工干预获得报告。例如使用如下命令,就能让mysqlrepot隔一个小时再次产生一次报告,并将结果发送到指定的信箱:perl mysqlreport - -relative=3600 - -detach - -email=host@domain.com。一个小时候后,mysqlreport通过email发送报告,删除临时文件,并且干净地终止

    - -help
    打印帮助信息

    - -debug
    打印调试信息

    使用mysqlreport的简单例子



    1.连接远程数据库192.168.12.14
    perl mysqlreport - -host=192.168.12.14 - -user=db_user - -password=db_user_password

    2.通过本地UNIX域套接口文件/data/mysql_data/mysql.sock连接本地数据库
    perl mysqlreport - -user=root - -password=root_password - -socket=/data/mysql_data/mysql.sock

    3.将输出报告写入文件/data/mysql_data/report/mysqlreport.txt
    perl mysqlreport - -user=root - -password=root_password - -socket=/data/mysql_data/mysql.sock - -outfile=/data/mysql_data/report/mysqlreport.txt

  • 相关阅读:
    springtools插件的安装
    Spring--Bean的配置
    BS模式与CS模式的区别
    AMD 和 CMD 的区别有哪些?
    js中import和require的区别
    6个最优秀的微信小程序UI组件库
    微信小程序获取formid
    NodeJs 实现简单WebSocket 即时通讯
    NodeJS怎么实现WebSocket功能
    NodeJs实现WebSocket——express-ws
  • 原文地址:https://www.cnblogs.com/motadou/p/1636582.html
Copyright © 2020-2023  润新知