Percona Toolkit 神器全攻略(系统类)

十八、Percona Toolkit工具 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括:1)检查master和slave数据的一致性2)有效地对记录进行归档3)查找重复的索引4)对服务器信息进行汇总5)分析来自日志和tcpdump的查询6)当系统出问题的时候收集重要的系统信息percona-toolkit源自Maatkit和Aspersa工具,这两个工具是管理mysql的最有名的工具。 阅读详情

Percona Toolkit 神器全攻略(系统类)

file

Percona Toolkit 神器全攻略系列共八篇,前文回顾:

前文回顾
Percona Toolkit 神器全攻略
Percona Toolkit 神器全攻略(实用类)
Percona Toolkit 神器全攻略(配置类)
Percona Toolkit 神器全攻略(监控类)

全文约定:$为命令提示符、greatsql>为 GreatSQL 数据库提示符。在后续阅读中,依据此约定进行理解与操作

系统类

在Percona Toolkit中系统类共有以下工具

  • pt-diskstats:查看系统磁盘状态
  • pt-fifo-split:模拟切割文件并输出
  • pt-ioprofile:查询进程 I/O 并打印一个 I/O 活动表
  • pt-stalk:出现问题时,收集诊断数据
  • pt-sift:浏览由 pt-stalk 创建的文件
  • pt-summary:收集和显示系统概况

pt-diskstats

概要

类似于iostat命令,不过它比iostat输出的更加详细一点

用法

  • pt-diskstats [OPTIONS] [FILES]

打印 GNU/Linux 的磁盘 I/O 统计信息。它有点类似于iostat,但它是交互式的并且更详细。且可以分析从另一台机器收集的样本。

选项

该工具所有选项如下

参数含义
--columns-regex打印与此 Perl 正则表达式匹配的列
--config读取这个逗号分隔的配置文件列表,如果指定,这必须是命令行上的第一个选项
--devices-regex打印与此 Perl 正则表达式匹配的设备
--group-by分组依据模式:disk,sample,all
--headers如果存在 group ,则每个样本将由空行分隔,除非样本只有一行
--help显示帮助
--interval在交互模式下,等待 N 秒后再打印到屏幕。
--iterations当处于交互模式时,在 N 个样本后停止。默认情况下永远运行
--sample-time在 group-by sample模式下,每组包含 N 秒的样本
--save-samples用于保存 diskstats 样本的文件
--show-inactive显示不活动的设备
--show-timestamps在#ts列中显示“HH:MM:SS”时间戳
--version显示版本
--[no]version-check版本检查

最佳实践

注意!在较新的 Linux 内核版本中,为磁盘统计信息返回的字段量更改为 20 个,并导致 pt-diskstat 在这些系统上无法提供任何输出。

※该问题详情见:https://perconadev.atlassian.net/jira/software/c/projects/PT/issues/PT-2313?jql=project%20%3D%20%22PT%22%20AND%20text%20~%20%22diskstats%22%20ORDER%20BY%20created%20DESC

※解决方法:https://github.com/percona/percona-toolkit/pull/526/files#diff-c3ecedaa384eecb55bd8fdb37456a89a3dc45a41588ef1ebe231120e965942d8R2247

直接采集分析

--devices-regex指定设备名称,根据自身设备而修改

$ pt-diskstats --interval=1 --iterations=10 --devices-regex=sda --show-timestamps
     #ts device    rd_s rd_avkb rd_mb_s rd_mrg rd_cnc   rd_rt    wr_s wr_avkb wr_mb_s wr_mrg wr_cnc   wr_rt busy in_prg    io_s  qtime stime
14:08:26 sda        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
14:08:26 sda1       0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
14:08:26 sda2       0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
14:08:26 sda3       0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
  • ts:在--show-timestamps操作时候的时间戳。但如果在group-by为all模式下此列显示时间戳偏移量,如果在sample模式下表示分组到每个样本的总时间跨度
  • device:设备名称
  • rd_s:每秒的平均读取次数
  • rd_avkb:读取的平均大小单位kb
  • rd_mb_s:每秒读取的平均兆字节数
  • rd_mrg:在发送到物理设备之前在队列调度程序中合并在一起的读取请求的百分比
  • rd_cnc:根据利特尔定律计算得出的读取操作的平均并发度
  • rd_rt:读取操作的平均响应时间,以毫秒为单位
  • wr_s:每秒平均写入次数
  • wr_avkb:平均写入大小
  • wr_mb_s:每秒平均写入的平均大小
  • wr_mrg:发送到物理设备之前,在队列调度程序中合并在一起的写入请求的百分比
  • wr_cnc:写入操作的平均并发量
  • wr_rt:写入操作的平均相应时间
  • busy:磁盘繁忙程度
  • in_prg:正在进行的请求数
  • io_s:物理设备的平均吞吐量,以每秒 I/O 操作数 (IOPS) 为单位
  • qtime:平均排队时间
  • stime:平均服务时间
采集分析

