[英]Configure MySQL Replication with k8s StatefulSet
参考官方文档,努力在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"]
并尝试了很多类似的操作。 我找不到它。
由于它是官方文档的摘录,我认为上面的代码本身没有问题。 我怀疑的是 StorageClass。
实验室使用的代码在github中。
除了一个小的名称更改之外,与官方文档没有什么不同。
任何帮助,将不胜感激。 我绝对想实现它。
您遇到的错误:
[ERROR] --initialize specified but the data directory has files in it. Aborting.
表示您的数据目录不为空。 为了解决它,您可以:
删除数据目录的内容
选择另一个数据目录或重命名它
确保/var/lib/mysql
之前的目录也是空的,例如: /empty-folder:/var/lib/mysql
根据您提供的链接文档,实际数据目录是指/var/lib/mysql
,因此您应该在那里检查。
至于警告:
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
我找到:
explicit_defaults_for_timestamp
本身已被弃用,因为它的唯一目的是允许控制将在 MySQL 的未来版本中删除的弃用TIMESTAMP
行为。 当删除这些行为时,explicit_defaults_for_timestamp
不再有任何用途,您也可以期望它也被删除。
此处记录了更多详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.