目录

1.简介

  • doDBA 工具是一个基于命令行的远程系统监控工具。不依赖远程服务器的软件运行。它能实时的收集Linux和MySQL的性能数据。并可以生成一个执行文件来帮助您分析MySQL数据库。
  • 这个程序是免费软件。
  • doDBA是用go编写的。

2.下载

wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA --no-check-certificate

wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA.conf --no-check-certificate

chmod +x doDBA

或者

git pull https://github.com/dblucyne/dodba_tools

3.使用帮助

./doDBA -help

-help  # 显示帮助
-c string # 指定配置文件 (default "doDBA.conf")
-h string # 连接的 host/IP
-sys # 打印Linux的信息
-myall # 打印Linux和MySQL的信息
-mysql # 打印MySQL的信息
-innodb # 打印InnoDB存储引擎的信息
-mytop # 打印MySQL processlist,类似top
-i <duration> # 刷新间隔的秒数 (默认1s)
-t <int> #当MySQL Threads_running到达阈值时会输出 show processlist和showengine innodb status到dodba.log中 (默认50)
-hP <string> # 主机端口 (默认 "22")
-hp <string> # 主机密码
-hu <string> # 主机用户 (默认 "root")
-mP <string> # MySQL端口 (默认 "3306")
-mp <string> # MySQL密码
-mu <string> # MySQL用户
-rds # 忽略Linux信息
-log # 按照日期输出到日志文件
-nocolor # 不加颜色输出

4.配置

4.1.模板

cat doDBA.conf
{
"Host":"",
"Huser": "root",
"Hport": "22",
"Hpwd": "",
"Muser": "dodba",
"Mpwd": "dodba",
"Mport":"3306"
}

4.2.启动命令

./doDBA -c=doDBA.conf

5.部署流程

5.1.下载

5.2.选定被监控主机

5.3.在被监控主机上添加Linux用户、MySQL 用户

Linux:

groupadd dodba
useradd dodba -g dodba
echo xxxx | passwd dbdba --stdin
MySQL:

create user dodba@’xxx.xxx.xxx.%’ identified by ‘dodba’;
grant process on *.* to dodba@'xxx.xxx.xxx.%';

5.4.配置SSH互信

5.5.配置doDBA配置文件,并修改对应参数

5.6.创建日志目录,按照业务、主机、实例等分别创建

mkdir -p /data/doDBA_log/piwik/mysql{1,2}_log/{myall,innodb}

5.7.启动doDBA

  • 建议将doDBA安装在某一台主机上,监控其他被监控主机及数据库

5.7.1. 启动脚本,配置了 myall 和 innodb 数据源

cat start_doDBA.sh

#!/bin/bash
host_ip=("10.10.xx.xx")
INST_NAME="xxx"
data_source=("myall","innodb")
for IP in ${host_ip[@]}
for SRC in ${data_source[@]}
do
cd /data/doDBA_log/${inst_name}/mysql1_log/myall/
./doDBA -h ${IP} -c /data/doDBA_log/${INST_NAME}/mysql1_log/${SRC}/${INST_NAME}_doDBA.conf -$SRC -t=20 -log &
done

5.8.编辑kill doDBA和start doDBA脚本,已便每天生成一个日志文件。

cat kill_doDBA.sh

#!/bin/bash
ps -ef | grep doDBA | grep -v grep | awk '{print $2}' | xargs kill -9 >/dev/null 2>&1

5.9.配置crontab定时任务。

crontab -e

0 0 # # # sh kill_doDBA.sh
1 0 # # # sh start_doDBA.sh

6.数据源参数优先级

  • 经过实际测试,一个 doDBA 进程同时只能配置一个数据源参数,配置2个及以上时,只能生效一个,说明参数有优先级的区别。
  • 优先级如下:
    • mysql > innodb > myall > sys

7.使用示例

7.1. 数据源:mysql

7.1.1. 启动命令

./doDBA -c doDBA.conf -mysql -log

7.1.2.doDBA 发送给 MySQL 的查询语句

