什么是流量控制?

Percona XtraDB Cluster具有一种称为流控制的自调节机制。该机制有助于避免集群中最弱/最慢的成员明显落后于集群中其他成员的情况。

当集群成员在写数据很慢(同时又继续从群集组通道接收写集)时,传入/接收队列的大小会增加。如果此队列超过设置的阈值(gcs.fc_limit),则该节点将发出FLOW_CONTROL消息,要求其他成员放慢或暂停处理。

gcs.fc_limit

此设置控制何时启用流量控制。 简而言之,如果wsrep_local_recv_queue在给定节点上超过此大小,则将发送暂停的流控制消息。

fc_limit默认为16个事务。 这实际上意味着,这可以使给定节点位于从集群提交事务的后面。

gcs.fc_master_slave

如果禁用了fc_master_slave(默认情况下),则会动态修改fc_limit。 该模式实际上是根据集群中节点的数量动态调整fc_limit的。 群集中的节点越多,计算出的fc_limit越大。 其背后的理论是,集群获得的规模越大(并且可能来自更多节点的写操作越忙),每个节点的应用空间就越远。

如果仅写入PXC中的单个节点,则建议您通过设置fc_master_slave = YES来禁用此功能。 无论是否动态调整fc_limit的大小,此设置实际上只不过是要更改。 它没有任何其他能力可以帮助PXC中的单节点提高更好的写能力。

gcs.fc_factor

如果fc_limit控制何时启用流控制,则fc_factor在释放时进行寻址。 该系数是介于0.0到1.0之间的数字,该数字乘以当前的fc_limit(如果fc_master_slave = NO,则通过上述计算进行调整)。 这样就产生了在节点发出另一条流控制消息之前,recv队列必须降至低于事务级别的事务数,该消息向群集授予了继续复制的权限。

fc_factor默认为0.5,这意味着在恢复复制之前,队列必须降至fc_limit的50%以下。 在这种情况下,较大的fc_limit可能意味着要等待很长时间才能再次放松流量控制。 但是,最近将此值修改为默认值1.0,以允许复制尽快恢复。

对于最终用户来说,流控是透明的,但是对于集群管理员而言,重要的是要知道节点是否在使用流控制。如果是这样,它将影响整个群集的生产率。

查找节点是否处于流控制中

FLOW_CONTROL不是持久状态。队列大小超过设置的阈值后,节点将进入FLOW_CONTROL。一旦队列大小回到低端水印以下,它将再次释放。

如何看待较高和较低的阈值

从Percona XtraDB Cluster 5.7.17-29.20开始,现在可以通过SHOW STATUS来查看较低和较高阈值:

mysql> show status like 'wsrep_flow_control_interval';
+-----------------------------+----------------+
| Variable_name | Value |
+-----------------------------+----------------+
| wsrep_flow_control_interval | [ 3547, 3547 ] |
+-----------------------------+----------------+
1 row in set (0.01 sec)

如您所见,wsrep_flow_control_interval状态变量发出一个范围,该范围代表较低和较高的水平。值集(3547, 3547)表示如果传入队列大小大于3547,则启用FLOW_CONTROL。如果大小小于3547,则释放FLOW_CONTROL。

尽管如此,这仍无法显示节点在任何给定时刻是否正在使用FLOW_CONTROL。

为了解决这个问题,PXC在版本中同时引入了wsrep_flow_control_status状态变量。此布尔值状态变量告诉用户该节点是否在FLOW_CONTROL中。一旦节点处于流控制之外,则当节点采用流控制时,变量将切换为OFF,反之则为ON

mysql> show status like '%flow%';
+-------------------------------------------------------+----------------+
| Variable_name | Value |
+-------------------------------------------------------+----------------+
| Innodb_scrub_background_page_split_failures_underflow | 0 |
| Ssl_session_cache_overflows | 370780 |
| Table_open_cache_overflows | 0 |
| wsrep_flow_control_paused_ns | 7056357841773 |
| wsrep_flow_control_paused | 0.000901 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 176 |
| wsrep_flow_control_interval | [ 3547, 3547 ] |
| wsrep_flow_control_interval_low | 3547 |
| wsrep_flow_control_interval_high | 3547 |
| wsrep_flow_control_status | OFF |
+-------------------------------------------------------+----------------+

最后,wsrep_flow_control_sent / recv计数器可用于跟踪FLOW_CONTROL状态。这显示了流控制启动的总次数。您可以使用FLUSH STATUS清除它们。

