我目前有一个正在运行的 MySQL 主服务器和从服务器,并在 Kubernetes 集群上设置了异步复制。
我正在尝试为意外情况做好计划,如果主服务器宕机,从服务器将弥补空缺,等等。我认为第一步是检查 Dockerfile 和在 Dockerfile 中定义 ENTRYPOINT
的脚本。
当我 kubectl get svc
时,这是我获得的有关服务的信息。
这告诉我在集群上,主节点有一个 IP 10.0.156.209
。
现在,当我浏览 MySQL slave Docker 镜像的帮助程序脚本 docker-entrypoint.sh
时,我注意到这一行有助于设置主从场景(我修剪这条线只是为了突出这一点)
当我启动到 Kubernetes 上的slave pod 时,环境变量 $MYSQL_MASTER_SERVICE_HOST
设置为 10.0.156.209
我的问题:MySQL Slave Pod 如何知道使用主节点的集群 IP 作为 $MYSQL_MASTER_SERVICE_HOST
的值?这是 Kubernetes 的事情还是 SQL 的事情?
谢谢:)
最佳答案
这些环境变量是 Kubernetes 为每个服务自动创建的。请参阅:https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#environment-variables
When a Pod is run on a Node, the kubelet adds a set of environment variables for each active Service.
另一方面,Kubernetes 上的 mysql 是一个复杂的话题。您可能不想推出自己的解决方案。你看过Vitess吗? ?
关于mysql - Kubernetes MySQL复制-Master服务主机查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44428356/