Quantcast
Channel: 日々の覚書
Viewing all articles
Browse latest Browse all 581

Percona Toolkitのテスト環境を整える

$
0
0

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が転けるとかいろいろあるけど取り敢えずここまで


Viewing all articles
Browse latest Browse all 581

Trending Articles