
MySQL
有状态的服务,切勿部署在 Docker 中运行。例如,
MySQL、Redis、Elasticsearch 和 ActiveMQ 等技术。这些服务需确保高可用与稳定,放入Docker难以实现,即便在K8s中也不建议部署。这就是为什么云厂商提供有状态的SaaS服务,比如AWS中的
MySQL、Redis和消息队列服务。评论区热闹非凡,先谈谈
MySQL 集群的问题:传统高可用软件如 Pacemaker,采用两台机器加共享存储和围栏设备的模式。如果在 k8s 中使用这种方案,该如何配置?特别是围栏设备,在 k8s 环境下应该如何实现?
MySQL 8 InnoDB Cluster 通常是 1 主 2 从架构,这种模式在 K8s 中应如何实现?
MySQL operator 这类工具我没用过,不了解其可行性,不太清楚具体情况。作为一名运维人员,我倾向于将
MySQL 部署在虚拟机中,因为对数据库软件而言,这种方式更有优势。不需要用到k8s的诸多功能,主要是追求稳定运行。偶尔调整下CPU、内存和磁盘,做个备份即可,平时基本不用管理。项目在云上的话,直接使用云厂商提供的服务即可。个人认为,k8s适合部署无状态服务,简单方便,进程挂了可直接拉起,无需复杂检查。有状态服务挂了虽可重启,但未必安全,易引发数据不一致,需检查确认。这个问题确实存在较大争议:
MySQL官方已关闭评论,我倾向于保守态度。