show global status
where
Variable_name in (
"Com_select",
"Com_insert",
"Com_update",
"Com_delete",
"Innodb_buffer_pool_read_requests",
"Innodb_buffer_pool_reads",
"Innodb_rows_inserted",
"Innodb_rows_updated",
"Innodb_rows_deleted",
"Innodb_rows_read",
"Threads_running",
"Threads_connected",
"Threads_cached",
"Threads_created",
"Bytes_received",
"Bytes_sent",
"Innodb_buffer_pool_pages_data",
"Innodb_buffer_pool_pages_free",
"Innodb_buffer_pool_pages_dirty",
"Innodb_buffer_pool_pages_flushed",
"Innodb_data_reads",
"Innodb_data_writes",
"Innodb_data_read",
"Innodb_data_written",
"Innodb_os_log_fsyncs",
"Innodb_os_log_written",
"Slow_queries",
"Created_tmp_disk_tables",
"Created_tmp_tables",
"Open_tables",
"Open_files",
"Table_locks_immediate",
"Table_locks_waited"
);

7.1.3. 输出

7.1.4.每列含义

  • mysql-status

    • qps —— Com_select
    • tps —— Com_insert + Com_update + Com_delete
    • ins —— Com_insert
    • upd —— Com_update
    • del —— Com_delete
  • threads

    • run —— Threads_running
    • con —— Threads_connected
    • cre —— Threads_created
    • cac —— Threads_cached
  • slow

    • sql —— Slow_queries
    • tmp —— Created_tmp_tables
    • dtmp —— Created_tmp_disk_tables
  • bytes

    • recv —— Bytes_received
    • send —— Bytes_sent
  • locks

    • lockI —— Table_locks_immediate
    • lockW —— Table_locks_waited
    • openT —— Open_tables
    • openF —— Open_files

7.2.数据源:innodb

7.2.1.启动命令

./doDBA -c doDBA.conf -innodb -log

7.2.2.doDBA 发送给 MySQL 的查询语句(同7.1.2)

show global status
where
Variable_name in (
"Com_select",
"Com_insert",
"Com_update",
"Com_delete",
"Innodb_buffer_pool_read_requests",
"Innodb_buffer_pool_reads",
"Innodb_rows_inserted",
"Innodb_rows_updated",
"Innodb_rows_deleted",
"Innodb_rows_read",
"Threads_running",
"Threads_connected",
"Threads_cached",
"Threads_created",
"Bytes_received",
"Bytes_sent",
"Innodb_buffer_pool_pages_data",
"Innodb_buffer_pool_pages_free",
"Innodb_buffer_pool_pages_dirty",
"Innodb_buffer_pool_pages_flushed",
"Innodb_data_reads",
"Innodb_data_writes",
"Innodb_data_read",
"Innodb_data_written",
"Innodb_os_log_fsyncs",
"Innodb_os_log_written",
"Slow_queries",
"Created_tmp_disk_tables",
"Created_tmp_tables",
"Open_tables",
"Open_files",
"Table_locks_immediate",
"Table_locks_waited"
);

7.2.3.输出

7.2.4.每列含义

  • innodb--rows

    • read —— Innodb_rows_read
    • ins —— Innodb_rows_inserted
    • upd —— Innodb_rows_updated
    • del —— Innodb_rows_deleted
  • innodb--pages

    • data —— Innodb_buffer_pool_pages_data
    • free —— Innodb_buffer_pool_pages_free
    • dirty —— Innodb_buffer_pool_pages_dirty
    • flush —— Innodb_buffer_pool_pages_flushed
  • innodb--data

    • reads —— Innodb_data_reads
    • writes —— Innodb_data_writes
    • read —— Innodb_data_read
    • written —— Innodb_data_written
  • innodb-log

    • fsyncs —— Innodb_os_log_fsyncs
    • written —— Innodb_os_log_written

7.3.数据源:sys

7.3.1.命令

./doDBA -c doDBA.conf -sys -log

7.3.2.输出

7.4.数据源:myall

7.4.1.命令

./doDBA -c doDBA.conf -myall -log

7.4.2.doDBA 发送给 MySQL 的查询语句(同7.1.2)

