翼度科技»论坛 编程开发 mysql 查看内容

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

11

主题

11

帖子

33

积分

新手上路

Rank: 1

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

Percona Toolkit 神器全攻略系列共八篇,前文回顾:
前文回顾Percona Toolkit 神器全攻略Percona Toolkit 神器全攻略(实用类)
全文约定:$为命令提示符、greatsql>为GreatSQL数据库提示符。在后续阅读中,依据此约定进行理解与操作
配置类

在Percona Toolkit中配置类共有以下工具

  • pt-config-diff:比较数据库配置文件和参数
  • pt-mysql-summary:对GreatSQL/MySQL配置和status进行汇总
  • pt-variable-advisor:分析参数,并提出建议
pt-config-diff

概要

比较 GreatSQL/MySQL 配置文件和服务器变量
用法

  • pt-config-diff [OPTIONS] CONFIG CONFIG [CONFIG...]
选项

该工具所有选项如下
参数含义--ask-pass连接 GreatSQL/MySQL 时提示输入密码--charset字符集--config读取这个逗号分隔的配置文件列表,如果指定,这必须是命令行上的第一个选项--database连接到该数据库--defaults-file只从给定文件中读取 GreatSQL/MySQL 选项--help显示帮助--host连接到主机--[no]ignore-case比较变量时不区分大小写--ignore-variables忽略、不比较这些变量--password用于连接的密码--pid创建给定的 PID 文件--port用于连接的端口号--[no]report将 GreatSQL/MySQL 配置差异报告打印到 STDOUT--report-width将报告行截断为设定的字符--set-vars在这个以逗号分隔的 variable=value 对列表中设置 GreatSQL/MySQL 变量--socket用于连接的套接字文件--user登录的用户--version显示版本--[no]version-check版本检查最佳实践

首先创建两个配置文件(这里为了示范方便配置文件内容较少)
  1. # 以下创建test_my_1.cnf配置文件
  2. $ vim test_my_1.cnf
  3. [client]
  4. socket    = /data/GreatSQL/mysql.sock
  5. [mysql]
  6. loose-skip-binary-as-hex
  7. no-auto-rehash
  8. [mysqld]
  9. user    = mysql
  10. port    = 3306
  11. server_id = 3306
  12. innodb_buffer_pool_size = 16G
  13. loose-group_replication_group_seeds = '172.16.16.10:33061,172.16.16.12:33061,172.16.16.12:33061'
  14. loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1"
  15. # 以下创建test_my_2.cnf配置文件
  16. $ vim test_my_2.cnf
  17. [client]
  18. socket    = /data/greatsql/greatsql.sock
  19. [mysql]
  20. loose-skip-binary-as-hex
  21. no-auto-rehash
  22. [mysqld]
  23. user    = greatsql
  24. port    = 3308
  25. server_id = 3308
  26. innodb_buffer_pool_size = 8G
  27. loose-group_replication_group_seeds = '172.16.10:33081,172.16.10:33081,172.16.10:33081'
  28. loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaab1"
复制代码
因为在配置MGR的时候,需要集群中的my.cnf部分配置一致,所以这个配置文件对比还是很有用处的
配置文件对比

不一致才会输出,如果完全一致不会输出
  1. $ pt-config-diff /data/test_my_1.cnf /data/test_my_2.cnf
  2. 6 config differences
  3. Variable                  /data/test_my_1.cnf       /data/test_my_2.cnf
  4. ========================= ========================= =========================
  5. innodb_buffer_pool_size   17179869184               8589934592
  6. loose_group_replicatio... aaaaaaaa-aaaa-aaaa-aaa... aaaaaaaa-aaaa-aaaa-aaa...
  7. loose_group_replicatio... 172.16.16.10:33061,172... 172.16.10:33081,172.16...
  8. port                      3306                      3308
  9. server_id                 3306                      3308
  10. user                      mysql                     greatsql
