AWS EC2 MySQL 複製:設定從主伺服器查詢從伺服器

AWS EC2 MySQL 複製:設定從主伺服器查詢從伺服器

我已經在單獨的AWS EC2執行個體上成功設定了MySQL主從情況。從屬伺服器正在運行並成功複製主伺服器。

到目前為止,一切都很好。

現在我希望能夠查詢從站(用於分析等),但我找不到正確的配置來能夠將查詢從主站發送到從站。

我收到的錯誤(取決於我的 AWS 安全性設定檔設定)是“連接被拒絕”或“連接逾時”

在從屬設備上,我有一個 EC2 安全群組允許主 IP 區塊用於連接到連接埠 3306,並且我在主設備的連接配置中使用了從屬設備的 IP 位址。

當我嘗試從主站查詢從站時,這導致了“連接被拒絕”錯誤。

在主伺服器上,我執行“show full processlist”,看到從屬主機是 AWS EC2 主機名,而不是 IP,並且連接埠 44508 被添加到末尾,因此我更改了主伺服器上的連接資訊以使用從屬主機名稱而不是IP 位址,並且從站上的安全群組設定允許來自主站的流量通過連接埠44508 而不是3306。

這導致了“連接逾時”錯誤。

我已經在從屬安全群組中嘗試了 IP/主機名稱/連接埠的組合,但只是得到這兩個錯誤之一,無論是任何組合。

任何人都可以提供有關如何配置事物的提示,以便我可以從該主機在從機上運行(只讀)查詢,並將結果傳回給主機? TIA。

兩個系統的設定相同,只是主系統也運行 Codeigniter4,這是我設定連線配置的地方:

Ubuntu 20.04.3 LTS 和 MySQL 8.0.26-0

答案1

在這樣的設定中,您的客戶端(應用程式、軟體)應該連接到從屬裝置並僅執行 SELECT 查詢(如果您需要執行寫入查詢 - 它們應該只在主裝置上完成)。

您應該檢查:

  1. 如果MySQL伺服器在從伺服器上監聽網路。
  2. 安全群組是否允許您的應用程式連接到從伺服器。
  3. 從站應配置為唯讀以防止問題。

答案2

已解決:在從站的/etc/mysql/mysql.conf.d/mysqld.cnf 中,我需要註解掉'bind-address' 和'mysqlx-bind-address' 行,停止從站,重新啟動mysqld 並啟動從站。

設定“bind-address = 127.0.0.1”會阻止來自其他任何地方的連接。註解掉它允許從所有來源訪問,而不僅僅是本地主機。 EC2 安全群組將對連接埠 3306 的存取僅限於主伺服器。

現在各方面都運作得很好。再次感謝您的關注。

相關內容