尝试在具有相同卷的 kubernetes 中创建两个 MySQL pods 以实现高可用性

Trying to create two MySQL pods in kubernetes with same volume for high availability

我正在尝试使用相同的 PVC 部署两个 MySQL pods,但是当我创建第二个 pod 时出现 CrashLoopBackoff 状态,日志中出现错误:"innoDB check that you do not already have another mysqld process using the same innodb log files"。如何解决这个错误?

解决高可用性有不同的选择。如果您 运行 kubernetes 的基础架构可以将卷提供给不同的节点(f.e。在云中)并且您的 pod/node 崩溃,kubernetes 将在不同的节点上重新启动数据库相同的体积。除了短暂的停机时间外,您将在相对较短的时间内备份​​数据库 运行。 该卷将安装到单个 运行 mysql pod 以防止数据因并发访问而损坏。 (这也是 mysql 在您的场景中注意到的,因为它不是为共享存储设计的 HA 解决方案)

如果您需要更多,您可以使用 mysql 的内置复制来创建一个 mysql 'cluster',即使一个 node/pod 失败也可以使用。在这种情况下,mysql 集群的每个实例都将有一个单独的卷。查看此场景的 kubernetes stateful set 示例:https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/