我正在尝试使用MySQL码头容器创建一个由3个节点组成的mysql-服务器集群。
我有3单独的云实例,和docker都是在它们上安装的。每个服务器将只有一个容器运行在它上----以实现集群中的高可用性。
我使用命令分别在所有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')我也收到了类似的信息-

Note,它说‘这个实例报告自己的地址为39xxxxxxxxx:3306’。
接下来,我成功地在其中一个服务器中创建了一个集群。但是,当将其他2台服务器添加到这个集群时,我会得到以下错误

在检查该特定服务器的日志时,我看到以下几行

它说“对等地址a 9yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy:33061无效”。这是因为,由于容器在不同的服务器上运行,其他服务器上的其他容器无法识别容器id。
我尝试了许多选择,但都没有结果。一种方法是在启动容器时使用报表主机和报表端口选项,如下所示
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-服务器容器集群,我将非常感谢这方面的指针。
发布于 2021-05-07 15:33:11
我已经浏览了文档和源代码,但没有找到为什么侦听和广告不同端口是有问题的解释。
我在调用mysql-server时使用--port 3301解决了这个问题:
docker run --name=db2 -p 3301:3301 -v db2:/var/lib/mysql -d mysql/mysql-server --report-host=139.59.11.215 --port 3301https://stackoverflow.com/questions/62837078
复制相似问题