位置: 编程技术 - 正文
推荐整理分享percona-toolkit对MySQL的复制和监控类操作教程,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
复制类工具1. pt-heartbeat功能介绍:监控mysql复制延迟用法介绍:pt-heartbeat [OPTION...] [DSN] --update|--monitor|--check|--stop测量复制落后主mysql或者主PostgreSQL多少时间,你可以使用这个脚本去更新主或者监控复制,具体用法见后面的示例.原理:pt-heartbeat通过真实的复制数据来确认mysql和postgresql复制延迟,这个避免了对复制机制的依赖,从而能得出准确的落后复制时间,包含两部分:第一部分在主上pt-heartbeat的--update线程会在指定的时间间隔更新一个时间戳,第二部分是pt-heartbeat的--monitor线程或者--check线程连接到从上检查复制的心跳记录(前面更新的时间戳),并和当前系统时间进行比较,得出时间的差异。你可以手工创建heartbeat表或者添加--create-table参数,推荐使用MEMORY引擎。表结构为:
使用示例:范例1:创建一个后台进程定期更新主上的test库的heartbeat表()默认是1s,可以--interval指定,执行后会成一个heartbeat表,test库为我监控的同步库:
范例2:监控复制在slave上的落后程度(会一直监控):
监控结果如下:
范例3:监控复制在slave上的落后程度(监控一次退出):
范例4:监控PostgreSQL需要添加--dbi-driver Pg:
2. pt-slave-delay功能介绍:设置从服务器落后于主服务器指定时间。用法介绍:pt-slave-delay [OPTION...] SLAVE-HOST [MASTER-HOST]原理:通过启动和停止复制sql线程来设置从落后于主指定时间。默认是基于从上relay日志的二进制日志的位置来判断,因此不需要连接到主服务器,如果IO进程不落后主服务器太多的话,这个检查方式工作很好,如果网络通畅的话,一般IO线程落后主通常都是毫秒级别。一般是通过--delay and --delay"+"--interval来控制。--interval是指定检查是否启动或者停止从上sql线程的频繁度,默认的是1分钟检查一次。使用示例:范例1:使从落后主1分钟,并每隔1分钟检测一次,运行分钟
如果不加--run-time参数会一直执行。范例2:使从落后主1分钟,并每隔秒钟检测一次,运行分钟
运行结果如下:
3. pt-slave-find功能介绍:查找和打印mysql所有从服务器复制层级关系用法介绍:pt-slave-find [OPTION...] MASTER-HOST原理:连接mysql主服务器并查找其所有的从,然后打印出所有从服务器的层级关系。使用示例:范例1:查找主服务器为..3.的mysql有所有从的层级关系:
4. pt-slave-restart功能介绍:监视mysql复制错误,并尝试重启mysql复制当复制停止的时候用法介绍:pt-slave-restart [OPTION...] [DSN]监视一个或者多个mysql复制错误,当从停止的时候尝试重新启动复制。你可以指定跳过的错误并运行从到指定的日志位置。使用示例:范例1:监视..3.的从,跳过1个错误
范例2:监视..3.的从,跳过错误代码为的错误。
5. pt-table-checksum功能介绍:检查mysql复制一致性用法介绍:pt-table-checksum [OPTION...] [DSN]工作原理:pt-table-checksum在主上执行检查语句在线检查mysql复制的一致性,生成replace语句,然后通过复制传递到从,再通过update更新master_src的值。通过检测从上this_src和master_src的值从而判断复制是否一致。注意:使用的时候选择业务地峰的时候运行,因为运行的时候会造成表的部分记录锁定。使用--max-load来指定最大的负载情况,如果达到那个负载这个暂停运行。如果发现有不一致的数据,可以使用pt-table-sync工具来修复。注意:和1.0版本不同,新版本的pt-table-checksum只需要在master上执行即可。通过 ?explain参数再结合二进制日志就可以看出脚本的工作原理,如我的test库有一个名字为zhang的表,我们通过抓取二进制日志来查看脚本的原理:
从这里可以很明显的看出原理了,前面已经说了,这里就不赘述了。使用示例:范例1:比较test数据库同步是否一致,结果显示所有的表。
参数说明:第一次运行的时候需要添加--create-replicate-table参数,如果不加这个就需要手工运行添加表结构的SQL,表结构SQL如下:
之所以使用--nocheck-replication-filters参数是因为我的my.cnf配置了replicate-ignore-db和replicate-wild-do-table等参数。另外需要特别注意执行的checksums所在的数据库必须是同步的数据库。我刚开始使用的时候摸索的很久,官网也没有范例。呵呵!结果如下:
从结果中,我们可以看到test.aaa和test.heartbeat表的DIFFS不为0,那么就是这两个表不同步了。 范例2:比较test数据库同步是否一致,结果只显示数据不一致的表(添加--replicate-check-only参数即可,这个值查看checksums数据不会重新对表进行比较,因此需要先运行上面的比较语句之后再运行这个语句,否则显示不了最新的变化。)。
结果如下:
从结果可以看出,只显示了两个不同步的表。
6. pt-table-sync功能介绍:高效同步mysql表的数据用法介绍:pt-table-sync [OPTION...] DSN [DSN...]原理:总是在主上执行数据的更改,再同步到从上,不会直接更改成从的数据,在主上执行更改是基于主上现在的数据,不会更改主上的数据。注意使用之前先备份你的数据,避免造成数据的丢失.执行execute之前最好先换成--print或--dry-run查看一下会变更哪些数据。使用示例:范例1:同步3.的test库的aaa表到..3.,在执行之前可以用--execute参数换成--print来查看会变更什么东西,后面那个主机必须是master,否则会报错推出。
范例2:将主的test数据库同步到..3.,使从上具有一样的数据。
范例3:只同步指定的表
范例4:根据pt-table-checksum的结果进行数据同步
范例5:根据pt-table-checksum使从的数据和主的数据一致
监控类工具1. pt-deadlock-logger功能介绍:提取和记录mysql死锁的相关信息用法介绍:pt-deadlock-logger [OPTION...] SOURCE_DSN收集和保存mysql上最近的死锁信息,可以直接打印死锁信息和存储死锁信息到数据库中,死锁信息包括发生死锁的服务器、最近发生死锁的时间、死锁线程id、死锁的事务id、发生死锁时事务执行了多长时间等等非常多的信息。详情见下面的示例。使用示例:范例1:打印本地mysql的死锁信息
范例2:将本地的mysql死锁信息记录到数据库的表中,也打印出来
2. pt-fk-error-logger功能介绍:提取和记录mysql外键错误信息用法介绍:pt-fk-error-logger [OPTION...] SOURCE_DSN通过SHOW INNODB STATUS提取和保存mysql数据库最近发生的外键错误信息。可以通过参数控制直接打印错误信息或者将错误信息存储到数据库的表中。使用示例:我在服务器上运行的时候一直报如下错误:
我怀疑是这个程序有问题,回头换一个版本试一下或者调试一下那个程序。 3. pt-mext功能介绍:并行查看SHOW GLOBAL STATUS的多个样本的信息。用法介绍:pt-mext [OPTIONS] -- COMMAND原理:pt-mext执行你指定的COMMAND,并每次读取一行结果,把空行分割的内容保存到一个一个的临时文件中,最后结合这些临时文件并行查看结果。使用示例:范例1:每隔s执行一次SHOW GLOBAL STATUS,并将结果合并到一起查看
4. pt-query-digest功能介绍:分析查询执行日志,并产生一个查询报告,为MySQL、PostgreSQL、 memcached过滤、重放或者转换语句。用法介绍:pt-query-digest [OPTION...] [FILE]解析和分析mysql日志文件使用示例:范例1:分析本地的慢查询文件
范例2:重新回顾满查询日志,并将结果保存到query_review中,注意query_review表的表结构必须先建好,表结构如下:
命令如下:
5. pt-trend功能介绍:居于一组时间序列的数据点做统计。用法介绍:pt-trend [OPTION...] [FILE ...]读取一个慢查询日志,并输出统计信息。也可以指定多个文件。如果不指定文件的话直接从标准输入中读取信息。使用示例:范例1:读取本地慢查询日志并输出统计信息
使用percona-toolkit操作MySQL的实用命令小结 1.pt-archiver功能介绍:将mysql数据库中表的记录归档到另外一个表或者文件用法介绍:pt-archiver[OPTION...]--sourceDSN--whereWHERE这个工具只是归档旧的数据,不
关于MySQL外键的简单学习教程 在MySQL中,InnoDB引擎类型的表支持了外键约束。外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少
MySQL中的主键以及设置其自增的用法教程 1、声明主键的方法:您可以在创建表的时候就为表加上主键,如:CREATETABLEtbl_name([字段描述省略...],PRIMARYKEY(index_col_name));也可以更新表结构时为表加上
标签: percona-toolkit对MySQL的复制和监控类操作教程
本文链接地址:https://www.jiuchutong.com/biancheng/312363.html 转载请保留说明!友情链接: 武汉网站建设