复制代码
但是上面的输出不够完整,有的输出被省略,此时可以加上--report-width 200,便可完整输出
  1. $ pt-config-diff /data/test_my_1.cnf /data/test_my_2.cnf --report-width 200
  2. 6 config differences
  3. Variable                   /data/test_my_1.cnf                                      /data/test_my_2.cnf
  4. ========================== ======================================================== ===============================================
  5. innodb_buffer_pool_size    17179869184                                              8589934592
  6. loose_group_replication... aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1                     aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaab1
  7. loose_group_replication... 172.16.16.10:33061,172.16.16.12:33061,172.16.16.12:33061 172.16.10:33081,172.16.10:33081,172.16.10:33081
  8. port                       3306                                                     3308
  9. server_id                  3306                                                     3308
  10. user                       mysql                                                    greatsql
复制代码
配置文件和系统变量对比

配置文件与本机GreatSQL系统变量对比,如果完全一致,则不输出
  1. $ pt-config-diff --report-width=200 /etc/my.cnf u=root,p=
  2. 1 config difference
  3. Variable                  /etc/my.cnf myarch
  4. ========================= =========== ================================
  5. slow_query_log_file       slow.log    /data/GreatSQL/myarch.log.000001
复制代码
系统变量之间的对比

两台不同的数据库实例之间的系统变量对比
  1. $ pt-config-diff --report-width=200 h=192.168.6.55,P=3306,u=GreatSQL,p=  h=192.168.6.129,P=3306,u=test,p='test'
  2. 104 config differences
  3. Variable                   myarch                                                               hy
  4. ========================== ==================================================================== ====================================================================
  5. admin_tls_version          TLSv1.2,TLSv1.3                                                      TLSv1.2
  6. back_log                   1024                                                                 151
  7. basedir                    /usr/local/GreatSQL-8.0.32-25-Linux-glibc2.28-x86_64/                /usr/local/GreatSQL-8.0.32-25-Linux-glibc2.17-x86_64/
  8. binlog_cache_size          4194304                                                              32768
  9. binlog_expire_logs_seconds 604800                                                               2592000
  10. binlog_rows_query_log_e... ON                                                                   OFF
  11. ......下方省略
复制代码
pt-mysql-summary

概要

打印出来GreatSQL/MySQL的描述信息,包括:版本信息,数据目录,命令的统计,用户,数据库以及复制等信息还包括各个变量(status、variables)信息和各个变量的比例信息,还有配置文件等信息。
用法

  • pt-mysql-summary [OPTIONS]
选项

该工具所有选项如下
参数含义--all-databasesmysqldump 并汇总所有数据库--ask-pass连接 GreatSQL/MySQL 时提示输入密码--config读取这个逗号分隔的配置文件列表,如果指定,这必须是命令行上的第一个选项--databasesmysqldump 并总结这个以逗号分隔的数据库列表。如果要转储和汇总所有数据库,请指定 --all-databases--defaults-file只从给定文件中读取 GreatSQL/MySQL 选项--help显示帮助--host要连接的主机--list-encrypted-tables包括所有数据库中加密表的列表。这可能会导致速度变慢,因为查询信息模式表可能会很慢。--password连接时使用的密码--port用于连接的端口号--read-samples从此目录中找到的文件创建报告--save-samples将用于生成摘要的数据文件保存在此目录中--sleep收集状态计数器时休眠的秒数--socket用于连接的套接字文件--user登录的用户--version显示版本最佳实践
  1. $ pt-mysql-summary --user=root --password=greatsql --host=localhost --port=3306
复制代码
此时会输出所有关于GreatSQL的信息,但是要注意很多输出都是做了四舍五入,并不是精确的数据
不建议此工具远程连接其它数据库,因为可能导致输出数据混乱
接下来将此工具输出结果分成各个模块介绍
  1. # Percona Toolkit MySQL Summary Report #######################
  2.               System time | 2024-03-14 08:19:45 UTC (local TZ: CST +0800)
  3. # Instances ##################################################
  4.   Port  Data Directory             Nice OOM Socket
  5.   ===== ========================== ==== === ======
  6. # MySQL Executable ###########################################
  7.        Path to executable | /usr/local/GreatSQL-8.0.32-25-Linux-glibc2.28-x86_64/bin/mysqld
  8.               Has symbols | Yes
  9. # Slave Hosts ################################################
  10. No slaves found
