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 除外,其會捆綁 Python 3.9.15
MySQL Shell 提供互動式程式碼執行模式,您可以在 MySQL Shell 提示符號中輸入程式碼,並且會處理每個輸入的陳述式,並將處理結果列印在螢幕上。如果使用的終端機支援,則支援 Unicode 文字輸入。支援彩色終端機。
可以使用命令撰寫多行程式碼,讓 MySQL Shell 快取多行,然後將其當做單一陳述式執行。如需更多資訊,請參閱多行支援。
除了互動式執行程式碼之外,MySQL Shell 也可以從不同的來源取得程式碼並加以處理。這種以非互動方式處理程式碼的方法稱為批次執行。
由於批次執行模式是為了單一語言的指令碼處理而設計,因此其限制為擁有最少的非格式化輸出,以及停用命令的執行。為了避免這些限制,請使用 --interactive 命令列選項,這會告知 MySQL Shell 將輸入當做互動式工作階段執行。在此模式中,輸入會逐行處理,就好像每一行都是在互動式工作階段中輸入的一樣。如需更多資訊,請參閱第 5.6 節:「批次程式碼執行」。
MySQL Shell 包含下列以 JavaScript 和 Python 實作的 API,您可以使用這些 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。
當 MySQL Shell 使用 X Protocol 連線到 MySQL 伺服器時,X DevAPI 可讓開發人員使用關係和文件資料。如需更多資訊,請參閱使用 MySQL 作為文件儲存。如需關於 X DevAPI 概念和使用方式的文件,請參閱X DevAPI 使用者指南。
MySQL Shell 的設計目的是為所有支援 X Protocol 的 MySQL 產品提供整合式命令列用戶端。MySQL Shell 的開發功能是為使用 X Protocol 的工作階段設計。MySQL Shell 也可以使用傳統的 MySQL 通訊協定連線到不支援 X Protocol 的 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 會話」。