先收集 /proc/diskstats 的信息,存到一个文件里面,采集一段时候后再通过 pt-diskstats 来计算。这样的好处是,可以了解该段时间内的整体 I/O 性能,而不是瞬间的性能指标

使用该 Shell 脚本

采集时间可以修改LOOPS参数,采集间隔修改INTERVAL即可

$ vim collection.sh
#!/bin/bash
INTERVAL=1
LOOPS=10
INT=1
echo `date`
while (( $INT <= $LOOPS )) do Sleep=$(date +%s.%N | awk "{print $INTERVAL - (\$1 % $INTERVAL)}") 
    sleep $Sleep 
    date +"TS %s.%N %F %T" >> diskstats-samples.txt
    cat /proc/diskstats >> diskstats-samples.txt
    let INT=INT+1
done
echo `date`

授权并运行该 Shell 脚本

$ chmod 755 collection.sh
$ sh collection.sh

在脚本文件的同一个目录下会生成diskstats-samples.txt文本文件,接着使用 pt-diskstats 工具分析即可

$ pt-diskstats --group-by disk diskstats-samples.txt
  #ts device    rd_s rd_avkb rd_mb_s rd_mrg rd_cnc   rd_rt    wr_s wr_avkb wr_mb_s wr_mrg wr_cnc   wr_rt busy in_prg    io_s  qtime stime
 {19} sda        0.0     0.0     0.0     0%    0.0     0.0     0.4     6.8     0.0     8%    0.0     0.3   0%      0     0.4    0.2   0.2
 {19} sda3       0.0     0.0     0.0     0%    0.0     0.0     0.3     7.9     0.0    10%    0.0     0.3   0%      0     0.3    0.2   0.1
 {19} dm-0       0.0     0.0     0.0     0%    0.0     0.0     0.4     7.2     0.0     0%    0.0     0.5   0%      0     0.4    0.2   0.2

不同点是ts列显示包含在输出行中的样本数,其它字段意思和上方一致

查看该段时间内 sda 的 iops 变化情况

$ pt-diskstats --group-by sample --devices-regex sda --columns-regex io_s diskstats-samples.txt

 #ts device    io_s
  0.0 {4}      156.6
......中间省略部分
 55.2 {4}        0.0
 56.2 {4}        0.0

查看 sda-sdb 两块盘在采集的时间段内的整体 I/O 平均负载情况

$ pt-diskstats --group-by disk --devices-regex 'sd[a-c]' diskstats-samples.txt

小技巧

在使用 pt-diskstats 工具在线分析的时候按“?”键,将调出交互式帮助菜单,其中显示哪些键控制程序

$ pt-diskstats --devices-regex=sda --show-timestamps
15:08:06 sda        0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
15:08:06 sda1       0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
15:08:06 sda2       0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
15:08:06 sda3       0.0     0.0     0.0     0%    0.0     0.0     0.0     0.0     0.0     0%    0.0     0.0   0%      0     0.0    0.0   0.0
# 此时输入'?'会弹出提示
   You can control this program by key presses:
   ------------------- Key ------------------- ---- Current Setting ----
   A, D, S) Set the group-by mode              A
   c) Enter a Perl regex to match column names .
   /) Enter a Perl regex to match disk names   sda
   z) Set the sample size in seconds           1
   i) Hide inactive disks                      yes
   p) Pause the program
   q) Quit the program
   space) Print headers
   ------------------- Press any key to continue -----------------------

pt-fifo-split

概要

可以用做切割大文件,切割完成后再分批导入 GreatSQL 数据库中,不会造成效率低以及主从延迟

用法

  • pt-fifo-split [OPTIONS] [FILE]

选项

该工具所有选项如下

参数含义
--config读取这个逗号分隔的配置文件列表,如果指定,这必须是命令行上的第一个选项
--fifo可以从中读取行的 fifo 的名称
--force如果 fifo 已存在,请将其删除,然后重新创建
--help显示帮助
--lines每个块中要读取的行数
--offset从第 N 行开始。如果参数为 0,则所有行都打印到 fifo。如果为 1,则从第一行开始打印行(与 0 完全相同)。如果为 2,则跳过第一行,并将第二行及后续行打印到 fifo
--pid创建给定的 PID 文件
--statistics打印块之间的统计信息
--version显示版本

最佳实践

用命令seq 1 1000000 > hugefile.txt向hugefile.txt文件插入一百万行数据

$ wc -l hugefile.txt           
1000000 hugefile.txt

接着需要写一个脚本文件获取切割后的数据

$ vim fifo_get.sh 
#!/bin/bash
filename=/tmp/hugefile
n=1
while [ -e /tmp/pt-fifo-split ];
do 
        cat /tmp/pt-fifo-split > "$filename"_"$n".txt ;
        let n++
done

使用 pt-fifo-split 工具切割

$ pt-fifo-split --lines 10000 --statistics hugefile.txt
chunks     lines  time  overall  current
    1     10000    48 208.33 208.33
    2     20000    48 416.67 10000.00
    3     30000    48 625.00 10000.00
    4     40000    48 833.33 10000.00
    5     50000    48 1041.67 10000.00