mysql> show global status like 'wsrep_flow%';
+----------------------------------+----------------+
| Variable_name | Value |
+----------------------------------+----------------+
| wsrep_flow_control_paused_ns | 6893631531679 |
| wsrep_flow_control_paused | 0.000413 |
| wsrep_flow_control_sent | 5366 |
| wsrep_flow_control_recv | 5369 |
| wsrep_flow_control_interval | [ 3547, 3547 ] |
| wsrep_flow_control_interval_low | 3547 |
| wsrep_flow_control_interval_high | 3547 |
| wsrep_flow_control_status | OFF |
+----------------------------------+----------------+ mysql> flush status mysql> show global status like 'wsrep_flow%';
+----------------------------------+----------------+
| Variable_name | Value |
+----------------------------------+----------------+
| wsrep_flow_control_paused_ns | 6893631531679 |
| wsrep_flow_control_paused | 0.000413 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_flow_control_interval | [ 3547, 3547 ] |
| wsrep_flow_control_interval_low | 3547 |
| wsrep_flow_control_interval_high | 3547 |
| wsrep_flow_control_status | OFF |
+----------------------------------+----------------+

Percona XtraDB Cluster之流量控制的更多相关文章

  1. 如何搭建Percona XtraDB Cluster集群

    一.环境准备 主机IP                     主机名               操作系统版本     PXC 192.168.244.146     node1           ...

  2. PXC(Percona XtraDB Cluster)集群的安装与配置

    Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...

  3. Percona XtraDB Cluster(转)

    Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...

  4. 使用percona xtradb cluster的IST方式添加新节点

    使用percona xtradb cluster的IST(Incremental State Transfer)特性添加新节点,防止新节点加入时使用SST(State SnapShop Transfe ...

  5. mysql高可用之PXC(Percona XtraDB Cluster)

    简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...

  6. docker1.12 安装pxc(Percona XtraDB Cluster )测试

    docker1.12 安装pxc(Percona XtraDB Cluster )测试

  7. 1.1 About Percona XtraDB Cluster

    摘要: 出处:kelvin19840813 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎 ...

  8. PXC5.7(Percona XtraDB Cluster)+HAproxy+Keepalived 集群部署

    Percona-XtraDB-Cluster+Haproxy 搭建集群环境 环境准备及服务器信息: 配置防火墙 firewall-cmd --add-port=3306/tcp --permanent ...

  9. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

随机推荐

  1. Codeforces Round #667 (Div. 3) D. Decrease the Sum of Digits (贪心)

    题意:给你一个正整数\(n\),每次可以对\(n\)加一,问最少操作多少次是的\(n\)的所有位数之和不大于\(s\). 题解:\(n\)的某个位置上的数进位,意味这后面的位置都可以被更新为\(0\) ...

  2. 树状数组 && 板子

    本文树状数组讲解转载于:https://www.cnblogs.com/xenny/p/9739600.html 本文新加内容为模板代码部分 1.什么是树状数组? 顾名思义,就是用数组来模拟树形结构呗 ...

  3. VS Code 搭建合适的 markdown 文档编写环境

    写在开头,之前我是使用Gitee与Github作为图床和Picgo搭配Typora使用的 ,但因为最近觉得这样还是稍微比较繁琐,然后因为VS Code是我的主要文本编辑器.Cpp,Python等均是在 ...

  4. codeforces 8C(非原创)

    C. Looking for Order time limit per test 4 seconds memory limit per test 512 megabytes input standar ...

  5. HDU 6623 Minimal Power of Prime(思维)题解

    题意: 已知任意大于\(1\)的整数\(a = p_1^{q_1}p_2^{q_2} \cdots p_k^{q_k}\),现给出\(a \in [2,1e18]\),求\(min\{q_i\},q ...

  6. 2019牛客多校第二场E MAZE(线段树 + 矩阵)题解

    题意: n * m的矩阵,为0表示可以走,1不可以走.规定每走一步只能向下.向左.向右走.现给定两种操作: 一.1 x y表示翻转坐标(x,y)的0.1. 二.2 x y表示从(1,x)走到(n,y) ...

  7. JavaScript Engine 可视化

    JavaScript Engine 可视化 图解 JavaScript Engine JavaScript 可视化 (7 部曲) ️ JavaScript Visualized: Event Loop

  8. BB link

    1 1 1 BB link: 1 1 demo: code: result: 1 1 1 1 1 1 1

  9. Java IO 通信 All In One

    Java IO 通信 All In One Netty / WebSocket BIO 通信 BIO 即阻塞 I/O,不管是磁盘 I/O 还是网络 I/O,数据在写入 OutputStream 或者从 ...

  10. 如何在 macOS 上进行滚动截屏

    如何在 macOS 上进行滚动截屏 Shift-Command-5 https://support.apple.com/zh-cn/guide/mac-help/mh26782/mac demo Xn ...