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 節「批次程式碼執行」。
MySQL Shell 包含以下以 JavaScript 和 Python 實作的 API,您可以使用它們來開發與 MySQL 互動的程式碼。
-
AdminAPI 可讓您管理 MySQL 執行個體,使用它們來建立 InnoDB 叢集、InnoDB 叢集集和 InnoDB 複本集部署,並整合 MySQL Router。
InnoDB 叢集為使用 InnoDB 架構的 MySQL 資料庫提供整合式高可用性和擴充性解決方案。InnoDB 叢集是使用群組複寫的替代解決方案,不需要進階的 MySQL 專業知識。請參閱第 7 章《MySQL InnoDB 叢集》。
InnoDB 叢集集藉由將主要 InnoDB 叢集與位於替代位置的一個或多個本身複本連結,為第 7 章《MySQL InnoDB 叢集》部署提供容災能力。請參閱第 8 章《MySQL InnoDB 叢集集》。
InnoDB 複本集可讓您管理一組執行非同步、以 GTID 為基礎的複寫的 MySQL 執行個體。請參閱第 9 章《MySQL InnoDB 複本集》。
AdminAPI 也提供作業,可為 MySQL Router 設定使用者,讓與 InnoDB 叢集、InnoDB 叢集集和 InnoDB 複本集的整合盡可能簡單。如需有關 AdminAPI 的詳細資訊,請參閱第 6 章《MySQL AdminAPI》。
X DevAPI 可讓開發人員在 MySQL Shell 使用 X 通訊協定連線至 MySQL 伺服器時,同時使用關聯式和文件資料。如需詳細資訊,請參閱將 MySQL 作為文件儲存區使用。如需有關 X DevAPI 概念和使用方式的文件,請參閱X DevAPI 使用者指南。
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 公用程式》。
MySQL Shell 使用 API 命令語法公開其大部分功能,可讓您輕鬆將 mysqlsh 與其他工具整合。例如,您可以使用此功能建立管理 InnoDB 叢集的 bash 指令碼。使用 mysqlsh
語法,將作業直接傳遞至 MySQL Shell 全域物件,略過 REPL 介面。請參閱第 5.8 節「API 命令列整合」。[選項]
-- shell_object
object_method
[method_arguments]
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
的物件使用。您可以使用 mysqlx
和 mysql
JavaScript 和 Python 模組中可用的函式,建立更多工作階段物件,而且您可以將其中一個工作階段物件設定為 session
全域物件,以便您可以在任何模式中使用它。如需詳細資訊,請參閱第 4.2 節「MySQL Shell 工作階段」。