Percona XtraDB Cluster之流量控制
什么是流量控制?
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之流量控制的更多相关文章
- 如何搭建Percona XtraDB Cluster集群
一.环境准备 主机IP 主机名 操作系统版本 PXC 192.168.244.146 node1 ...
- PXC(Percona XtraDB Cluster)集群的安装与配置
Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...
- Percona XtraDB Cluster(转)
Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...
- 使用percona xtradb cluster的IST方式添加新节点
使用percona xtradb cluster的IST(Incremental State Transfer)特性添加新节点,防止新节点加入时使用SST(State SnapShop Transfe ...
- mysql高可用之PXC(Percona XtraDB Cluster)
简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...
- docker1.12 安装pxc(Percona XtraDB Cluster )测试
docker1.12 安装pxc(Percona XtraDB Cluster )测试
- 1.1 About Percona XtraDB Cluster
摘要: 出处:kelvin19840813 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎 ...
- PXC5.7(Percona XtraDB Cluster)+HAproxy+Keepalived 集群部署
Percona-XtraDB-Cluster+Haproxy 搭建集群环境 环境准备及服务器信息: 配置防火墙 firewall-cmd --add-port=3306/tcp --permanent ...
- MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解
MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...
随机推荐
- 2015ACM/ICPC亚洲区沈阳站-重现赛 B - Bazinga (KMP)
题意:给你\(n\)个字符串,\(s_1,s_2,...,s_n\),对于\(i(1\le i\le n)\),找到最大的\(i\),并且满足\(s_j(1\le j<i)\)不是\(s_i\) ...
- PowerShell随笔1---背景
既然是随笔,那就想到什么说什么,既会分享主题知识,也会分享一些其他技巧和个人学习方法,供交流. 我一般学习一个东西,我都会问几个问题: 这东西是什么? 这东西有什么用,为什么会出现,出现是为了解决什么 ...
- [视频] Docker 安装 nginx + rtmp
目录 拉取镜像 创建并运行容器,映射出两个端口1935.80 将视频文件推流至rtmp服务器 使用ffplay播放rtmp流 拉取镜像 docker pull alfg/nginx-rtmp 创建并运 ...
- boomworks 1999~2009
大众软件 PC定时执行专家 4.0 (PCTaskTimer) - 功能强大.简单易用的定时执行软件.具有功能多.体积小.消耗资源少的特点. 超级网际搜索(SuperSearch) - 免费.快速.高 ...
- cookie,session,token之间的联系与区别
发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用 ...
- Netty (一) IO 基础篇
Java IO 演进之路 1.1 必须明白的几个概念 1.1.1 阻塞(Block)和非阻塞(Non-Block) 阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准 ...
- Eclipce怎么恢复误删类
选择误删除文件在eclipse所在包(文件夹) 在包上单击右键. 选择restore from local history... 在弹出的对话框中选择需要恢复的文件
- u-boot 移植 --->3、S5PV210启动序列
通过三星官方的资料S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf,了解到S5PVS10这款芯片的复位过程启动序列.芯片在出厂时就在内部固化了 ...
- React render algorithm & Fiber vs Stack
React render algorithm & Fiber vs Stack React 渲染算法 & Fiber vs Stack https://stackoverflow.co ...
- how to convert a number to a number array in javascript without convert number to a string
how to convert a number to a number array in javascript without convert number to a string 如何在不将数字转换 ...