将来的你
一定会感谢现在拼命努力的自己

MySQL命令行工具:percona-toolkit安装使用初探

导读:percona-toolkit 源自 Maatkit 和 Aspersa 工具,这两个工具是管理 mysql 的最有名的工具,现在 Maatkit 工具已经不维护了,请大家还是使用 percona-toolkit 吧!这些工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,作为一个优秀的 DBA,里面有的工具非常有用,如果能掌握并加以灵活应用,将能极大的提高工作效率。

MySQL命令行工具:percona-toolkit安装使用初探

一、 工具简介

percona-toolkit 是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的 mysql 任务和系统任务,这些任务包括:

  • 检查 master 和 slave 数据的一致性
  • 有效地对记录进行归档
  • 查找重复的索引
  • 对服务器信息进行汇总
  • 分析来自日志和 tcpdump 的查询
  • 当系统出问题的时候收集重要的系统信息

二、工具安装

①、下载安装包

Percona-toolkit 安装包:

最新 rpm 包:http://percona.com/get/percona-toolkit.rpm

最新编译包:http://percona.com/get/percona-toolkit.tar.gz (本文略)

 

Perl-TermReadKey 安装包:

访问:http://pkgs.repoforge.org/perl-TermReadKey/ 下载最新 rpm 安装包

②、安装记录

若发现缺失组件,则使用 yum 在线安装即可:

 yum install -y perl-IO-Socket-SSL  

成功安装后,系统会多出如下 pt 命令:

三、使用初探

pt 有很多实用功能,但我就是奔着 alter 不锁表去的,所以率先测试 pt-online-schema-change 这个字段属性修改工具。

  • pt-online-schema-change

①、功能介绍

如果没有这个工具,直接使用 alter 修改字段,过程如下:

  • 按照原始表(original_table)的表结构和 DDL 语句,新建一张不可见的临时表;
  • 在原表上加 write lock,此时对原表的所有 U D I DDL 都是阻塞的;
  • 执行 insert into tmp_table select * from oldtable;
  • rename oldtable 和 tmp_table,再 drop oldtable;
  • 释放 write lock。

为了避免锁表,该换 pt-online-schema-change 出马了!

pt-online-schema-change 的 工作过程解析如下:

  • 如果存在外键,根据 alter-foreign-keys-method 参数的值,检测外键相关的表,做相应设置的处理。
  • 创建一个和你要执行 alter 操作的表一样的新的空表结构(是 alter 之前的结构)。
  • 在新表执行 alter table 语句,
    在原表中创建触发器(3 个)三个触发器分别对应 insert,update,delete 操作
    从原表拷贝数据到临时表,拷贝过程中通过原表上的触发器在原表进行的写操作都会更新到新建的临时表。
  • Rename 原表到 old 表中,在把临时表 Rename 为原表,默认最后将原表删除,将原表上所创建的触发器删除。

因此,这个工具有如下限制:

  • 表必须是单一列的主键或者单一唯一键。
  • 若表存在外键,则需要指定参数 --alter-foreign-keys-method=auto|rebuild_constraints|drop_swap|none,而且外键不能有错误
  • 表上不能有触发器,否则修改失败。如果有触发器,需要先删除触发器再执行 PT,最后再增加触发器。

②、demo

③、测试记录

在测试数据库上随便导入了一份现网的数据,居然就让我碰到了触发器和外键,人品不错!

测试数据,本机无密码,所以直接执行:

结果如下报错:

对象表存在触发器!于是,将其中某个表的触发器全部删除,继续执行,又发现如下错误:

对象表存在外键!

于是加入 –alter-foreign-keys-method=drop_swap 参数成功执行:

新增字段成功:MySQL命令行工具:percona-toolkit安装使用初探

四、教程分享

除此之外,percona-toolkit 还有很多实用功能,比如:

pt-config-diff : 比较本地与远程 MySQL 配置文件差异

pt-heartbeat : MySQL 主从复制延迟监控

pt-slave-find : 查找和打印所有从服务器复制层级关系

pt-table-checksum : 主从复制一致性检查

等等...

本文篇幅有限,且奔着不锁表在线修改表字段功能去的,更多功能的探索这里附上 percona-toolkit 中文使用教程:

文件下载

赞(0) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@3yyy.top。文章观点不代表本站立场。本站原创内容未经允许不得转载:三叶运维 » MySQL命令行工具:percona-toolkit安装使用初探
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