使用重新導向連線到適用於 MySQL 的 Azure 資料庫
適用於: 適用於 MySQL 的 Azure 資料庫 - 單一伺服器
重要
適用於 MySQL 的 Azure 資料庫單一伺服器位於淘汰路徑上。 強烈建議您升級至適用於 MySQL 的 Azure 資料庫彈性伺服器。 如需移轉至適用於 MySQL 的 Azure 資料庫彈性伺服器的詳細資訊,請參閱適用於 MySQL 的 Azure 資料庫單一伺服器會發生什麼事?
本文說明如何使用重新導向模式將應用程式連線到您的適用於 MySQL 的 Azure 資料庫伺服器。 重新導向會藉由允許應用程式直接連線到後端伺服器節點,以減少用戶端應用程式和 MySQL 伺服器之間的網路延遲。
開始之前
登入 Azure 入口網站。 建立具有引擎版本 5.6、5.7 或 8.0 的適用於 MySQL 的 Azure 資料庫伺服器。
如需詳細資訊,請參閱如何使用 Azure 入口網站或 Azure CLI 建立適用於 MySQL 的 Azure 資料庫伺服器。
重要
適用於 MySQL 的 Azure 資料庫的 Private Link 目前不支援重新導向。
啟用重新導向
在您的適用於 MySQL 的 Azure 資料庫伺服器上,將 redirect_enabled
參數設定為 ON
以允許使用重新導向模式的連線。 若要更新此伺服器參數,請使用 Azure 入口網站或 Azure CLI。
PHP
PHP 應用程式中的重新導向支援可透過 Microsoft 所開發的 mysqlnd_azure \(英文\) 延伸模組來取得。
mysqlnd_azure 延伸模組可透過 PECL 新增至 PHP 應用程式,因此強烈建議透過正式發行的 PECL 套件 \(英文\) 來安裝並設定延伸模組。
重要
PHP mysqlnd_azure \(英文\) 延伸模組中的重新導向支援目前為預覽狀態。
重新導向邏輯
重要
重新導向邏輯/行為開始版本 1.1.0 已更新,建議使用版本 1.1.0+。
重新導向行為取決於 mysqlnd_azure.enableRedirect
的值。 下表根據此參數的值 (從版本 1.1.0+ 開始),列出重新導向的行為。
如果您使用較舊版本的 mysqlnd_azure 延伸模組 (1.0.0-1.0.3 版),則重新導向行為取決於 mysqlnd_azure.enabled
的值。 有效值為 off
(與下表中所述的行為類似) 和 on
(作用如下表中的 preferred
)。
mysqlnd_azure.enableRedirect 值 | 行為 |
---|---|
off 或 0 |
不會使用重新導向。 |
on 或 1 |
- 如果連線未在驅動程式端使用 SSL,則不會建立任何連線。 將傳回下列錯誤:[mysqlnd_azure.enableRedirect 是 on,但連接字串中未設定 SSL 選項。只有使用 SSL 才能重新導向。] - 如果在驅動程式端使用 SSL,但伺服器不支援重新導向,則會中止第一個連線,並傳回下列錯誤:[連線已中止,因為在 MySQL 伺服器上未啟用重新導向,或網路套件不符合重新導向通訊協定。] - 如果 MySQL 伺服器支援重新導向,但因為任何原因而導致重新導向連線失敗,系統也會中止第一個 Proxy 連線。 傳回重新導向連線的錯誤。 |
preferred 或 2 (預設值) |
- mysqlnd_azure 會盡可能使用重新導向。 - 如果連線在驅動程式端不使用 SSL,則伺服器不支援重新導向,或者當重新導向因任何不嚴重原因而無法連線,但 Proxy 連線仍然有效時,系統會切換回第一個 Proxy 連線。 |
若要使用 mysqlnd_azure.enableRedirect
成功連線到適用於 MySQL 的 Azure 資料庫單一伺服器,您必須遵循根據合規性需求合併根憑證的必要步驟。 如需詳細資料,請瀏覽連結。
文件的後續章節將會概述如何使用 PECL 安裝 mysqlnd_azure
延伸模組,並設定此參數的值。
先決條件
- PHP 版本 7.2.15+ 和 7.3.2+
- PHP PEAR
- php-mysql
- 適用於 MySQL 的 Azure 資料庫伺服器
使用 PECL \(英文\) 安裝 mysqlnd_azure \(英文\)。 建議使用 1.1.0+ 版。
sudo pecl install mysqlnd_azure
藉由執行下面命令,來找出延伸模組目錄 (
extension_dir
):php -i | grep "extension_dir"
將目錄變更為傳回的資料夾,並確定
mysqlnd_azure.so
位於此資料夾中。執行下面命令,找出 .ini 檔案的資料夾:
php -i | grep "dir for additional .ini files"
將目錄變更為此傳回資料夾。
建立
mysqlnd_azure
的新 .ini 檔案。 請確定名稱的字母順序是在 mysqnld 之後,因為模組是根據 ini 檔案的名稱順序載入。 例如,如果mysqlnd
.ini 的名稱是10-mysqlnd.ini
,請將 mysqlnd ini 命名為20-mysqlnd-azure.ini
。在新的 .ini 檔案中,新增下列幾行以啟用重新導向。
extension=mysqlnd_azure mysqlnd_azure.enableRedirect = on/off/preferred
確認重新導向
您也可以使用下列範例 PHP 程式碼來確認重新導向。 建立名為 mysqlConnect.php
的 PHP 檔案,並貼上下面的程式碼。 以您自己的伺服器名稱、使用者名稱和密碼加以更新。
<?php
$host = '<yourservername>.mysql.database.azure.com';
$username = '<yourusername>@<yourservername>';
$password = '<yourpassword>';
$db_name = 'testdb';
echo "mysqlnd_azure.enableRedirect: ", ini_get("mysqlnd_azure.enableRedirect"), "\n";
$db = mysqli_init();
//The connection must be configured with SSL for the redirection test
$link = mysqli_real_connect ($db, $host, $username, $password, $db_name, 3306, NULL, MYSQLI_CLIENT_SSL);
if (!$link) {
die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
}
else {
echo $db->host_info, "\n"; //if redirection succeeds, the host_info will differ from the hostname you used used to connect
$res = $db->query('SHOW TABLES;'); //test query with the connection
print_r ($res);
$db->close();
}
?>
下一步
- 如需連接字串的詳細資訊,請參閱連接字串。