MySQL Shell 8.4  /  MySQL Shell 功能

第 1 章 MySQL Shell 功能

重要事項

MySQL Shell 會頻繁更新,包含修正和新功能。強烈建議您務必使用可用的最新版本。最新版本的 MySQL Shell 可與任何 GA 版本的 MySQL 8.0 或更高版本搭配使用。

MySQL Shell 中提供以下功能。

支援的語言

MySQL Shell 會處理以 JavaScript、Python 和 SQL 撰寫的程式碼。任何執行的程式碼都會根據目前啟用的語言,以其中一種語言處理。也有特定的 MySQL Shell 命令,以 \ 為前綴,可讓您設定 MySQL Shell,而與目前選取的語言無關。如需詳細資訊,請參閱第 3.1 節「MySQL Shell 命令」

MySQL Shell 使用 Python 3,而非 Python 2.7。對於包含系統支援的 Python 3 安裝的平台,MySQL Shell 會使用可用的最新版本,最低支援版本為 Python 3.6。對於未包含 Python 3 或版本未達最低支援版本的平台,MySQL Shell 會維持與 Python 2.6 和 Python 2.7 的程式碼相容性,因此如果您需要這些舊版之一,可以使用適當的 Python 版本從來源建置 MySQL Shell。

對於未包含 Python 3 或版本未達最低支援版本的平台,MySQL Shell 會捆綁 Python 3.10.8。

注意

除了 Oracle Linux 7 以外,所有組建都是如此,Oracle Linux 7 捆綁的是 Python 3.9.15

互動式程式碼執行

MySQL Shell 提供互動式程式碼執行模式,您可以在 MySQL Shell 提示符號下輸入程式碼,每個輸入的陳述式都會被處理,處理結果會顯示在螢幕上。如果使用的終端機支援,則支援 Unicode 文字輸入。支援彩色終端機。

可以使用命令撰寫多行程式碼,讓 MySQL Shell 快取多行程式碼,然後將它們作為單一陳述式執行。如需詳細資訊,請參閱多行支援

批次程式碼執行

除了互動式執行程式碼之外,MySQL Shell 也可以從不同來源取得程式碼並處理它。這種以非互動方式處理程式碼的方法稱為批次執行

由於批次執行模式的目的是處理單一語言的指令碼,因此它僅限於輸出最少的非格式化輸出,並停用命令的執行。為了避免這些限制,請使用 --interactive 命令列選項,該選項會告知 MySQL Shell 將輸入當作互動式工作階段執行。在此模式下,輸入會像在互動式工作階段中輸入的每行程式碼一樣,逐行處理。如需詳細資訊,請參閱第 5.6 節「批次程式碼執行」

支援的 API

MySQL Shell 包含以下以 JavaScript 和 Python 實作的 API,您可以使用它們來開發與 MySQL 互動的程式碼。

  1. AdminAPI 可讓您管理 MySQL 執行個體,使用它們來建立 InnoDB 叢集、InnoDB 叢集集和 InnoDB 複本集部署,並整合 MySQL Router。

    AdminAPI 也提供作業,可為 MySQL Router 設定使用者,讓與 InnoDB 叢集、InnoDB 叢集集和 InnoDB 複本集的整合盡可能簡單。如需有關 AdminAPI 的詳細資訊,請參閱第 6 章《MySQL AdminAPI

  2. X DevAPI 可讓開發人員在 MySQL Shell 使用 X 通訊協定連線至 MySQL 伺服器時,同時使用關聯式和文件資料。如需詳細資訊,請參閱將 MySQL 作為文件儲存區使用。如需有關 X DevAPI 概念和使用方式的文件,請參閱X DevAPI 使用者指南

X 通訊協定支援

MySQL Shell 的設計目的是為所有支援 X 通訊協定的 MySQL 產品提供整合式命令列用戶端。MySQL Shell 的開發功能是針對使用 X 通訊協定的工作階段所設計。MySQL Shell 也可以使用傳統的 MySQL 通訊協定連線至不支援 X 通訊協定的 MySQL 伺服器。一組最少的 X DevAPI 功能可用於使用傳統 MySQL 通訊協定建立的工作階段。

擴充功能

您可以定義 MySQL Shell 基本功能的擴充功能,以報告和擴充物件的形式。可以使用 JavaScript 或 Python 建立報告和擴充物件,而且無論使用哪個啟用的 MySQL Shell 語言都可以使用。您可以將報告和擴充物件保留在啟動 MySQL Shell 時自動載入的外掛程式中。MySQL Shell 有數個內建的報告可供使用。如需詳細資訊,請參閱第 10 章《擴充 MySQL Shell

公用程式

MySQL Shell 包含以下用於使用 MySQL 的公用程式

  • 升級檢查程式公用程式,可驗證 MySQL 伺服器執行個體是否已準備好升級。使用 util.checkForServerUpgrade() 來存取升級檢查程式。

  • JSON 匯入公用程式,可將 JSON 文件匯入 MySQL 伺服器集合或表格。使用 util.importJSON() 來存取匯入公用程式。

  • 平行表格匯入公用程式,可分割單一資料檔案,並使用多個執行緒將區塊載入 MySQL 表格。

如需詳細資訊,請參閱第 11 章《MySQL Shell 公用程式

API 命令列整合

MySQL Shell 使用 API 命令語法公開其大部分功能,可讓您輕鬆將 mysqlsh 與其他工具整合。例如,您可以使用此功能建立管理 InnoDB 叢集的 bash 指令碼。使用 mysqlsh [選項] -- shell_object object_method [method_arguments] 語法,將作業直接傳遞至 MySQL Shell 全域物件,略過 REPL 介面。請參閱第 5.8 節「API 命令列整合」

輸出格式

MySQL Shell 可以表格、索引標籤或垂直格式,或以 JSON 輸出的形式傳回結果。為了協助將 MySQL Shell 與外部工具整合,您可以在從命令列啟動 MySQL Shell 時,啟用所有輸出的 JSON 包裝。如需詳細資訊,請參閱第 5.7 節「輸出格式」

記錄和偵錯

MySQL Shell 可以記錄執行程序的相關資訊,並提供您選擇的詳細程度。記錄資訊可以傳送到應用程式記錄檔、其他可檢視的目的地和主控台的任意組合。如需詳細資訊,請參閱第 12 章《MySQL Shell 記錄和偵錯

全域工作階段

在 MySQL Shell 中,與 MySQL 伺服器執行個體的連線是由工作階段物件處理。當您首次連線至 MySQL 伺服器執行個體時 (可以在啟動 MySQL Shell 時或之後執行),會建立名為 session 的 MySQL Shell 全域物件來代表此連線。此工作階段稱為全域工作階段,因為它可以應用於所有 MySQL Shell 執行模式。在 SQL 模式中,全域工作階段用於執行陳述式;在 JavaScript 模式和 Python 模式中,可透過名為 session 的物件使用。您可以使用 mysqlxmysql JavaScript 和 Python 模組中可用的函式,建立更多工作階段物件,而且您可以將其中一個工作階段物件設定為 session 全域物件,以便您可以在任何模式中使用它。如需詳細資訊,請參閱第 4.2 節「MySQL Shell 工作階段」