......下方省略

使用脚本工具获取数据

$ chmod 755 fifo_get.sh
$ sh fifo_get.sh 
$ ls /tmp/hugefile_* 2>/dev/null | wc -l
100

接下来就可以把这些切割后的文件导入到 GreatSQL 数据库中了,此时可以用 GreatSQL 的并行LOAD DATA特性,最大导入的加速比大概为20倍

使用 LOAD 语句增加 HINT 启用

greatsql> LOAD /*+ SET_VAR(gdb_parallel_load=ON) SET_VAR(gdb_parallel_load_chunk_size=65536) SET_VAR(gdb_parallel_load_workers=16) */
DATA INFILE 'hugefile.txt' INTO TABLE t1;

GreatSQL的并行LOAD DATA详见:https://greatsql.cn/docs/8032-25/user-manual/5-enhance/5-1-highperf-parallel-load.html

当然也可以使用split命令来做切割 split -l 1000 hugefile.txt chunk_

pt-ioprofile

概要

主要用于监视和分析 GreatSQL/MySQL 进程的 I/O 活动。通过 strace 和 lsof 来跟踪进程的 I/O 情况,并打印出相关的表文件和活动 I/O 信息。

用法

  • pt-ioprofile [OPTIONS] [FILE]

建议使用root权限,可以收集到更多的信息

选项

该工具所有选项如下

参数含义
--aggregate聚合函数,sum 或 avg
--cell指定单元格的内容,有效值为count、sizes、times
--group-by分组项,有效值为all、filename、pid
--help显示帮助
--profile-pid要分析的 PID 会覆盖 --profile-process
--profile-process要分析的进程名称
--run-time分析的时间长度
--save-samples保存样本的文件名
--version显示版本

最佳实践

直接使用即可,默认--cell为times既I/O操作的时间,默认监听30秒的mysqld进程,并给出30秒内的分析结果

注意!是要等待30秒后给出分析结果,并不是实时出结果

$ pt-ioprofile
Wed Apr  3 02:16:37 PM CST 2024
Tracing process ID 657147
     total      write      lseek  ftruncate filename
  0.000468   0.000232   0.000142   0.000094 /data/GreatSQL/innodb_status.657147
  0.000184   0.000000   0.000184   0.000000 /tmp/#13526
  0.000180   0.000000   0.000180   0.000000 /tmp/#13525

可指定--cell为sizes既I/O操作的大小

$ pt-ioprofile --cell=sizes                                                        
Wed Apr  3 02:11:09 PM CST 2024
Tracing process ID 657147
     total      write      lseek  ftruncate filename
     53620      26810      26810          0 /data/GreatSQL/innodb_status.657147
      5074          0       5074          0 /tmp/#13525
      2024          0       2024          0 /tmp/#13526

可指定--cell为count既I/O操作的次数

$ pt-ioprofile --cell=count 
Wed Apr  3 02:15:18 PM CST 2024
Tracing process ID 657147
     total      write      lseek  ftruncate filename
         7          4          2          1 /data/GreatSQL/innodb_status.657147
         1          0          1          0 /tmp/#13526
         1          0          1          0 /tmp/#13525

pt-stalk

概要

pt-stalk工具的功能是出现问题时收集GreatSQL数据库和系统的诊断信息,可以解决更细粒度的现场故障采集

用法

  • pt-stalk [OPTIONS]

建议使用root权限,可以收集到更多的信息

选项

该工具所有选项如下

参数含义
--ask-pass连接 GreatSQL/MySQL 时提示输入密码
--collect当故障发生时收集诊断数据,可使用 --no-collect 使工具只监视系统不收集数据
--collect-gdb收集 GDB 堆栈跟踪
--collect-oprofile收集 oprofile 数据
--collect-strace收集跟踪数据
--collect-tcpdump收集 tcpdump 数据
--config读取以逗号分隔的配置文件列表,如果指定,这必须是命令行上的第一个选项
--cycles在触发--collect之前,--variable必须大于--threshold多少次
--daemonize守护进程,后台运行
--defaults-file只从给定文件中读取 GreatSQL 选项
--dest保存--collect的诊断数据的位置,不要选择和GreatSQL同一个目录,最好是独立的目录,因为该工具会删除目录下超过一定日期的文件,可能会造成误删。默认目录/var/lib/pt-stalk
--disk-bytes-free如果磁盘的可用空间少于次值的设定就不使用--collect。防止磁盘被该工具的诊断数据填满
--disk-pct-free如果磁盘的可用空间少于次值的百分比就不使用--collect 。这可以防止该工具用诊断数据填充磁盘,和--disk-bytes-free差不多,一个是具体值一个是百分比
--function设置触发条件,默认值监视SHOW GLOBAL STATUS,也可以通过此参数修改为SHOW PROCESSLIST
--help显示帮助
--host连接到主机
--interval检查触发器是否为 true 的频率
--iterations收集多少次,默认是一直运行
--log守护进程时将所有输出打印到此文件
--match监测SHOW PROCESSLIST时使用的模式
--notify-by-email发送收集信息到指定的邮箱中
--password用于连接的密码
--pid创建给定的 PID 文件
--plugin加载插件以连接到该工具并扩展其功能
--mysql-only仅触发 GreatSQL 相关的捕获,忽略所有其他
--port用于连接的端口号
--prefix诊断样本的文件名前缀,默认情况下,同一--collect实例创建的所有文件都具有基于当前本地时间的时间戳前缀,例如 2011_12_06_14_02_02 ,即 2011 年 12 月 6 日 14:02:02
--retention-count保留最后 N 次运行的数据。如果 N > 0,程序将保留最后 N 次运行的数据,并删除较旧的数据
--retention-size保留最多–retention-size MB的数据
--retention-time保留收集样本的天数
--run-time触发多长时间的 --collect 诊断数据,默认30秒
--sleep--collect 之后要停止多久,可以防止该工具连续触发
--sleep-collect收集循环周期之间休眠多长时间
--socket用于连接的套接字文件
--stalk观察服务器并等待触发发生
--system-only仅触发与操作系统相关的捕获,忽略所有其他捕获
--threshold--variable 的最大可接受值
--user登录的用户
--variable要与 --threshold 进行比较的变量
--verbose运行时打印或多或少的信息
--version显示版本

