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

标签 mysql kubernetes high-availability

我正在尝试使用相同的 PVC 部署两个 MySQL Pod,但是当我创建第二个 Pod 时,我收到 CrashLoopBackoff 状态,并在日志中显示错误:“innoDB 检查您是否还没有另一个 mysqld 进程使用相同的 innodb 日志文件”。如何解决这个错误?

最佳答案

有不同的选项来解决高可用性问题。如果您运行的 kubernetes 基础设施可以将卷配置到不同的节点(例如在云中),并且您的 pod/节点崩溃,kubernetes 将在具有相同卷的不同节点上重新启动数据库。除了短暂的停机时间之外,您还可以在相对较短的时间内使数据库恢复运行。 该卷将安装到单个正在运行的 mysql pod,以防止并发访问造成数据损坏。 (这也是 mysql 在您的场景中注意到的,因为它不是为共享存储而设计的 HA 解决方案)

如果您需要更多,您可以使用 mysql 的内置复制来创建一个 mysql“集群”,即使一个节点/pod 发生故障也可以使用该集群。在这种情况下,mysql 集群的每个实例都将有一个单独的卷。查看此场景的 kubernetes 有状态集示例:https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/

关于mysql - 尝试在 kubernetes 中创建两个具有相同卷的 MySQL Pod 以实现高可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57346744/

相关文章:

php - MySQL 天数减法在月底不起作用

kubernetes - 部署亲和性

go - 如何在 Kubernetes 中添加新包

hadoop - 启动备用HDFS HA名称节点的SIGTERM

PostgreSQL - 无法在 pgpool 2 上启动委托(delegate) ip 地址

php - MySQL选择查询内部连接表,有2个针对不同表的正则表达式

mysql - SQL 根据另一个表中的数据列出表中的数据

kubernetes - 针对 istio 导出流量的粒度策略

web-services - 适合新手的实用 SOA

MySQL统计题公式