Skip to content

Instantly share code, notes, and snippets.

@vagetablechicken
Last active April 29, 2024 06:53
Show Gist options
  • Save vagetablechicken/fcf4ce0f8ba22a87c54955b9a0692797 to your computer and use it in GitHub Desktop.
Save vagetablechicken/fcf4ce0f8ba22a87c54955b9a0692797 to your computer and use it in GitHub Desktop.
openmldb tablet配置变更或升级
tablet配置变更或升级,统一都是用pre-upgrade和post-upgrade。
**迁移过程中需要停写,否则可能有数据丢失。**
注意集群中的table特点,分两种情况:
1. 有大量table是单副本,pre-upgrade是要把分片挪给别的机器,中途内存占用会变多,可能迁的途中导致OOM。内存吃紧时,
可以新建tablet server,pre-upgrade每次都是挑replica总数最少的机器,基本上就是p2p地传到新tablet server上。不用担心其他tablet会上涨很多。
2. 大部分table都是多副本表,无需担心内存,本质上只做changeleader,不涉及数据迁移。但注意,不停写的话,数据可能丢失。
步骤:
1. 通过showtablestatus来确认集群现状,参考 https://openmldb.ai/docs/zh/main/maintain/openmldb_ops.html。注意请使用0.9.0以上的tools,对0.8.x兼容。重点看Replica列,是1还是大于1。
2. 确认是上文的哪种情况,大部分表是单副本还是多副本。
3. 如果是单副本多且内存吃紧,请启动一台新tablet server,用来过渡。
4. 对一台tablet pre-upgrade+重启,参考 https://openmldb.ai/docs/zh/main/maintain/upgrade.html#tablet ,注意不要立即post-upgrade
5. 重启后的tablet可能自己本地数据都加载失败,通过showtablestatus来确认,参考 https://openmldb.ai/docs/zh/main/maintain/openmldb_ops.html。注意请使用0.9.0以上的tools,对0.8.x兼容。
6. 如果第5步检查发现,存在不健康table,使用recoverdata修复。
7. 再次showtablestatus确认表健康,再执行post-upgrade。此步目的是让重启的tablet承担原有的主副本,避免对其他tablet压力过大。如果你认为不需要,可以跳过此步。
8. 如果新启动了过渡用的tablet server,并想将它踢出集群,使用scalein。
9. 如果认为现在的集群主副本分布不均匀,可使用scaleout来自动均衡。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment