gpt4 book ai didi

mysql - 使用 k8s StatefulSet 配置 MySQL 复制

转载 作者:行者123 更新时间:2023-12-03 03:50:22 26 4
gpt4 key购买 nike

规范

  1. k8s 集群
    1. AKS
    2. 版本:14.18
  2. 存储类
    1. Azure 文件动态

信息

我引用official documentation在k8s中尝试实现MySQL Replication .

但是,当我尝试按照官方文档的方式实现时,却出现错误。

错误

StatefulSet 的索引 0 mysql-0 pod 发生 Warning BackOff 3m32s (x26 over 8m27s) kubelet Back-off restarting failed container 错误。

确认容器内部发生错误后,显示内部日志结果,如下所示。

2021-04-06 13:36:34+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.33-1debian10 started.
2021-04-06 13:36:35+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2021-04-06 13:36:35+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.33-1debian10 started.
2021-04-06 13:36:35+00:00 [Note] [Entrypoint]: Initializing database files
2021-04-06T13:36:35.449017Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-04-06T13:36:35.465160Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2021-04-06T13:36:35.465207Z 0 [ERROR] Aborting

您在训练过程中是否遇到过错误?或者你知道为什么会这样吗?

通过官方文档似乎有成功的案例,但是我一直没能找出问题所在。

为了解决 mysql 容器内部发生的错误,我升级了 mysql 镜像版本并添加了 args: ["--ignore-db-dir=lost+found"] 并尝试了很多类似的 Action 。我没找到。

由于是官方文档的摘录,所以我不认为是上面代码本身的问题。我怀疑的是 StorageClass。

实验室使用的代码位于 github .

There is nothing different from the official documentation other than a small name change.

如有任何帮助,我们将不胜感激。我绝对想实现它。 🙇

最佳答案

根据我的经验,问题是由 StorageClass 引起的,但不是其本身。这是有关 Azure 文件共享的已知问题。当文件共享安装到容器时,它具有 root 所有者,而不是所需的用户 mysql,这会导致问题。解决方案是使用托管磁盘StorageClass。在 AKS 中,默认 StorageClass 用于托管磁盘:

enter image description here

所以只需使用默认的 StorageClass 即可。

关于mysql - 使用 k8s StatefulSet 配置 MySQL 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66973503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com