最佳实践

监控SHOW GLOBAL STATUS中的状态值

例如监控Threads_running状态值,如果Threads_running状态值连续5次超过100,这触发收集主机和数据库的信息

$ pt-stalk --function status --variable Threads_running --cycles 5 --threshold 500 --daemonize --user=root --password=

有以下三种触发方式

  • status 通过监控SHOW GLOBAL STATUS的参数值,--variable参数指定的监控的具体是哪个参数,默认Threads_running

  • processlist

    通过监控SHOW FULL PROCESSLIST命令的结果,--variable参数指定列的值和--match指定值相匹配的次数,如:State列,匹配值:statistics

  • 自定义脚本

立即收集主机和数据库信息

不等待触发发生,立即收集在60秒内主机和数据库的信息,等待180秒后结束自动退出

$ pt-stalk --no-stalk --run-time=60 --iterations=1 --user=root --password=

查看默认诊断数据存放的位置/var/lib/pt-stalk

$ ls /var/lib/pt-stalk                            
2024_04_07_14_47_10-df              2024_04_07_14_47_10-lsof            2024_04_07_14_47_10-numastat     2024_04_07_14_47_10-ps-locks-transactions
2024_04_07_14_47_10-disk-space      2024_04_07_14_47_10-meminfo         2024_04_07_14_47_10-opentables1  2024_04_07_14_47_10-slabinfo
2024_04_07_14_47_10-diskstats       2024_04_07_14_47_10-mpstat          2024_04_07_14_47_10-opentables2  2024_04_07_14_47_10-slave-status
2024_04_07_14_47_10-hostname        2024_04_07_14_47_10-mpstat-overall  2024_04_07_14_47_10-output       2024_04_07_14_47_10-sysctl
2024_04_07_14_47_10-innodbstatus1   2024_04_07_14_47_10-mutex-status1   2024_04_07_14_47_10-pmap         2024_04_07_14_47_10-top
2024_04_07_14_47_10-innodbstatus2   2024_04_07_14_47_10-mutex-status2   2024_04_07_14_47_10-processlist  2024_04_07_14_47_10-trigger
2024_04_07_14_47_10-interrupts      2024_04_07_14_47_10-mysqladmin      2024_04_07_14_47_10-procstat     2024_04_07_14_47_10-variables
2024_04_07_14_47_10-iostat          2024_04_07_14_47_10-netstat         2024_04_07_14_47_10-procvmstat   2024_04_07_14_47_10-vmstat
2024_04_07_14_47_10-iostat-overall  2024_04_07_14_47_10-netstat_s       2024_04_07_14_47_10-ps           2024_04_07_14_47_10-vmstat-overall

有很多采集的文件,从文件名可以看出来,命名方式就是以命令来命名的。同时也可以用pt-sift工具来查看产生的文件内容

pt-sift

概要

用于分析、查看pt-stalk命令产生的文件内容,并生产概要信息,然后通过输入不同的命令查看不同的内容。如,输入m,查看的是SHOW STATUS命令的内容。

用法

  • pt-sift FILE|PREFIX|DIRECTORY

这是一个交互式的命令

选项

该工具所有选项如下

参数含义
--help显示帮助
--version显示版本

最佳实践

显示所有pt-stalk收集的信息

可以直接使用pt-sift命令,并加上pt-stalk工具收集的信息存放地址

$ pt-sift /var/lib/pt-stalk