show global status
where
Variable_name in (
"Com_select",
"Com_insert",
"Com_update",
"Com_delete",
"Innodb_buffer_pool_read_requests",
"Innodb_buffer_pool_reads",
"Innodb_rows_inserted",
"Innodb_rows_updated",
"Innodb_rows_deleted",
"Innodb_rows_read",
"Threads_running",
"Threads_connected",
"Threads_cached",
"Threads_created",
"Bytes_received",
"Bytes_sent",
"Innodb_buffer_pool_pages_data",
"Innodb_buffer_pool_pages_free",
"Innodb_buffer_pool_pages_dirty",
"Innodb_buffer_pool_pages_flushed",
"Innodb_data_reads",
"Innodb_data_writes",
"Innodb_data_read",
"Innodb_data_written",
"Innodb_os_log_fsyncs",
"Innodb_os_log_written",
"Slow_queries",
"Created_tmp_disk_tables",
"Created_tmp_tables",
"Open_tables",
"Open_files",
"Table_locks_immediate",
"Table_locks_waited"
);

7.4.3.输出

7.4.5.文本输出(GitHub示例)

7.4.5.1.普通输出

/doDBA -h=10.1.xx.xx -myall

DoDBA tools on host 10.1.xx.xx

---------+---load--avg---+-----cpu-usage-----+-swap+----net----+----mysql-status-------+-slow---th---+---bytes---

time     |   1m   5m  10m | usr  sys   iow  ide | si so| recv  send | QPS  TPS  ins  upd  del| sql run  con | recv  send

--------+-----------------+----------------------+------+------------+------------------------+---------------+-----------

13:52:00 | 4.00 3.68 3.60| 0.7  0.3  0.0 99.0 | 0  0 | 316K  4.3M| 203   58   22   36    0 |   0   2    52 |  86K  1.8M

13:52:01 | 4.00 3.68 3.60| 5.3  0.3  0.1 94.3 | 0  0 | 275K  2.0M| 251   67   27   40    0 |   0   3    76 | 104K  3.2M

13:52:02 | 4.00 3.68 3.60| 6.4  0.5  0.1 93.0 | 0  0 | 371K  4.1M| 380  810   24  786  0 |   0   3    40 | 311K  5.0M

13:52:03 | 4.00 3.68 3.60| 5.4  0.4  0.0 94.2 | 0  0 | 510K  4.2M| 648  283   30  253  0 |   1   3   52 | 216K  1.4M

13:52:04 | 4.00 3.68 3.60| 5.7  0.4  0.0 93.8 | 0  0 | 385K  2.7M| 108   69   45   24    0 |   0   4   48 |  71K  2.1M

13:52:05 | 3.92 3.66 3.59| 6.2  0.5  0.0 93.3 | 0  0 | 206K  2.0M| 339   96   52   44    0 |   0   3   37 | 107K  1.9M

7.4.5.2.忽略操作系统信息

./doDBA -h=10.1.xx.xx -myall -rds

DoDBA tools on host 10.1.xx.xx

---------+----load--avg----+-----cpu-usage-----+swap+----net----+-----mysql-status------+-slow---th---+---bytes---

time     |   1m    5m   10m | usr  sys  iow  ide|siso| recv  send|QPS  TPS  ins  upd  del| sql run  con| recv  send

---------+------------------+-------------------+----+-----------+-----------------------+-------------+-----------

17:19:17 | 0.00  0.00  0.00 | 0.0  0.0  0.0  0.0 | 0 0 |   0K    0K | 144  155   73   82   0 |   0   1    5 | 113K  229K

17:19:18 | 0.00  0.00  0.00 | 0.0  0.0  0.0  0.0 | 0 0 |   0K    0K | 66  113   32   81    0 |   0   2    6 |  79K  109K

17:19:19 | 0.00  0.00  0.00 | 0.0  0.0  0.0  0.0 | 0 0 |   0K    0K | 273  117   30   87   0 |   1   2   20 | 135K  502K

17:19:20 | 0.00  0.00  0.00 | 0.0  0.0  0.0  0.0 | 0 0 |   0K    0K | 207  173   74   99   0 |   1   2   17 | 137K  279K

17:19:21 | 0.00  0.00  0.00 | 0.0  0.0  0.0  0.0 | 0 0 |   0K    0K | 161  233  105  128 0 |   0   1    5 | 146K  193K

7.4.5.3.加入 doing 选项,当 Thread_running >= 3 时,执行show processlist 和 show engine innodb status

./doDBA -h=10.1.xx.xx -myall -t=3

