技术分享innodbcluster如何高效加载数据

author author     2023-04-09     787

关键词:

参考技术A 一行命令搞定 InnoDB Cluster 数据快速加载。

InnoDB Cluster 8.0 经过一系列的优化已足够稳定,早期版本常因网络延迟、闪断等问题造成集群不稳定,也曾遇到客户因网络缓解问题导致节点频繁被踢,可用性得不到保障,不得不使用外围运维手段保障集群稳定性,也增加了运维工作的复杂性。现在通过参数优化已能得到有效解决,能够容忍一定网络波动。解决了网络问题,另一个使用 InnoDB Cluster 面临问题就是大事务了,系统难免会遇到大的 DML,load data 操作。在数据同步机制上 group replication 与 async replication、semi-sync replication 有很大差异。它是参考 paxos 协议实现了独立的组通讯引擎 xcom 集成在 MySQL,xcom 负责节点间消息的发送与接收,并保证消息投递的一致和有序,消息包括两类事务写集相关信息和心跳统计相关信息。xcom 是单线程实例,在处理大事务必然会影响其他消息的处理,如果是来自其他节点的心跳消息无法回应,5s 无响应节点会被踢出集群。group_replication_transaction_size_limit 参数限制了事务大小,超出限制事务回滚不会广播。事务消息就是 writeset,其大小是由事务变更行数、行长度、唯一索引数量等因素决定。为了增强对大事务的处理能力,8.0.16 支持了消息分片机制,通过 group_replication_communication_max_message_size 参数控制消息分片大小,若消息超过该限制会自动分包广播,到达其他节点后自动合并起来,此参数不能大于 slave_max_allowed_packet 值,默认是 10MB,最大上限 1GB。

我模拟了 load data 导入一个 185MB 的文件。在 group_replication_transaction_size_limit 默认 147MB 配置下是无法导入的,超过限制事务被回滚。

将 group_replication_transaction_size_limit 设置为 0 相当于取消限制,可以成功导入,且集群节点状态全部正常,没有节点被踢出集群。

随后测试中我将数据文件放大到 1G,group_replication_transaction_size_limit 保持为 0 不做事务限制,会发生节点失联导入失败。因为超出了 xcom cache 限制,xcom cache 缓存了最近一段时间的消息信息,当节点失联后加回集群,失联期间的消息要通过 xcom cache 来恢复,如果缓存空间不够,缺失的消息被淘汰了,节点就无法自动加回集群,只能手动加回集群通过异步复制通道恢复数据。8.0.16 之前 xcom cache 是固定配置 50000 个 slot 或 1G 内存,超出限制按 LRU 策略回收内存空间,8.0.16 新增了 group_replication_message_cache_size 参数取消了固定限制,用户可以结合实际情况调整,配合 group_replication_member_expel_timeout 调整能容忍更长网络延迟。xcom cache 使用情况在 memory_summary_global_by_event_name 观测

group_replication_message_cache_size 上限是 16EB,cb_xcom_receive_data 函数接收消息的限制是 4G,有兴趣可以试验下加载一个 5G 数据文件会是什么情况。但大事务对内存和网络的开销,会影响集群整体性能,还是应尽量避免大事务。

正确做法是拆分成小文件并行导入,mysql shell AdminAPI 早已集成了并行导入小工具,自动拆分并行处理,效率更高,开箱即用。

如何构建高效自主的容器云交付平台?

...法实时开发、实时测试、实时部署,但随着容器和大数据技术的到来,让每个企业都能拥有一套高效自主的容器化交付平台。11月23日,七牛云架构师实践日第32期以「容器技术的实践与分享」为主题,在成都成功 查看详情

nuxt如何预加载大图片

...容时获得更好的用户体验。本文将分享三个不同的预加载技术,来增强网站的性能与可用性。方法一:用CSS和JavaScript实现预加载实现预加载图片有很多方法,包括使用CSS、JavaScript及两者的各种组合。这些技术可根据不同设计场... 查看详情

大规模数据如何实现数据的高效追溯

...霸道总裁拍了拍你。本文分享自华为云社区《【测试工具技术解密】大规模数据如何实现数据的高效追溯》,作者:敏捷的小智。网上流传着很多关于程序员和产品经理的段子,比如有程序员为了应对产品经理的需求... 查看详情

如何高效的学习技术

...与深度哲学英语怎么学知识体系克服遗忘碎片时间用起来技术分享造个轮子  我们相信努力学习一定会有收获,但是方法不当,既让人身心疲惫,也没有切实的回报。高中时代,我的同桌是个漂亮女同学。她的物理成绩很... 查看详情

