Mysql

AWS EC2 MySQL 複製:配置為從主伺服器查詢從伺服器

  • September 24, 2021

我已經在單獨的 AWS EC2 實例上成功設置了 MySQL 主從情況。從站正在執行並成功複製主站。

到現在為止還挺好。

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

我得到的錯誤(取決於我的 AWS 安全配置文件設置)是“連接被拒絕”或“連接超時”

在從屬伺服器上,我有一個 EC2 安全組允許主 IP 塊用於連接到埠 3306,並且我在主伺服器的連接配置中使用了從屬伺服器的 IP 地址。

當我嘗試從主伺服器查詢從伺服器時,導致“連接被拒絕”錯誤。

在主伺服器上,我執行“顯示完整程序列表”並看到從屬主機是 AWS EC2 主機名,而不是 IP,並且埠 44508 被添加到最後,所以我將主伺服器上的連接資訊更改為使用從屬主機名稱而不是 IP 地址,以及從站上的安全組設置以允許來自埠 44508 而不是 3306 上的主站的流量。

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

我嘗試了從屬安全組中的 IP/主機名/埠的組合,但只是得到了這兩個錯誤之一,任意組合。

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

兩個系統的設置相同,除了 master 也在執行 Codeigniter4,這是我設置連接配置的地方:

Ubuntu 20.04.3 LTS 和 MySQL 8.0.26-0

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

擁有’bind-address = 127.0.0.1’會阻止來自其他任何地方的連接。註釋掉它允許從所有來源訪問,而不僅僅是本地主機。EC2 安全組限制對埠 3306 的訪問僅限於主伺服器。

現在工作得很好。再次感謝您的關注。

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

你應該檢查:

  1. 如果 MySQL 伺服器在從伺服器中偵聽網路。
  2. 如果安全組允許您的應用程序連接到從伺服器。
  3. 從站應配置為只讀以防止出現問題。

引用自:https://serverfault.com/questions/1077924