8.4. 在 MariaDB 集群中测试数据库复制性能
要检查 MariaDB Galera 集群的性能,请通过检查特定的 wsrep 数据库变量在集群的复制吞吐量上运行基准测试。
每次查询这些变量时,FLUSH STATUS 命令都会重置变量值。要运行基准测试,您必须运行多个查询并分析差异。这些差异可帮助您确定影响集群性能的流控制量。
流控制是集群用来管理复制的机制。当本地接收队列超过特定阈值时,流控制会暂停复制,直到队列大小停机为止。有关流控制的更多信息,请参阅 Galera 集群网站上的流控制。
流程
运行以下命令,将 <
;variable> 替换为您要检查的wsrep数据库变量:$ sudo podman exec galera-bundle-podman-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW STATUS LIKE <variable>;"下表列出了可用于测试数据库复制性能的
wsrep数据库变量。Expand 表 8.3. 检查数据库复制性能的数据库变量 变量 概述 使用方法 wsrep_local_recv_queue_avg最后一次查询后本地接收写入队列的平均大小。
高于 0.0 的值表示节点无法像接收写集那样快速应用写集,这会触发复制节流。检查
wsrep_local_recv_queue_min和wsrep_local_recv_queue_max,以了解这个基准的详情。wsrep_local_send_queue_avg最后一次查询后的平均发送队列长度。
值高于 0.0 表示复制节流和网络吞吐量问题的可能性较高。
wsrep_local_recv_queue_minandwsrep_local_recv_queue_max最后一次查询后本地接收队列的最小和最大大小。
如果
wsrep_local_recv_queue_avg的值高于 0.0,您可以检查这些变量以确定队列大小的范围。wsrep_flow_control_paused流控制在最后一次查询后暂停节点的部分。
高于 0.0 的值表示 Flow Control 暂停节点。要确定暂停的持续时间,请将
wsrep_flow_control_paused值与查询之间的秒数相乘。最佳值尽可能接近 0.0。例如:
-
如果在最后一次查询的 1 分钟后
wsrep_flow_control_paused的值为 0.50,则 Flow Control 会暂停节点 30 秒。 -
如果在最后一次查询后
wsrep_flow_control_paused的值为 1.0,则 Flow Control 会暂停整个一分钟的节点。
wsrep_cert_deps_distance可以并行应用的最低序列号和最高序列号(
seqno)值的平均区别如果出现节流和暂停,这个变量表示平均可以并行应用多少写集。将值与
wsrep_slave_threads变量进行比较,以查看实际可以同时应用多少写集。wsrep_slave_threads可同时应用的线程数量
您可以增加此变量的值来同时应用更多线程,这也会增加
wsrep_cert_deps_distance的值。wsrep_slave_threads的值不能大于节点的 CPU 内核数。例如,如果
wsrep_cert_deps_distance的值是20,您可以将wsrep_slave_threads的值从2增加到4,以增加节点可以应用的写入集量。如果有问题的节点已经有一个最佳
wsrep_slave_threads值,您可以在调查可能的连接问题时从集群中排除该节点。-
如果在最后一次查询的 1 分钟后