计算 MySQL PXC gcache

计算 MySQL PXC gcache

我正在尝试弄清楚如何为我的服务器计算正确的 gcache,然后偶然发现了以下帖子,讨论了如何做到这一点:

https://www.percona.com/blog/2014/09/08/calculate-correct-size-percona-xtradb-clusters-gcache/

在帖子中,讨论了执行以下操作来获取计算所需的值:

show global status like 'wsrep_received_bytes';
show global status like 'wsrep_replicated_bytes';
select sleep(60);
show global status like 'wsrep_received_bytes';
show global status like 'wsrep_replicated_bytes';

我的问题是,在生产中运行 select sleep(60) 会阻止 MySQL 上的所有读取(通过保持 mysqld 线程繁忙)吗?如何计算生产中的最佳 gcache 值?

答案1

MySQL 是多线程的。 sleep(60) 将占用一个连接(也可能占用一个线程),但不会阻塞整个服务器。最大连接数和并发运行线程数在 中设置my.cnf。 (在生产环境中,你可能也有ProxySQL等设置)。

如果您担心连接中断,避免这种情况的简单方法是断开连接、休眠并重新连接。例如,在 shell 中:

#!/bin/sh
mysql -e "show global status like 'wsrep_received_bytes'; show global status like 'wsrep_replicated_bytes';"
sleep 60
mysql -e "show global status like 'wsrep_received_bytes'; show global status like 'wsrep_replicated_bytes';"

大多数编程/脚本语言都可以完成类似的操作。

警告:在尝试调整 MySQL 之前,您似乎需要了解更多有关 MySQL 的知识。尤其是在生产环境中。就此而言,您应该有一个测试(甚至开发!)环境,您可以在其中尝试类似的东西sleep并找出它的作用。

相关内容