共用方式為


適用於 MySQL 的 Azure 資料庫中的內建預存程式

適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

適用於 MySQL 的 Azure 資料庫提供數個內建預存程式,可簡化和自動化進階資料庫管理工作。 這些預存程序可協助您有效率地設定資料輸入複寫、復原記錄清理和外掛程式管理等功能。

本文介紹適用於 MySQL 的 Azure 資料庫中可用的內建預存程式、其功能,以及如何使用它們。

目前可用的內建預存程式

1.資料傳入複寫管理

適用於 MySQL 的 Azure 資料庫提供預存程式來管理數據傳入複寫,包括啟動、停止、檢查狀態,以及重設複寫。

如需這些程式的詳細資訊,請參閱 如何設定適用於 MySQL 的 Azure 資料庫 - 彈性伺服器資料輸入複寫

2. 外掛程式管理

適用於 MySQL 的 Azure 資料庫支援 驗證密碼外掛程式,以強制執行密碼強度原則。 使用者可以使用下列預存程式來啟用或停用此外掛程式:

啟用驗證密碼外掛程式

CALL az_install_validate_password_plugin();

啟用外掛程式之後,您可以在 Azure 入口網站的 [伺服器參數] 頁面上檢視及設定相關參數。

停用驗證密碼外掛程式

CALL az_uninstall_validate_password_plugin();

此預存程序會移除外掛程式。

備註

  • 對於 HA (高可用性) 伺服器,請先在 主要 伺服器上執行這些預存程序。 然後,執行 強制容錯移轉,並在新的主節點上重新執行預存程序。
  • 針對 複本伺服器,在主要伺服器上執行這些預存程序不會自動同步處理至複本。 在主要複本上執行它們之後,請在每個複本上手動執行它們。

3.復原記錄清除

在某些情況下,您的復原記錄可能會變大,而且您可能想要清除它。 適用於 MySQL 的 Azure 資料庫提供預存程式,可協助您完成這項工作。

  1. 若要檢查您的資料表空間,請先執行下列命令。
    SELECT NAME, FILE_SIZE, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE_TYPE = 'Undo' AND STATE = 'active' ORDER BY NAME;
    
  2. 如果您發現復原記錄很大,請呼叫下列命令來建立新的資料表空間。
    call az_create_undo_tablespace(X)
    
    目前,我們最多支援八個數據表空間,包括兩個預設的。 X 值必須介於 3 到 8 之間。 命令完成之後,新的數據表空間應該處於作用中狀態。
  3. 執行下列命令以停用 innodb_undo_001 (預設值為一)。
    call az_deactivate_undo_tablespace(1)
    
    然後等候 innodb_undo_001 的狀態變成空白 (這表示復原記錄檔已截斷)。
    您可以檢查驗證和檢查復原資料表空間,以驗證復原記錄截斷
  4. 執行下列命令以啟動innodb_undo_001 (預設一個)。
    call az_activate_undo_tablespace(1)
    
    然後等候 innodb_undo_001 的狀態變成使用中。
  5. 針對innodb_undo_002重複 1-4 個步驟。
  6. 執行 call az_deactivate_undo_tablespace(3); 以停用新建立的數據表空間。 等候狀態變成空白。 然後執行 Call az_drop_undo_tablespace(3); 以卸除新建立的數據表空間。 您無法刪除預設的(innodb_undo_001、innodb_undo_002)。 您只能捨棄您建立的那一個,在此範例中,它是x_undo_003。在捨棄之前,請先停用x_undo_003為空狀態。

驗證和檢查復原資料表空間

在清空復原資料表空間之前,請確保沒有使用中交易:

SELECT COUNT(1) FROM information_schema.innodb_trx;
  • 如果結果為 0,則沒有作用中交易。
  • 只有當此計數為零時,才能清空還原表空間。

確認交易已經歸零後,檢查取消資料表空間的狀態:

SELECT NAME, FILE_SIZE, STATE
FROM information_schema.innodb_tablespaces
WHERE SPACE_TYPE = 'Undo'
ORDER BY NAME;

卸除有問題的表格

如果您在存取資料表時遇到類似下列的錯誤,可能表示資料表已損壞:

Incorrect information in file: './DATABASE_NAME/TABLE_NAME.frm'

若要解決此問題,您可以使用內建的預存程序:

mysql.az_drop_broken_table(DBNAME, TABLENAME)

執行程序之後,建議您將伺服器重新開機,以確保變更生效。

或者,您可以執行時間點還原,將伺服器還原為問題發生之前的狀態。

結論

適用於 MySQL 的 Azure 資料庫提供內建預存程式,可簡化進階資料庫管理工作。 這些程序可讓您設定複寫、管理復原記錄,以及有效率地啟用外掛程式。 透過應用這些工具,您可以增強效能、優化儲存並確保無縫資料同步。