2016/12/14 11:47:52 ----------------processlist---------------
ID:606374462
User:ums_read
Host:10.1.xx.xx:31886
DB:mia
Command:Query
Time:3121
State:Sending data
Info:SELECT ......................
=====================================
2016-12-14 11:49:16 7f93ece24700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 1 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 11256164 srv_active, 0 srv_shutdown, 27867 srv_idle
srv_master_thread log flush and writes: 11284031
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 1562657988
OS WAIT ARRAY INFO: signal count 11589318962
Mutex spin waits 7915500772, rounds 7044249291, OS waits 29061199
RW-shared spins 15964124137, rounds 99809511531, OS waits 1188604739
RW-excl spins 1056480533, rounds 26766008869, OS waits 261290579
........................................

7.5.数据源:mytop

7.5.1.命令

./doDBA -c doDBA.conf -mytop

7.5.3.注意事项

  • mytop的输出类似 top 命令,是实时刷新的,不能加 -log 选项

doDBA工具使用详解的更多相关文章

  1. Linux命令工具 top详解

    Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不 ...

  2. Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区

    Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区 Lua包管理工具Luarocks详解

  3. [转]网络性能评估工具Iperf详解(可测丢包率)

    原文链接:安全运维之:网络性能评估工具Iperf详解:http://os.51cto.com/art/201410/454889.htm 参考博文:http://linoxide.com/monito ...

  4. IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)

    来源: http://www.cnblogs.com/JustinYoung/archive/2009/04/03/kaifarenyuangongju2.html 在上一篇文章IE8“开发人员工具” ...

  5. IE8“开发人员工具”使用详解上(各级菜单详解)

    来源: http://www.cnblogs.com/JustinYoung/archive/2009/03/24/kaifarenyuangongju.html IE8“开发人员工具”使用详解上(各 ...

  6. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  7. 批量执行工具PSSH详解

    批量执行工具PSSH详解 pssh是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,使用必须在各个服务器上配置好密钥认证访问. 安装pssh包 yum 安 ...

  8. 自动化运维工具——ansile详解

    自动化运维工具——ansible详解(一) 目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ...

  9. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

随机推荐

  1. idea中properties配置文件 注释显示中文乱码问题

  2. The database returned no natively generated identity value错误解决方案

    原因:hibernate项目中在学生表的配置文件中: <id name="studentno" column="studentno"> <ge ...

  3. 12-ESP8266 SDK开发基础入门篇--PWM,呼吸灯

    https://www.cnblogs.com/yangfengwu/p/11094085.html PWM其实没有什么,就是看着官方给的API,,,然后就是用呗 对了,其实对于RTOS SDK版本的 ...

  4. async、await总结

    一.async用法 async作为一个关键字放到函数前面,用于表示函数是一个异步函数.异步函数也就意味着该函数的执行不会阻塞后面代码的执行. 异步函数语法很简单,就是在函数前面加上async 关键字, ...

  5. shell 查看目前机器listen的所有端口

    netstat -lnp 这条命令的意思是列出系统里面监听网络连接的端口号和相应的进程PID.参数说明:-t:表示列出TCP连接(也可以加上-u参数表示同时列出UDP网络连接)-l:表示列出正在网络监 ...

  6. mysql 根据发音查找内容

    当前表 mysql> select * from table1; +----------+------------+-----+ | name_new | transactor | pid | ...

  7. 第06组 Beta冲刺(3/5)

    队名:拾光组 组长博客链接 作业博客链接 团队项目情况 燃尽图(组内共享) 组长:宋奕 过去两天完成了哪些任务 继续维护后端代码 学习深入python 研究匿名拨打电话问题.套牌多结果处理问题 Git ...

  8. mocha单元测试简易教程

    mocha单元测试简易教程 写在前面 其实mocha单元测试的教程网上有很多,也都很简单易懂,但是每个人对同一份的教程也会产生不同的理解,像我这种大概就是走遍了所有弯路才到达终点的人,想通过给大家分享 ...

  9. 生成Nginx服务器SSL证书和客户端证书

    Nginx服务器SSL证书 生成pass key 下面的命令用于生成一个2048bit的pass key, -passout pass:111111 用于避免交互式输入密码 [tomcat@a02 t ...

  10. SQLServer newID()

    一直想找个除了newid() 外高效取随机数的方法, 有点遗憾,木有找到,谁有除了newid()以外更高效的 请留言,谢谢 从A表随机取2条记录,用SELECT TOP 10 * FROM ywle ...