此时会跳出一个交互式的命令行,可以通过输入?来查看帮助信息,通过输入不同的命令显示不同的内容

  • d:设置在样本磁盘性能统计信息上启动 pt-diskstats 工具的操作
  • i:设置在 less 中查看第一个 INNODB STATUS 样本的操作
  • m:使用 pt-mext 工具并排显示 SHOW STATUS 计数器的前 4 个样本
  • n:以两种方式汇总 netstat 数据的第一个样本:按原始主机和按连接状态
  • j:选择下一个时间戳作为活动样本
  • k:选择前一个时间戳作为活动样本
  • q:退出程序
  • 1:将每个示例的操作设置为默认值,即查看示例的摘要
  • 0:将操作设置为仅列出示例中的文件
  • *:查看所有文件
                  ---  COMMANDS  ---
      1  Default action: summarize files
      0  Minimal action: list files
      *  View all the files in less
      d  Invoke 'diskstats' on the disk performance data
      i  View the first INNODB STATUS sample in 'less'
      m  Invoke 'pt-mext' to show the SHOW STATUS counters side by side
      n  Summarize the 'netstat -antp' status data
                  --- NAVIGATION ---
      j  Select the next timestamp
      k  Select the previous timestamp
      q  Quit the program
Press any key to continue

pt-summary

概要

打印信息涵盖CPU、内存、硬盘、网卡等核心信息,同时展现文件系统、磁盘调度、队列大小、LVM、RAID等详细配置,以及网络链接统计、netstat分析,并突出前10负载与vmstat数据

用法

  • pt-summary

选项

参数含义
--config读取这个逗号分隔的配置文件列表,如果指定,这必须是命令行上的第一个选项
--help显示帮助
--read-samples从此目录中的文件创建报告
--save-samples将收集到的数据保存在此目录中
--sleep从 vmstat 收集样本时休眠多长时间
--summarize-mounts报告已安装的文件系统和磁盘使用情况
--summarize-network有关网络控制器和配置的报告
--summarize-processes报告顶级进程和 vmstat 输出
--version打印工具的版本并退出

最佳实践

直接使用即可

$ pt-summary

该段展示当前日期和时间,以及服务器和操作系统的概览

# Percona Toolkit System Summary Report ######################
        Date | 2024-04-15 07:49:13 UTC (local TZ: CST +0800)
    Hostname | myarch
      Uptime | 74 days,  5:25,  4 users,  load average: 0.03, 0.01, 0.00
    Platform | Linux
     Release | "Arch Linux" (n/a)
      Kernel | 6.6.3-arch1-1
Architecture | CPU = 64-bit, OS = 64-bit
   Threading | NPTL 2.39
    Compiler | GNU CC version 13.2.1 20230801.
     SELinux | No SELinux detected
 Virtualized | No virtualization detected

该段提取自/proc/cpuinfo

# Processor ##################################################
  Processors | physical = 1, cores = 6, virtual = 12, hyperthreading = yes
      Speeds | 1x4071.589, 1x4177.016, 1x4179.769, 1x4197.696, 1x4197.784, 1x4198.704, 6x800.000
      Models | 12xIntel(R) Core(TM) i7-8850H CPU @ 2.60GHz
      Caches | 12x9216 KB

该段是内存信息。生成自free、ps、sysctl以及dmidecode

# Memory #####################################################
         Total | 15.4G
          Free | 1.1G
          Used | physical = 3.7G, swap allocated = 0.0, swap used = 0.0, virtual = 3.7G
        Shared | 3.9M
       Buffers | 10.9G
        Caches | 11.7G
         Dirty | 20 kB
       UsedRSS | 3.3G
    Swappiness | 60
   DirtyPolicy | 20, 10
   DirtyStatus | 0, 0
    Numa Nodes | 1
   Numa Policy | default
Preferred Node | current
   Node    Size        Free        CPUs
   ====    ====        ====        ====
   node0   15787 MB    1165 MB     0 1 2 3 4 5 6 7 8 9 10 11

该段是挂载文件系统。生成自mount和df

# Mounted Filesystems ########################################
  Filesystem      Size Used Type     Opts
                   Mountpoint
  /dev/nvme0n1p1  799M   1% vfat     rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro /efi
  /dev/nvme0n1p2  233G  34% ext4     rw,relatime
                   /
  /dev/sda1       916G   4% ext4     rw,relatime
                   /home
  efivarfs        384K  19% efivarfs rw,nosuid,nodev,noexec,relatime
                   /sys/firmware/efi/efivars
  run             7.8G   1% tmpfs    rw,nosuid,nodev,relatime,mode=755,inode64
                   /run
  tmpfs           1.6G   1% tmpfs    rw,nosuid,nodev,inode64
                   /run/user/0
  tmpfs           1.6G   1% tmpfs    rw,nosuid,nodev,relatime,size=1616676k,nr_inodes=404169,mode=700,inode64
                   /run/user/0
  tmpfs           1.6G   1% tmpfs    rw,nosuid,nodev,nr_inodes=1048576,inode64
                   /run/user/0
  tmpfs           7.8G   0% tmpfs    rw,nosuid,nodev,inode64
                   /dev/shm
  tmpfs           7.8G   0% tmpfs    rw,nosuid,nodev,relatime,size=1616676k,nr_inodes=404169,mode=700,inode64
                   /dev/shm
  tmpfs           7.8G   0% tmpfs    rw,nosuid,nodev,nr_inodes=1048576,inode64
                   /dev/shm
  tmpfs           7.8G   1% tmpfs    rw,nosuid,nodev,inode64
                   /tmp
  tmpfs           7.8G   1% tmpfs    rw,nosuid,nodev,relatime,size=1616676k,nr_inodes=404169,mode=700,inode64
                   /tmp
  tmpfs           7.8G   1% tmpfs    rw,nosuid,nodev,nr_inodes=1048576,inode64
                   /tmp

