文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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

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

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

當多個 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 通訊協定連線的伺服器

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 通訊協定服務,而 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 通訊協定連接埠)。

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

  • 請求必須指定完整的 DNS SRV 記錄名稱,服務和協定名稱前面加上底線。

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

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

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

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