我正在尝试使用以下命令创建一个包含 3 个节点的 MySQL 集群mysql 服务器 https://hub.docker.com/r/mysql/mysql-server/码头集装箱。
I have 3个独立的云实例并且 docker 已在所有 3 个上安装。每台服务器上仅运行 1 个容器- 在集群中实现高可用性。
我使用以下命令分别在所有 3 台服务器上启动容器
docker run --name=db -p 3301:3306 -v db:/var/lib/mysql -d mysql/mysql-server
我将容器的端口 3306 映射到我的服务器的3301端口。我还创建了一个新用户“clusteradmin”用于远程访问。
接下来,我从 mysql-shell 运行以下命令 - 对于所有 3 台服务器
dba.configureInstance('clusteradmin@serverIp:3301')
I get similar message for all-
Note它显示“此实例将其自己的地址报告为 39xxxxxxxxxxx:3306”。
接下来,我在其中一台服务器上成功创建了一个集群。但是,当将其他 2 个服务器添加到该集群时,我收到以下错误
在检查该特定服务器的日志时,我看到以下几行
它说“对等地址 a9yyyyyyyyyy:33061 无效”。这是因为,由于容器运行在不同的服务器上,因此其他服务器上的其他容器无法识别该容器 ID。
我尝试了很多选择,但都无济于事。一种方法是使用报告主持人 and 报告端口启动容器时的选项,如下所示
docker run --name=db2 -p 3301:3306 -v db2:/var/lib/mysql -d mysql/mysql-server --report-host=139.59.11.215 --report-port=3301
但是,这种方法的问题是,在 dba.configureInstance() 期间,它想要将端口更新为默认值并抛出错误,如下所示
任何成功创建这样一个在不同服务器上运行的 mysql-server 容器集群的人,我真的很感激这方面的指点。