复制代码
这四个部分显示报告是在哪台服务器上生成的以及该服务器上正在运行哪些 GreatSQL 实例,这是从 ps 的输出中检测到的,并不总是检测所有实例和参数。
  1. # Report On Port 3306 ########################################
  2.                      User | root@localhost
  3.                      Time | 2024-03-14 16:19:45 (+08:00)
  4.                  Hostname | myarch
  5.                   Version | 8.0.32-25 GreatSQL, Release 25, Revision 79f57097e3f
  6.                  Built On | Linux x86_64
  7.                   Started | 2024-03-08 09:50 (up 6+06:29:24)
  8.                 Databases | 9
  9.                   Datadir | /data/GreatSQL/
  10.                 Processes | 2 connected, 2 running
  11.               Replication | Is not a slave, has 0 slaves connected
  12.                   Pidfile | mysql.pid (does not exist)
复制代码
本节是 GreatSQL 实例的快速摘要:版本、正常运行时间和其他非常基本的参数。时间输出是从 GreatSQL 服务器生成的,可能与之前打印的系统日期和时间不同,如果不同的话可以检查下数据库和操作系统的时间是否匹配
  1. # Processlist ################################################
  2.   Command                        COUNT(*) Working SUM(Time) MAX(Time)
  3.   ------------------------------ -------- ------- --------- ---------
  4.   Daemon                                1       1    500000    500000
  5.   Query                                 1       1         0         0
  6.   Sleep                                 1       0       450       450
  7. ......中间省略
  8.   State                          COUNT(*) Working SUM(Time) MAX(Time)
  9.   ------------------------------ -------- ------- --------- ---------
  10.                                         1       0         0         0
  11.   init                                  1       1         0         0
  12.   Waiting on empty queue                1       1    500000    500000
复制代码
本节是 SHOW PROCESSLIST 输出的摘要,这里的数字会四舍五入,不是最精确的
  1. # Status Counters (Wait 10 Seconds) ##########################
  2. Variable                                Per day  Per second     10 secs
  3. Aborted_clients                              10                        
  4. Aborted_connects                              2                        
  5. Binlog_snapshot_position                    100                        
  6. .......中间省略
  7. Table_open_cache_overflows                   30                        
  8. Threadpool_idle_threads                       2                        
  9. Threadpool_threads                            2                        
  10. Threads_created                              25                        
  11. Uptime                                    90000           1           1
复制代码
此部分显示从 SHOW GLOBAL STATUS 的两个快照中选择的计数器,这些快照间隔大约 10 秒收集并进行模糊舍入。

  • 第一列是变量名称。
  • 第二列是第一个快照的计数器除以 86400(一天的秒数),因此您可以看到计数器每天的变化幅度。 86400 次模糊轮换到 90000,因此正常运行时间计数器应始终约为 90000。
  • 第三列是第一个快照的值,除以正常运行时间,然后进行模糊舍入,因此它大致表示计数器在服务器正常运行时间内每秒增长的速度。
  • 第四列是第一个和第二个快照的增量差异,除以正常运行时间的差异,然后进行模糊舍入。因此,它显示了生成报告时计数器每秒增长的速度。
  1. # Table cache ################################################
  2.                      Size | 1024
  3.                     Usage | 70%
复制代码
此部分显示表缓存的大小,后面是表缓存的使用百分比。
  1. # Key Percona Server features ################################
  2.       Table & Index Stats | Disabled
  3.      Multiple I/O Threads | Enabled
  4.      Corruption Resilient | Enabled
  5.       Durable Replication | Not Supported
  6.      Import InnoDB Tables | Not Supported
  7.      Fast Server Restarts | Not Supported
  8.          Enhanced Logging | Disabled
  9.      Replica Perf Logging | Enabled
  10.       Response Time Hist. | Not Supported
  11.           Smooth Flushing | Not Supported
  12.       HandlerSocket NoSQL | Not Supported
  13.            Fast Hash UDFs | Unknown
复制代码
本节显示 Percona Server 中可用的特性和启用情况。
  1. # Plugins ####################################################
  2.        InnoDB compression | ACTIVE
