TL;DR
- Setting up the development environment の通りに ~やるつもりがない人または~ やっても上手くいかなかった人向け
- ほら、テストしたいバージョンがいろいろある人とかさ
Setting up the development environment は一通り目を通しておいた方が良い気がします。
Percona Toolkitのテストは MySQL::Sandbox っぽいスクリプトを内包していて、バイナリをポンと置いて環境変数をセットするだけで、3つくらいの mysqld
を起動してそれに対してテストを走らせてくれます。
というわけでまずは mysqld
実行ファイルが必要。PXCのテストをするつもりでないなら吊るしのMySQLでも良い。ただし INSTALL_LAYOUT=STANDALONE
を想定しているので、rpmでインストールするのはダメ。Linux - Genericのtarボールを解凍するのが良いんではないか。
$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
$ tar -C /tmp -xf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
$ ll -d /tmp/mysql-8.0.25-linux-glibc2.12-x86_64
$ export PERCONA_TOOLKIT_SANDBOX=/tmp/mysql-8.0.25-linux-glibc2.12-x86_64
展開した先のディレクトリを PERCONA_TOOLKIT_SANDBOX
環境変数に詰めておく。
次はPercona Toolkitのソースコードを持ってくる。
$ git clone https://github.com/percona/percona-toolkit.git
$ cd percona-toolkit
$ pwd ### まあどこでもいいんだけど
/root/git/percona-toolkit
$ export PERCONA_TOOLKIT_BRANCH="$PWD" ### percona-toolkitディレクトリが PERCONA_TOOLKIT_BRANCH環境変数
$ export PERL5LIB=${PERCONA_TOOLKIT_BRANCH}/lib ### percona-toolkit/lib をPERL5LIBに追加
percona-toolkitのトップディレクトリとlibディレクトリをそれぞれ環境変数で指定。
全部設定が通ってれば、sandboxディレクトリの test-env
スクリプトでテスト用のインスタンスが立ち上げられる。
$ ./sandbox/test-env checkconfig
PERCONA_TOOLKIT_BRANCH=/root/git/percona-toolkit - ok
PERCONA_TOOLKIT_SANDBOX=/tmp/mysql-8.0.25-linux-glibc2.12-x86_64 - ok
Percona Toolkit test environment config is ok!
$ ./sandbox/test-env stop
MySQL test server on port 12349 does not exist.
MySQL test server on port 12348 does not exist.
Stopping MySQL test server on port 12347... OK (1s)
Stopping MySQL test server on port 12346... OK (11s)
Stopping MySQL test server on port 12345... OK (12s)
MySQL test server on port 2903 does not exist.
MySQL test server on port 2902 does not exist.
MySQL test server on port 2901 does not exist.
MySQL test server on port 2900 does not exist.
Percona Toolkit test environment stopped.
[root@81dc970554a2 percona-toolkit]$ ./sandbox/test-env start
Creating default databases ...
Starting MySQL test server on port 12345... return 0
OK (1s)
Creating default databases ...
Starting MySQL test server on port 12346... return 0
OK (2s)
Creating default databases ...
Starting MySQL test server on port 12347... return 0
OK (9s)
Loading sakila database... OK
LOAD DATA LOCAL INFILE is enabled
Waiting for replication to finish... OK
Percona Toolkit test environment started with MySQL v8.0.
こいつらが起動している状態でテストを実行してやればOK。t
ディレクトリの真下ではなくて、コマンドごとにさらにディレクトリが掘ってあるのでその単位で prove
してやる。
$ ps auxwww | grep mysqld
root 2358 4.1 8.5 1636704 86304 pts/0 Sl 09:52 0:08 /tmp/mysql-8.0.25-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/tmp/12346/my.sandbox.cnf -u root --init-file /tmp/12346/mysql-init
root 2510 4.7 28.6 1635464 290640 pts/0 Sl 09:52 0:09 /tmp/mysql-8.0.25-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/tmp/12347/my.sandbox.cnf -u root --init-file /tmp/12347/mysql-init
root 2703 5.0 33.9 1634624 344132 pts/0 Sl 09:55 0:02 /tmp/mysql-8.0.25-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/tmp/12345/my.sandbox.cnf -u root --init-file /tmp/12345/mysql-init
root 2986 0.0 0.0 9092 672 pts/0 S+ 09:56 0:00 grep --color=auto mysqld
$ prove t/pt-table-usage/
t/pt-table-usage/basics.t .................... ok
t/pt-table-usage/create_table_definitions.t .. ok
t/pt-table-usage/explain_extended.t .......... ok
All tests successful.
Files=3, Tests=21, 5 wallclock secs ( 0.03 usr 0.01 sys + 0.91 cusr 0.44 csys = 1.39 CPU)
Result: PASS
ちなみにMySQL::Sandboxっぽいので、 /tmp/ポート番号/use
とか起動すると中に入れる。
$ ll /tmp/12345/
total 28
drwxr-x--- 8 root root 4096 Jun 9 09:55 data
-rw-r--r-- 1 root root 1475 Jun 9 09:52 my.sandbox.cnf
-rw-r--r-- 1 root root 529 Jun 9 09:52 mysql-init
srwxrwxrwx 1 root root 0 Jun 9 09:55 mysql_sandbox12345.sock
-rw------- 1 root root 5 Jun 9 09:55 mysql_sandbox12345.sock.lock
-rwxr-xr-x 1 root root 2589 Jun 9 09:52 start
-rwxr-xr-x 1 root root 1537 Jun 9 09:52 stop
-rwxr-xr-x 1 root root 135 Jun 9 09:52 use
8.0.25だと t/pt-show-grants
が転けたとか、5.6ベースでも t/pt-online-schema-change
が転けるとかいろいろあるけど取り敢えずここまで
0 件のコメント :
コメントを投稿