MySQL Shell 8.4  /  ...  /  管理沙箱实例

6.8.2 管理沙箱实例

沙箱实例运行后,可以使用以下命令随时更改其状态。指定实例的端口号以标识它

  • 要使用 JavaScript 停止沙箱实例,请发出 dba.stopSandboxInstance(实例)。这将正常停止实例,这与 dba.killSandboxInstance(实例) 不同。

  • 要使用 Python 停止沙箱实例,请发出:dba.stop_sandbox_instance(实例)。这将正常停止实例,这与 dba.kill_sandbox_instance(实例) 不同。

  • 要使用 JavaScript 启动沙箱实例,请发出:dba.startSandboxInstance(实例)

  • 要使用 Python 启动沙箱实例,请发出:dba.start_sandbox_instance(实例)

  • 要使用 JavaScript 强制终止沙箱实例,请发出:dba.killSandboxInstance(实例)。这将在不正常停止实例的情况下停止实例,这在模拟意外停止时很有用。

  • 要使用 Python 强制终止沙箱实例,请发出:dba.kill_sandbox_instance(实例)。这将在不正常停止实例的情况下停止实例,这在模拟意外停止时很有用。

  • 要使用 JavaScript 删除沙箱实例,请发出:dba.deleteSandboxInstance(实例)。这将从您的文件系统中完全删除沙箱实例。

  • 要使用 Python 删除沙箱实例,请发出:dba.delete_SandboxInstance(实例)。这将从您的文件系统中完全删除沙箱实例。

沙箱实例被认为是瞬态的,并非为生产用途而设计。因此,它们不支持版本升级。在沙箱部署中,每个沙箱实例都使用本地 mysql-sandboxes 目录中 $PATH 中找到的 mysqld 二进制文件的副本。如果 mysqld 的版本发生更改(例如,升级后),则基于先前版本的沙箱将无法启动。这是因为与 basedir 下找到的依赖项相比,沙箱二进制文件已过时。

如果您确实希望在升级后保留沙箱实例,一种解决方法是手动将升级后的 mysqld 二进制文件复制到每个沙箱的 bin 目录中。然后通过发出 dba.startSandboxInstance() 启动沙箱。该操作将因超时而失败,并且错误日志包含

2020-03-26T11:43:12.969131Z 5 [System] [MY-013381] [Server] Server upgrade
from '80019' to '80020' started.
2020-03-26T11:44:03.543082Z 5 [System] [MY-013381] [Server] Server upgrade
from '80019' to '80020' completed.

尽管该操作似乎因超时而失败,但沙箱已成功启动。