该段是磁盘调度信息。提取自/sys

# Disk Schedulers And Queue Size #############################
     nvme0n1 | [none] 1023
         sda | [mq-deadline] 64

该段是磁盘分区信息。生成自fdisk -l

# Disk Partitioning ##########################################
Device       Type      Start        End               Size
============ ==== ========== ========== ==================
/dev/nvme0n1 Disk                             256060514304
/dev/nvme0n1p1 Part       2048    1640447                  0
/dev/nvme0n1p2 Part    1640448  500117503                  0
/dev/sda     Disk                            1000204886016
/dev/sda1    Part       2048 1953523711                  0

该段是Kernel Inode State

# Kernel Inode State #########################################
dentry-state | 733944   717873  45      0       291017  0
     file-nr | 1120     0       9223372036854775807
    inode-nr | 631593   103806

该段是内核索引节点信息。分别提取自/proc/sys/fs目录下同名文件

# LVM Volumes ################################################
Unable to collect information
# LVM Volume Groups ##########################################
Unable to collect information

该段是RAID控制器。生成自lvs

# RAID Controller ############################################
  Controller | No RAID controller detected

该段是网络配置,生成自lspci和sysctl

# Network Config #############################################
  Controller | Intel Corporation Ethernet Connection (7) I219-LM (rev 10)
 FIN Timeout | 60
  Port Range | 60999

该段是网络接口统计,生成自ip -s link

# Network Connections ########################################
  Connections from remote IP addresses
    192.168.6.76        1
    213.133.111.6       1
  Connections to local IP addresses
    192.168.6.55        2
  Connections to top 10 local ports
    22                  1
    35554               1
  States of connections
    ESTABLISHED         2
    LISTEN              5

该段是TOP命令前几行

# Top Processes ##############################################
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1526529 root      20   0   15316   5632   3584 R  16.7   0.0   0:00.03 top
      1 root      20   0   22644  13452  10112 S   0.0   0.1  12:08.33 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:05.75 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_wo+
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+

该段是要注意的地方,这里提示sshd没运行

# Notable Processes ##########################################
  PID    OOM    COMMAND
    ?      ?    sshd doesn't appear to be running

该段是内存管理,这里提示开启了透明大页

# Memory management ##########################################
Transparent huge pages are enabled.

该段表示结束

# The End ####################################################

本文完 :) 下章节将介绍Percona Toolkit 神器全攻略(开发类)


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

Percona-Toolkit-实用工具指南 Percona Toolkit 提供两个核心数据库管理工具:pt-online-schema-change 用于在线表结构变更,通过创建影子表和触发器实现无锁DDL操作;pt-archiver 用于数据归档和清理,支持分批处理数据并控制性能影响。文档详细介绍了每个工具的工作原理、基本语法、使用示例和常用参数,包括安全建议和适用场景。pt-online-schema-change 适合添加列、修改表结构等操作,而 pt-archiver 可将旧数据归档到文件或另一张表,也可直接安全删除。 阅读详情

相关推荐

MySQL管理工具集深度解析:从选型到实战场景全攻略

MySQL管理工具选型与实战指南 本文系统分析了主流MySQL管理工具的特点与适用场景。phpMyAdmin适合轻量级Web管理,Workbench提供官方全功能支持,HeidiSQL是Windows开发者首选,Dbeaver可实现跨数据库管理,Navicat适合企业级应用,Percona Toolkit专精运维诊断。文章给出了选型决策树,建议初创团队使用免费组合(phpMyAdmin+HeidiSQL),中大型企业选择Navicat+Percona Toolkit方案。未来趋势包括云原生集成、AI辅助优化

专注于编程、AI、人工智能等多个领域内容研究和分析 162

Percona Toolkit工具简介

系列文章目录 第一章:sql_mode模式 第二章:optimize table、analyze table、alter table、gh-ost 第三章:InnoDB MVCC原理 第四章:sql语句执行过程 第五章:Percona Toolkit工具简介 文章目录系列文章目录一、Percona Toolkit简介二、安装使用三、常用命令1. pt-kill1.1 介绍1.2 常用参数1.3 示例2. pt-query-digest2.1 简介2.2 常用参数2.3 示例 一、Percona Tool

守正出奇 7890

RK3588与银河麒麟V10 SP1 2403深度适配:国产化硬件与操作系统的完美融合

