代码学堂(uxuew.cn)提供付费解决PHP WEB开发等技术服务,如果需要请 点击加我QQ:1662935793.
>数据库 > MySQL教程 > MySQL命令行工具:percona-toolkit安装使用初探

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

MySQL教程 围观3682次 更新日期:2017-06-16 15:52:55 留下足迹

一、 工具简介

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

  • 检查masterslave数据的一致性
  • 有效地对记录进行归档
  • 查找重复的索引
  • 对服务器信息进行汇总
  • 分析来自日志和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 : 主从复制一致性检查

等等...

转载请注明:代码学堂>数据库 > MySQL教程 > MySQL命令行工具:percona-toolkit安装使用初探

喜欢 (542) or 分享 (209)