zoukankan      html  css  js  c++  java
  • 【MySQL】percona-toolkit工具包

    【说明】

      percona-toolkit工具包是一组高级的管理mysql的工具包集,可以用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,下载和安装都很简单https://www.percona.com。生产环境中使用过其中若干工具,极大的提高效率且解决了遇到的问题,特此整理一下备忘,同时推荐使用。

    【安装】

    一.检查和安装Perl依赖包

        percona工具是使用Perl语言编写和执行的,所以需要系统中要有Perl依赖包。依赖包检查命令为:

    rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL

     如果机器上没有依赖包,安装

    yum install perl-DBI
    yum install perl-DBD-MySQL
    yum install perl-Time-HiRes
    yum install perl-IO-Socket-SSL

    二.下载安装percona toolkit包

    1、下载和安装percona toolkit的包

    参照:https://www.percona.com/doc/percona-toolkit/3.0/installation.html#installing-percona-toolkit-on-red-hat-or-centos

    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

    2.安装percona-toolkit工具包

    yum install percona-toolkit

    安装成功,最后有“Complete!

    【功能】 

    分类

    工具命令

    工具作用

    备注

    开发类

    pt-duplicate-key-checker

    列出并删除重复的索引和外键

     

    pt-online-schema-change

    在线修改表结构

    常用。

    InndoDB有部分语句不支持在线DDL,大表DDL操作阻塞会影响查询、主从同步等问题。

    该工具,会先新建立一个要改变后的表,然后分批拷贝原表数据到新表中,不会影响原表使用。完全同步后,重命名新表,更安全的在线执行DDL。

    /usr/local/bin/pt-online-schema-change --user=用户名 --password=密码 --host=数据库IP --port=端口号 --charset=utf8mb4 --nodrop-old-table --alter="sql语句片段,例如add column xxfieldname' " D=ad_api,t=t_ad_req_log --exec

    pt-query-advisor

    分析查询语句,并给出建议,有bug

    已废弃

    pt-show-grants

    规范化和打印权限

    常用。 

    可导出create user和grant授权语句,迁移数据库账号时使用

    pt-upgrade

    在多个服务器上执行查询,并比较不同

     

    性能类

    pt-index-usage

    分析日志中索引使用情况,并出报告

     

    pt-pmp

    为查询结果跟踪,并汇总跟踪结果

     

    pt-visual-explain

    格式化执行计划tree方式输出

     

    pt-table-usage

    分析日志中查询并分析表使用情况

    pt 2.2新增命令

    配置类

    pt-config-diff

    比较配置文件和参数

    常用。

    MySQL8之前,在线set变量不支持persist,如果忘记在配置文件中同步修改,MySQL重启后会读取配置文件中的老变量导致出现问题。pt-config-diff工具可以比较当前在线变量和配置文件变量的差异,常用。

    pt-mysql-summary

    mysql配置和status进行汇总

     精细地对 mysql 的配置和 sataus 信息进行汇总

    pt-variable-advisor

    分析参数,并提出建议

     

    监控类

    pt-deadlock-logger

    提取和记录mysql死锁信息

     常用。死锁信息记录,使用方法:

    1.set global innodb_print_all_deadlocks=on;

    2.pt-deadlock-logger u=dba,p=密码,h=数据库ip --create-dest-table --dest u=dba,p=密码,h=数据库ip,D=crn,t=deadlock

    pt-fk-error-logger

    提取和记录外键信息

     

    pt-mext

    并行查看status样本信息

     

    pt-query-digest

    分析查询日志,并产生报告

    常用命令,慢查询日志分析工具

    pt-trend

    按照时间段读取slow日志信息

    已废弃

    复制类

    pt-heartbeat

    监控mysql复制延迟

    常用。主从延迟监控。

    show slave status G;查看Seconds_behind_Master参数是基于slave生成的relaylog与master时间差值,并不准确。例如执行一个大事务,主从延迟已发生,但relaylog还未生成。

    pt-heartbeat工具可以规避该问题,使用的是Master后台周期写入,slave后台周期读取的方式。

    pt-heartbeat --user=用户名 --password=密码 -h master --createtable --database 监测库名 --update --daemonize --interval 周期秒数

    pt-heartbeat --user=用户名 --password=密码 -h slave --database crn --monitor--daemonize --log 监控日志路径和名称

    pt-slave-delay

    设定从落后主的时间

     

    pt-slave-find

    查找和打印所有mysql复制层级关系

     

    pt-slave-restart

    监控salve错误,并尝试重启salve

    监控一个或者多个MySQL复制slave,试图跳过引起错误的语句。以指数变化的睡眠时间智能检查slave。可以指定要跳过的错误然后运行slave,一直到一个确定的binlog位置。一旦检测到slave有错误就会打印一行。默认打印:时间戳、连接信息、relay_log_file,relay_log_pos,last_errno。

    pt-table-checksum

    校验主从复制一致性

    常用。判断主从是否同步。

    在主库上执行校验,然后对复制的一致性进行检查,来对比主从之间的校验值,并输出对比结果。

    pt-table-sync

    高效同步表数据

     常用。修复主从同步不一致

    pt-table-sync --replicate=test.checksums h=MasterIP,u=Master用户名,p=Master密码,P=Master端口  h=SlaveIP,u=Slave用户名,p=Slave密码,P=Slave端口 --print

    系统类

    pt-diskstats

    查看系统磁盘状态

     打印磁盘 io 统计信息,比 iostat 输出更细

    pt-fifo-split

    模拟切割文件并输出

     

    pt-summary

    收集和显示系统概况

     

    pt-stalk

    出现问题时,收集诊断数据

     

    pt-sift

    浏览由pt-stalk创建的文件

    pt 2.2新增命令

    pt-ioprofile

    查询进程IO并打印一个IO活动表

    pt 2.2新增命令

    实用类

    pt-archiver

    将表数据归档到另一个表或文件中

     

    pt-find

    查找表并执行命令

     

    pt-kill

    Kill掉符合条件的sql

    常用命令

    pt-align

    对齐其他工具的输出

    pt 2.2新增命令

    pt-fingerprint

    将查询转成密文

    pt 2.2新增命令

  • 相关阅读:
    Spring Boot 的单元测试和集成测试
    Containers vs Serverless:你选择谁,何时选择?
    Java13新特性
    Java中创建对象的5种方法
    最好的重试是指数后退和抖动
    杂谈:面向微服务的体系结构评审中需要问的三个问题
    使用Quarkus在Openshift上构建微服务的快速指南
    Java EE—最轻量级的企业框架?
    AQS机制
    JVM-内存模型
  • 原文地址:https://www.cnblogs.com/wwcom123/p/10734363.html
Copyright © 2011-2022 走看看