使用percona工具升级数据库

1.pt-upgrade

运行应用程序的SELECT查询,并生成有关每种查询模式如何在我们测试的不同MySQL版本的服务器上执行的报告。用于检测是否可以安全地升级或降级到某个版本。

pt-upgrade可以执行慢查询日志,通用日志,二进制日志,tcpdump,以及raw日志。

 

场景1:host to host

pt-upgrade h=host1 h=host2 slow.log

 

场景2:reference results to host

这里reference results是mysql server执行完成并保存到磁盘的结果,必须先用--save-results生成reference results。这可能会需要更多的磁盘空间,如果想在多个版本之间进行比较,这个方法比较适合。

pt-upgrade h=host1 --save-results host1_results/ slow.log

pt-upgrade host1_results1/ h=host2

使用的要点:一致性环境和一致性数据对测试产生一个精确的报告很重要。不要在生产或活跃的mysql server上执行测试。建议测试的数据要一样。

缺省情况下,pt-upgrade只是执行select和set语句(不包括select...into)。如果还想比较insert、update、delete,可以使用参数--no-read-only。如果使用的是binlog,必须要指定--no-read-only,因为binlog不包含select语句。

 

只读比较:建议执行两次,第一次作为热身,第二次才作为比较结果

$ pt-upgrade h=Test1 h=Test2 --max-examples=1 <digest>.out 1> pt-upgrade_results.out 2> pt-upgrade_results.err

pt-upgrade会将结果输出到STDOUT,而内部warnings、errors和--progress会输出到STDERR,将二者分开,就可以如下输出设置:

pt-upgrade ... 1>report 2>err &

 

读写比较:

$ pt-upgrade h=Test1 h=Test2 --no-read-only --max-examples=1 <digest>.out 1> pt-upgrade_results_RW.out 2> pt-upgrade_results_RW.err

 

pt-upgrade本身不产生事务,但是日志中的事务会按照其原始的方式执行。但是pt-upgrade不是用来测试事务型任务的。

 

当pt-upgrade运行时,它会尽快打印有差异的查询。为了防止报告变得太长,查询不会单独报告,而是分组到类中。通过删除文字值、规范化空格等创建。因此,这些查询属于同一类:

SELECT c FROM t WHERE id = 1
SELECT c FROM t WHERE id=5
select c from t where id = 9

统一归类为:

select c from t where id=?

 

2.pt-query-digest

分析慢查询的工具

如果慢日志太大,可以取样分析,比如;

Note: When processing large slow logs, the tool may use some memory, so keep an eye on it if you're running it on production servers.
pt-query-digest --sample 50 --no-report --output slowlog <slow_log_file> > <digest>.out

 

3.pt-config-diff

比较mysql设置的差异。

pt-config-diff h=<Testnode1> h=<Testnode2>

 

上一篇:#131. 「7-4」D、周末舞会


下一篇:msf流量通讯特征修改