TL;DR
- いつからできたのかは知らないけれど、気が付いたらMySQL Shellに dba.deploySandboxInstance() なんてものが出来ていてそれが感動的に楽なので熱が冷めないうちにメモ
如何に「MySQLとMySQL Shell以外他に何もいらない」かの感動を伝えるために、
ubuntu:latest
のDockerコンテナを起動しただけの状態から始めます。
取り敢えず、 MySQLのaptリポジトリ の依存に指定されてるやつらをインストール。
# apt update
# apt install wget lsb-release gnupg
MySQLのaptリポジトリ をインストール。最近の .deb ファイルなら向き先が
mysql-8.0
になっていると思われる。# wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb
# dpkg -i mysql-apt-config_0.8.14-1_all.deb
..
1. MySQL Server & Cluster (Currently selected: mysql-8.0) 3. MySQL Preview Packages (Currently selected: Disabled)
2. MySQL Tools & Connectors (Currently selected: Enabled) 4. Ok
Which MySQL product do you wish to configure? 4
# apt update
MySQL ServerとMySQL Shellをインストールする。
# apt install mysql-community-server mysql-shell
準備おしまい。
ただ
/bin/bash
を呼び出したコンテナなので他には何も浮いていない。root@b2fbd7b7148f:~# ps auxww
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 18504 3432 pts/0 Ss 09:21 0:00 bash
root 4103 0.0 0.2 34396 2912 pts/0 R+ 09:31 0:00 ps auxww
ここからおもむろに
mysqlsh
を起動。接続先は指定しない(し、しようもないし)root@b2fbd7b7148f:~# mysqlsh
Logger: Tried to log to an uninitialized logger.
MySQL Shell 8.0.18
Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Type '\help' or '\?' for help; '\quit' to exit.
MySQL JS >
接続先を指定せずに、サーバープロセスを起動させるためにクライアントを起動する、ってなんか
sqlplus
っぽさを感じます。
長いメソッドの名前とか憶えてられないので、
dba.
まで打ち込んでからTabを2回で補完候補が現れる。 MySQL JS > dba.
checkInstanceConfiguration() deploySandboxInstance() rebootClusterFromCompleteOutage()
configureInstance() dropMetadataSchema() startSandboxInstance()
configureLocalInstance() getCluster() stopSandboxInstance()
createCluster() help() verbose
deleteSandboxInstance() killSandboxInstance()
たぶん
deploySandboxInstance()
だろ。実行。 MySQL JS > dba.deploySandboxInstance()
Dba.deploySandboxInstance: Invalid number of arguments, expected 1 to 2 but got 0 (ArgumentError)
エラった><
引数がおかしいのはわかるんだけど引数に何を指定すればいいのかわからないので、
引数がおかしいのはわかるんだけど引数に何を指定すればいいのかわからないので、
dba.help('deploySandboxInstance')
と実行。 MySQL JS > dba.help('deploySandboxInstance')
NAME
deploySandboxInstance - Creates a new MySQL Server instance on localhost.
SYNTAX
dba.deploySandboxInstance(port[, options])
..
ドバっと出てくる。使い方を引きやすい対話型クライアントは好きです。
取り敢えず、必須引数はportだということなので3306でいく。
取り敢えず、必須引数はportだということなので3306でいく。
MySQL JS > dba.deploySandboxInstance(3306)
A new MySQL sandbox instance will be created on this host in
/root/mysql-sandboxes/3306
Warning: Sandbox instances are only suitable for deploying and
running on your local machine for testing purposes and are not
accessible from external networks.
Please enter a MySQL root password for the new instance:
Deploying new MySQL instance...
Instance localhost:3306 successfully deployed and started.
Use shell.connect('root@localhost:3306'); to connect to the instance.
root@localhostのパスワードだけ対話入力するとおしまい。
root@b2fbd7b7148f:~# ps auxwww
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 18504 3432 pts/0 Ss 09:21 0:00 bash
root 4163 0.0 0.2 18372 3088 pts/0 S 09:36 0:00 /bin/bash /root/mysql-sandboxes/3306/start.sh --user=root
root 4164 2.0 32.8 2302340 418604 pts/0 Sl 09:36 0:00 /root/mysql-sandboxes/3306/bin/mysqld --defaults-file=/root/mysql-san
dboxes/3306/my.cnf --user=root
root 4208 0.0 0.2 34396 2864 pts/0 R+ 09:36 0:00 ps auxwww
勿論、ポート番号を変えればこのノリでザクザク
データとかmy.cnfとかは
mysqld
を起動できる。データとかmy.cnfとかは
$HOME/mysql-sandboxes
あたりに転がるので、サンドボックス用途ならもう公式のツールだけで作れる時代になってしまったのだ。令和ばんざい。
ちなみに、mysqlx-portにport * 10を指定しようとするので、ポート番号に
6554
を超える値を渡そうとするとエラる。その場合は dba.deploySandboxInstance(13306, {"portx": 13307})
とか明示してやればおk
それでは、楽しいMySQL Shellライフを。
0 件のコメント :
コメントを投稿