复制代码
本节显示特定插件以及它们是否已启用
该工具只检测少数几个Plugin,并不是所有的插件都检测
  1. # Schema #####################################################
  2. Specify --databases or --all-databases to dump and summarize schemas
  3. # 如果没指定--databases or --all-databases 则不会打印
  4. # Schema #####################################################
  5.   Database  Tables Views SPs Trigs Funcs   FKs Partn
  6.   mysql         38                                 
  7.   aptest         7                                 
  8.   db2            1                                 
  9.   sys_audit      1                                 
  10.   test_db       11                                 
  11.   tpch           8                                 
  12.   Database  InnoDB CSV
  13.   aptest         7   
  14.   db2            1   
  15.   mysql          2   2
  16.   sys_audit      1   
  17.   test_db       11   
  18.   tpch           8   
  19.   Database  BTREE
  20.   aptest        7
  21.   db2           1
  22.   mysql        45
  23.   sys_audit     1
  24.   test_db      19
  25.   tpch         17
  26.   
  27. # 下方部分输出为了紧凑显示,作者将这些列标题设置为垂直输出
  28. # 需要您从顶部向下阅读,第一列是 char ,第二列是 timestamp
  29.               c   t   s   i   t   e   v   f   t   b   s   j   b   m   m   t   d   d   d   d
  30.               h   i   e   n   e   n   a   l   i   i   m   s   l   e   e   i   a   o   a   e
  31.               a   m   t   t   x   u   r   o   n   g   a   o   o   d   d   m   t   u   t   c
  32.               r   e           t   m   c   a   y   i   l   n   b   i   i   e   e   b   e   i
  33.                   s                   h   t   i   n   l           u   u       t   l       m
  34.                   t                   a       n   t   i           m   m       i   e       a
  35.                   a                   r       t       n           t   b       m           l
  36.                   m                                   t           e   l       e            
  37.                   p                                               x   o                    
  38.                                                                   t   b                    
  39.   Database  === === === === === === === === === === === === === === === === === === === ===
  40.   aptest     23           1          58          19                           9   3   2   
  41.   db2                     1                       1                                       
  42.   mysql      64  10   4  46  31  61  25   5  15  23   6   2   4   2   2   2               
  43.   sys_audit                          11                           1                        
  44.   test_db     3   2      33   2      29       4   3   1                       7   2       5
  45.   tpch       16          19          13                                               4   9
复制代码
如果您指定 --databases 或 --all-databases ,该工具将打印以上部分
本节显示了数据库中对象的数量和类型,它是通过运行 mysqldump --no-data 生成的,而不是通过查询INFORMATION_SCHEMA生成
本节中的第一个子报告是每个数据库中按类型划分的对象计数:表、视图等。第二个显示每个数据库中有多少表使用不同的存储引擎。第三个子报告显示每个数据库中每种类型索引的数量。
最后一部分显示每个数据库中各种数据类型的列数。为了紧凑显示,列标题的格式是垂直的,因此您需要从顶部向下阅读。在此示例中,第一列是 char ,第二列是 timestamp
这部分输出的数字都是精确的,不是四舍五入的
  1. # Noteworthy Technologies ####################################
  2.                       SSL | No
  3.      Explicit LOCK TABLES | No
  4.            Delayed Insert | No
  5.           XA Transactions | No
  6.               NDB Cluster | No
  7.       Prepared Statements | No
  8. Prepared statement count | 0
复制代码
此部分显示该服务器上使用的一些特定技术。
  1. # InnoDB #####################################################
  2.                   Version | 8.0.32-8.0.32
  3.          Buffer Pool Size | 2.0G
  4.          Buffer Pool Fill | 70%
  5.         Buffer Pool Dirty | 0%
  6. ......中间省略
  7.       Pending I/O Flushes | 7 buf pool, 0 log
  8.        Transaction States | 3xnot started
复制代码
此部分显示InnoDB 存储引擎的重要配置变量。缓冲池填充百分比和脏百分比是模糊舍入的。最后几行来自 SHOW INNODB STATUS 的输出。
  1. # MyISAM #####################################################
  2.                 Key Cache | 32.0M
  3.                  Pct Used | 20%
  4.                 Unflushed | 0%