一招教你数据仓库如何高效批量导入与更新数据(代码片段)

...大数据量的更新与插入。对于数据仓库是一项非常重要的技术。本文分享自华为云社区《一招教你如何高效批量导入与更新数据》,原文作者:acydy。前言如果有一张表,我们既想对它更新,又想对它插入应该如... 查看详情

mysql8.0innodbcluster日常运维:集群搭建,异常节点回归,数据备份/恢复(代码片段)

innodbcluster部署架构图生成mysqlrouter的配置文件mysqlrouter--bootstraproot@mysql-122:3306--directory=/etc/mysqlrouter--user=root--conf-use-sockets--force备份数据(可用于恢复集群数据)注意:数据量过大时,推荐挂载磁盘my 查看详情

mysql8.0innodbcluster日常运维:集群搭建,异常节点回归,数据备份/恢复(代码片段)

innodbcluster部署架构图生成mysqlrouter的配置文件mysqlrouter--bootstraproot@mysql-122:3306--directory=/etc/mysqlrouter--user=root--conf-use-sockets--force备份数据(可用于恢复集群数据)注意:数据量过大时,推荐挂载磁盘my 查看详情

mysql8.0innodbcluster日常运维:集群搭建,异常节点回归,数据备份/恢复(代码片段)

innodbcluster部署架构图生成mysqlrouter的配置文件mysqlrouter--bootstraproot@mysql-122:3306--directory=/etc/mysqlrouter--user=root--conf-use-sockets--force备份数据(可用于恢复集群数据)注意:数据量过大时,推荐挂载磁盘my 查看详情

技术团队如何高效落地代码cr(代码片段)

...约作者、阿里云专家博主,一直致力于用大白话讲解技术知识🎍在这里和大家分享一线互联网大厂面试经验、技术人成长路线以及Java技术、分 查看详情

技术团队如何高效落地代码cr(代码片段)

...约作者、阿里云专家博主,一直致力于用大白话讲解技术知识🎍在这里和大家分享一线互联网大厂面试经验、技术人成长路线以及Java技术、分 查看详情

干货12月29日阿里云内部技术分享

阿里云大数据助力东润环能高效利用云端资源http://click.aliyun.com/m/8857/从天津滨海新区大爆炸、危化品监管聊聊IT人背负的社会责任感http://click.aliyun.com/m/8858/SQLServer幕后英雄-统计信息http://click.aliyun.com/m/8859/如何以更优雅的方式... 查看详情

京东技术面:redis是如何保证高效查询的?

...路复用。Redis中的数据结构这里借用一张来自《Redis核心技术与实战》Redis中数据结构和底层结构的对应图片1、简单动态字符串Redis中并没有使用C中char来表示字符串,而是引入了简单动态字 查看详情

干货分享|推荐一个更高效的数据清洗方法,建议收藏

今天来分享一个高效率的数据清洗的方法,毕竟我们平常在工作和生活当中经常会遇到需要去处理杂七杂八的数据集,有一些数据集中有缺失值、有些数据集中有极值、重复值等等。这次用到的数据集样本在文末有获取... 查看详情

某厂商技术峰会笔记

...交能力整合到企业应用中企业从信息化到互联网化转型从技术核心变为用户数据为核心工作流驱动的流程到人互动驱动的流程员工活 查看详情

如何在 UITableView 中高效加载图片?

】如何在UITableView中高效加载图片?【英文标题】:HowtoefficientlyloadimagesinUITableView?【发布时间】:2014-01-0303:10:37【问题描述】:我有一个UITableView,其中包含大量图像。每个单元格将有5张图片,这些图片是从Parse.com随机加载的。... 查看详情

技术分享|业务模板的技术实践

源宝导读:“业务模板”作为天际·建模平台3.0推出的重要特性,它将元数据复用发挥到了极致,通过业务模板几乎可以覆盖整个建模元数据开发流程,提供业务场景级别的复用能力。本文将介绍“业务模板”的... 查看详情

技术分享|接口测试中如何使用json来进行数据交互?

json是一种轻量级的传输数据格式,用于数据交互。json请求类型的请求头中的Content-Type对应为application/json。碰到这种类型的接口,使用Java的RESTAssured或者Python的Requests均可解决。实战演示在Python 查看详情

如何实时高效地处理如此海量的路况数据?

...实时、高效地处理如此海量的路况数据却绝非易事。本文分享自华为云社区《高并发图片视频处理,为出行保驾,为生活添彩!》,作者:昇腾CANN。四通八达的路网和车水马龙的盛景诠释着城市的繁荣和进步&... 查看详情