本文深入探讨了RK3588处理器与银河麒麟V10 SP1 2403操作系统的深度适配,展示了国产化硬件与操作系统的完美融合。通过性能验证和实际应用测试,证明了这套组合在多媒体处理、AI推理和日常办公中的卓越表现,实现了完全自主可控的计算平台。

weixin_29194255的博客 249

PERCONA-TOOLKIT 安装 使用

PERCONA-TOOLKIT 安装 使用 官网:https://www.percona.com/downloads/percona-toolkit/LATEST/ percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等。 这个工具套件对DBA及运维人员着实不可多得 Server 192.168.88.8 主 S...

爱吃鱼的小明的博客 4627

J-LINK下载程序出现No Cortex-M Device found in JTAG chain…问题,最全7种解决方法

J-Link下载程序出现No Corect 等的问题的7种方法 后来编辑JLinkSettings.ini文件,找到"Device"项,将其更改Device="Cortex-M0+"

cjmsea的博客 5613

保姆级教程:在RK3588开发板上编译带MPP硬件加速的FFmpeg(含完整依赖库配置)

本文提供在RK3588开发板上编译支持MPP硬件加速的FFmpeg的详细教程,涵盖交叉编译环境搭建、MPP框架及依赖库配置,最终实现4K视频硬件编解码性能优化。通过实战步骤和性能对比,展示如何充分发挥RK3588的硬件加速能力。

weixin_30839881的博客 418

Percona Toolkit mysql辅助利器

1 PT介绍 Percona Toolkit简称pt工具—PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性、检查重复索引、定位IO占用高的表文件、在线DDL等,DBA熟悉掌握后将极大提高工作效率。 2 PT 安装 下载地址 :https://www.percona.com/downloads/percona-toolkit/ 下载完...

weixin_33847182的博客 1356

从混淆到清晰:实战解读LASSO回归图与交叉验证图(R glmnet二分类案例)

本文深入解析LASSO回归在R glmnet中的可视化应用,特别针对二分类问题。通过详细解读系数路径图和交叉验证误差图,帮助读者掌握变量筛选的关键技巧,并指导如何基于业务需求选择最优lambda值,实现从数据可视化到决策的完整流程。

weixin_32678995的博客 425

Percona Toolkit 神器全攻略(复制类)

用来监测主从延迟的情况,此工具的设计为向 Master 中插入一条带有当前时间(GreatSQL中的now()函数)的记录到心跳表中,然后,该记录会复制到 Slave 中。GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。输出的结果为:实时延迟,[1分钟延迟,5分钟延迟,15分钟延迟] 主节点的Server_id。

GreatSQL2021的博客 1436

Python RPA 流程自动化快速上手

Python RPA 流程自动化快速上手

看花容易绣花难 1万+

生存网络与mlr3proba

通过结合生存网络和mlr3proba,可以使用生存网络模型来预测个体在给定时间点发生事件的概率,并使用mlr3proba提供的工具进行模型的训练、评估和选择最佳模型。iii)基本的机器学习(ML)方法,如重新排序和调整。在本文中,我们将只讨论前五种,因为它们在文献中得到了更好的建立,并且它们具有相同的接口,这简化了调优,我们将在下面看到。我们不会为模型指定自定义架构,而是使用默认架构,如果你熟悉PyTorch,那么你可以选择创建自己的架构,如果你愿意的话,通过将其传递给模型中的custom_net参数。

weixin_46587777的博客 1363

Percona Toolkit 神器全攻略(性能类)

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。过读取日志(例如:慢查询日志)中的查询语句,然后分析语句是如何使用表的,即:表之间的数据流向。indexes:此表包含了数据库中所有表的索引信息。它记录了每个表的索引名称、列、类型等。进程的堆栈信息是通过gdb获取的,所以在获取过程中,会对数据库的性能有一定的影响。

GreatSQL2021的博客 1220

向华为学习——解读158页 华为敏捷园区网技术解决方案【附全文阅读】

华为敏捷园区网解决方案通过策略随行和体验随身技术,满足移动办公场景下的网络需求。该方案采用敏捷交换机和防火墙自动执行策略配置,实现用户身份认证与业务策略的无缝衔接,且策略配置与IP地址解耦,简化了管理流程。相比传统技术,该方案有效解决了用户分级、QoS保障、无线接入等关键问题,确保用户在移动过程中获得一致的网络体验。

cdfunlove的博客 380

Percona Toolkit 神器全攻略(监控类)

pt-query-digest是用于分析 MySQL/GreatSQL 慢查询的一个工具,它可以分析Binlog、General log、Slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的 MySQL/GreatSQL 协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。中的84是采样的初始值,后面的0是每两个采样点的差异值。

GreatSQL2021的博客 1244

Python爬虫实战:模拟登录知乎 – 通过加密参数和验证码实现自动登录

通过本篇博客的讲解,我们学习了如何通过 POST请求 和 验证码识别,模拟登录知乎并爬取用户信息、问题数据。随着爬虫技术的发展,面对更复杂的反爬虫机制,我们可以不断调整策略,以绕过这些防护,实现数据的自动化抓取。