复制代码
此部分显示 MyISAM 键缓存的大小,后面是正在使用的缓存百分比和未刷新百分比(四舍五入)
  1. # Security ###################################################
  2.                     Users | 2 users, 0 anon, 0 w/o pw, 2 old pw
  3.             Old Passwords |
复制代码
此部分显示根据对 GreatSQL 系统数据库中的表的查询生成的。它显示了存在多少用户,以及各种潜在的安全风险,例如旧式密码和无密码的用户。
  1. # Binary Logging #############################################
  2.                   Binlogs | 8
  3.                Zero-Sized | 0
  4.                Total Size | 10.6G
  5.             binlog_format | ROW
  6.          expire_logs_days | 0
  7.               sync_binlog | 1
  8.                 server_id | 3306
  9.              binlog_do_db |
  10.          binlog_ignore_db |
复制代码
此部分显示二进制日志的配置和状态。如果存在大小为0的二进制日志,则可能是二进制日志索引与磁盘上实际存在的二进制日志不同步。
  1. # Noteworthy Variables #######################################
  2.      Auto-Inc Incr/Offset | 1/1
  3.    default_storage_engine | InnoDB
  4.                flush_time | 0
  5.              init_connect |
  6.                 init_file |
  7.                  sql_mode |
  8.                 ......中间省略
  9. log_queries_not_using_indexes | ON
  10.         log_slave_updates | ON
复制代码
此部分显示几个值得注意的服务器配置变量,在使用该服务器时了解这些变量可能很重要。
  1. # Configuration File #########################################
  2.               Config File | /etc/my.cnf
复制代码
最后部分显示 my.cnf 文件的精美打印版本,其中删除了注释并添加了空格以对齐内容以便于阅读。
pt-variable-advisor

概要

这是一款分析参数,并且给出参数设置建议的工具
用法

  • pt-variable-advisor [OPTIONS] [DSN]
选项

该工具所有选项如下
参数含义--ask-pass连接 GreatSQL/MySQL 时提示输入密码--charset字符集--config读取这个逗号分隔的配置文件列表,如果指定,这必须是命令行上的第一个选项--daemonize后台运行--database连接到该数据库--defaults-file只从给定文件中读取 GreatSQL/MySQL 选项--help显示帮助--host要连接的主机--ignore-rules忽略这些规则 ID--password连接时使用的密码--pid创建给定的 PID 文件--port连接时使用的端口号--set-vars在这个以逗号分隔的 variable=value 对列表中设置 GreatSQL/MySQL 变量--socket用于连接的套接字文件--source-of-variables从此源读取 SHOW VARIABLES--user登录的用户--verbose增加输出的详细程度--version显示版本--[no]version-check版本检查最佳实践

分析本地GreatSQL数据库参数的一些建议
  1. $ pt-variable-advisor localhost
  2. # WARN delay_key_write: MyISAM index blocks are never flushed until necessary.
  3. # WARN innodb_log_buffer_size: The InnoDB log buffer size generally should not be set larger than 16MB.
  4. # NOTE read_buffer_size-1: The read_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.
  5. # NOTE read_rnd_buffer_size-1: The read_rnd_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.
  6. # NOTE sort_buffer_size-1: The sort_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.
  7. # WARN expire_logs_days: Binary logs are enabled, but automatic purging is not enabled.
  8. # NOTE innodb_data_file_path: Auto-extending InnoDB files can consume a lot of disk space that is very difficult to reclaim later.
  9. # WARN myisam_recover_options: myisam_recover_options should be set to some value such as BACKUP,FORCE to ensure that table corruption is noticed.
复制代码
当然也可以把SHOW VARIABLES输出的结果保存在pt_va.txt文件中,然后再用工具分析
  1. $ pt-variable-advisor localhost --source-of-variables pt_va.txt
复制代码
个人觉得除了非常明显的错误,否则这个建议没有太多的意义。
这里也推荐一个网页版的GreatSQL/MySQL状态诊断工具,由叶老师出品➡https://imysql.com/my-state-diag.html

本文完
来源:https://www.cnblogs.com/greatsql/p/18268244
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
来自手机

举报 回复 使用道具