文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  使用 DNS SRV 記錄連線至伺服器

6.2.6 使用 DNS SRV 記錄連線至伺服器

在網域名稱系統 (DNS) 中,SRV 記錄(服務位置記錄)是一種資源記錄類型,可讓用戶端指定一個名稱,該名稱指示服務、協定和網域。對名稱進行 DNS 查找會傳回一個回覆,其中包含網域中提供所需服務的多個可用伺服器名稱。有關 DNS SRV 的資訊,包括記錄如何定義所列伺服器的偏好順序,請參閱 RFC 2782

MySQL 支援使用 DNS SRV 記錄連線至伺服器。接收到 DNS SRV 查找結果的用戶端會嘗試依優先順序連線至所列主機上的 MySQL 伺服器,該優先順序是根據 DNS 管理員指派給每個主機的優先順序和權重而定。只有當用戶端無法連線至任何伺服器時,才會發生連線失敗。

當多個 MySQL 執行個體(例如伺服器叢集)為您的應用程式提供相同的服務時,可以使用 DNS SRV 記錄來協助故障轉移、負載平衡和複製服務。應用程式直接管理連線嘗試的候選伺服器集是繁瑣的,而 DNS SRV 記錄提供了替代方案。

  • DNS SRV 記錄可讓 DNS 管理員將單一 DNS 網域對應至多個伺服器。當伺服器加入或從組態中移除,或其主機名稱變更時,管理員也可以集中更新 DNS SRV 記錄。

  • 集中管理 DNS SRV 記錄消除了個別用戶端在連線請求中識別每個可能主機的需求,或讓額外的軟體元件處理連線的需求。應用程式可以使用 DNS SRV 記錄來取得有關候選 MySQL 伺服器的資訊,而不是自行管理伺服器資訊。

  • DNS SRV 記錄可以與連線池結合使用,在這種情況下,當閒置時,將從集區中移除連線至目前 DNS SRV 記錄清單中已不存在的主機的連線。

MySQL 支援在這些情況下使用 DNS SRV 記錄連線至伺服器

DNS SRV 名稱由服務、協定和網域組成,服務和協定各以底線為首碼

_service._protocol.domain

以下 DNS SRV 記錄識別多個候選伺服器,例如客戶端可能用於建立 X Protocol 連線的伺服器

Name                      TTL   Class  Priority Weight Port  Target
_mysqlx._tcp.example.com. 86400 IN SRV 0        5      33060 server1.example.com.
_mysqlx._tcp.example.com. 86400 IN SRV 0        10     33060 server2.example.com.
_mysqlx._tcp.example.com. 86400 IN SRV 10       5      33060 server3.example.com.
_mysqlx._tcp.example.com. 86400 IN SRV 20       5      33060 server4.example.com.

在此,mysqlx 表示 X Protocol 服務,tcp 表示 TCP 協定。用戶端可以使用名稱 _mysqlx._tcp.example.com 請求此 DNS SRV 記錄。在連線請求中指定名稱的特定語法取決於用戶端的類型。例如,用戶端可能支援在類似 URI 的連線字串或鍵值對中指定名稱。

傳統協定連線的 DNS SRV 記錄可能如下所示

Name                     TTL   Class  Priority Weight  Port Target
_mysql._tcp.example.com. 86400 IN SRV 0        5       3306 server1.example.com.
_mysql._tcp.example.com. 86400 IN SRV 0        10      3306 server2.example.com.
_mysql._tcp.example.com. 86400 IN SRV 10       5       3306 server3.example.com.
_mysql._tcp.example.com. 86400 IN SRV 20       5       3306 server4.example.com.

在此,名稱 mysql 指定傳統 MySQL 協定服務,而連接埠為 3306(預設的傳統 MySQL 協定連接埠),而不是 33060(預設的 X Protocol 連接埠)。

使用 DNS SRV 記錄查找時,用戶端通常必須將這些規則應用於連線請求(可能會存在特定於用戶端或連接器的例外情況)

  • 請求必須指定完整的 DNS SRV 記錄名稱,且服務和協定名稱以底線為首碼。

  • 請求不得指定多個主機名稱。

  • 請求不得指定連接埠號碼。

  • 僅支援 TCP 連線。無法使用 Unix socket 檔案、Windows 具名管道和共用記憶體。

如需更多關於在 X DevAPI 中使用基於 DNS SRV 連線的資訊,請參閱使用 DNS SRV 記錄的連線