2201_76125261的博客 731

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Percona Toolkit 神器全攻略(实用类)

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。pt-kill可以Kill掉任何语句,特别出现大量的阻塞,死锁,或某个有问题的SQL导致MySQL/GreatSQL负载很高的情况。会默认过滤掉复制线程。该工具首先计算每行包含的单词数量,并尝试确定是否有一个占主导地位的数字,将其假设为每行的单词数量。

GreatSQL2021的博客 1119

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Percona Toolkit 神器全攻略(配置类)

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。打印出来GreatSQL/MySQL的描述信息,包括:版本信息,数据目录,命令的统计,用户,数据库以及复制等信息还包括各个变量(status、variables)信息和各个变量的比例信息,还有配置文件等信息。因此,它显示了生成报告时计数器每秒增长的速度。

GreatSQL2021的博客 1297

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Percona Toolkit 神器全攻略(开发类)

Percona Toolkit 神器全攻略(开发类) Percona Toolkit 神器全攻略系列共八篇,前文回顾: 前文回顾 Percona Toolkit 神器全攻略 Percona Toolkit 神器全攻略(实用类) Percona Toolkit 神器全攻略(配置类) Percona...

weixin_41474971的博客 206

Percona Toolkit 神器全攻略

Percona Toolkit简称(PT工具),是一组高级命令行工具,用于管理MySQL/GreatSQL的工具。可以用它来执行各种难以手动执行的MySQL/GreatSQL和系统任务。其功能包括检查主从复制的数据一致性、检查重复索引、定位IO占用高的表文件、在线DDL等,DBA熟悉掌握PT工具后将极大提高工作效率。本系列只介绍和探讨Percona Toolkit中针对MySQL/GreatSQL数据库的实用工具。

GreatSQL2021的博客 708

DBA效率革命:Percona Toolkit自动化运维全攻略

我最喜欢它的安全机制,默认会先dry-run展示变更,确认无误才真正执行。它的在线编辑器支持直接运行Percona Toolkit命令,还能一键部署Web界面原型,省去了本地搭建测试环境的麻烦。比起简单的DELETE,它能控制事务大小避免锁表,还能实时监控进度,归档的同时不影响线上查询。对已知的常见问题编写了自动修复策略。整合Celery实现定时任务,比如每天凌晨低峰期自动跑checksum,发现异常自动触发sync修复。自动化不是要完全取代人工,而是把DBA从重复劳动中解放出来,专注于更有价值的工作。

GreyWolf12的博客 762

SQL工具全攻略:从入门到精通,数据分析师与开发者的效率利器

SQL作为数据领域的核心语言,是操作和查询数据库的通用标准。其工作原理是通过声明式语法,将用户的数据需求转化为数据库系统可执行的指令,实现对数据的增删改查与复杂分析。掌握SQL的价值在于能够高效、精准地从海量数据中提取信息,支撑业务决策、应用开发和系统优化。在数据分析、后端开发、数据仓库构建等应用场景中,SQL能力直接影响工作效率与成果质量。而一款优秀的SQL工具,如DBeaver或DataGrip,能通过智能补全、执行计划可视化等功能,显著提升SQL编写与调试效率,是数据工作者从“会写”迈向“高效”的关键

weixin_30527423的博客 287

MySQL大表结构修改神器:pt-online-schema-change(pt-osc)全攻略

在MySQL数据库运维中,修改大表结构是一个经典痛点——传统ALTER TABLE命令会锁表(尤其是InnoDB引擎在MySQL 5.7及更早版本),导致业务读写阻塞、服务不可用。为解决这一问题,Percona Toolkit提供的pt-online-schema-change(简称pt-osc)工具应运而生,它能在不锁表的前提下安全修改表结构。本文将从工具选型、环境准备、原理解析到实操避坑,全面讲解pt-osc的使用。

专注Java和MySQL领域知识分享 1915

GreatSQL社区2024年全年总结(免费领红包封面)

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。社区2024年总结GreatSQL 社区在2024年度上持续迈进,成果斐然。一方面,开放了 GreatSQL 单机版以及三节点 MGR 集群的在线测试体验环境,让用户能够在线体验各种 GreatSQL 创新特性。另一方面,社区手册也持续更新,方便用户查阅。同时,社区积极拓展教育合作领域,成功走进郑州大学,联合开设 “G...

老叶茶馆 195

监控mysql主从数据一致,Mysql主从同步percona-toolkit数据一致性监测

本文源链接地址:https:www.93bok.com引言在mysql工作中接触最多的就是mysql replication,mysql在复制方面还是会有一些常规问题,比如主库宕机或者从库宕机有可能会导致复制中断,通常需要进行人为修复,或者很多时候需要把一个从库提升为主库,但对从库和主库的数据一致性不能保证一样。这种情况下就需要使用percona-toolkit工具的pt-table-checks...

weixin_34725745的博客 603
上一篇: MySQL UDF 提权初探
下一篇: GreatSQL 并行Load Data加快数据导入
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值