暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

数据库要不要跑在容器上?

原创 流心 2025-02-10
551

容器作为现在最轻量级的虚拟化技术,受到大量用户和开发者的欢迎。现在大多数用户都建设了容器化云底座,把app、中间件和部分开源数据库搬到了容器上,实现了自动化部署、调度与运维。那么,数据库到底要不要跑在容器上呢?本文从用户关心的几个方面展开描述。

首先是性能,数据库部署在裸金属、虚拟机和容器上的性能差别到底有多少呢?我们使用mysql单实例在三种部署模式下做对比测试,结果如下:


可以看出,数据库在裸金属上性能上最好的,这一点毋庸置疑。然后看容器化部署性能,比裸金属模式仅仅差了2&~13%,而且比虚拟机部署的性能高了27%~49%。因此,从性能角度看,数据库跑在容器上不应该是瓶颈。

其次是稳定性,用户经常问到数据库容器会不会宕机就没了、实例会不会漂移、数据会不会丢失等问题。首先,数据库在容器上也支持主备高可用部署模式,主节点发生故障后支持故障检测与故障切换,并在新节点上拉起一个pod和新数据库实例,不存在容器没了实例也没了的情况;其次,现在容器支持固定IP,也就是新实例名称和IP可以保存不变,通过原来的访问逻辑可以继续访问数据库;最后,容器现在有多种数据持久化方案,最典型的就行hostpath,支持挂载文件系统、SSD磁盘、NFS文件系统等多种持久化存储设备,新的数据库实例仍然可以访问原来的数据存储设备,保证数据不丢失。

最后再来谈一下易用性问题,从事过数据库运维的DBA同学们都知道,大家还是习惯使用IP、端口号、用户名和密码连接并操作数据库。其实跑在容器上的数据库也可以使用原来的运维方式和习惯,容器也有多种网络方案,包括clusterIP、NodePort、LoadBalance等多种方式,都能实现使用固定IP访问并运维数据库。然后就是多了容器后会不会给数据库运维增加额外的工作量呢?K8s作为一个经典的容器化编排和调度管理方案,提供了对容器化的多种操作API,比如使用kubectl exec -it能进入pod执行各种操作。除此之外,市面上还有很多容器化数据库云平台类的产品,比如KubeBlocks等,实现了可视化方式运维管理MySQL、PostgreSQL、Redis等引擎。

最后,再分享一个官方统计数据。根据Datadog统计,数据库已经是容器化部署中占比最高的负载,数据库+分析类的负载已经占到了容器化部署的50%以上。


相信未来5-10年,数据库跑在容器上是大家都认可且最常用的部署模式,大家共同努力吧。

最后修改时间:2025-02-11 09:49:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论