簡體   English   中英

在多個服務器上使用 mysql-server docker 容器創建 MySQL 集群

[英]Creating a MySQL cluster, using mysql-server docker containers, on multiple servers

我正在嘗試使用mysql-server docker 容器創建 3 個節點的 MySQL 集群。

我有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')

我收到了類似的信息- 在此處輸入圖像描述

請注意,它顯示“此實例將其自己的地址報告為 39xxxxxxxxxx:3306”。

接下來,我在其中一台服務器中成功創建了一個集群。 但是,將其他 2 台服務器添加到此集群時,出現以下錯誤

在此處輸入圖像描述

在檢查該特定服務器的日志時,我看到以下幾行

在此處輸入圖像描述

它說“對等地址 a9yyyyyyyyyy: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-server 容器集群的人,我都非常感謝這方面的指針。

我已經查看了文檔和源代碼,但沒有找到解釋為什么監聽和通告不同的端口是有問題的。

我在調用 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 3301

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM