[컴][db] dbdeployer

 db local test / 테스트 / 테스트 방법 / 구성방법 / 로컬에서 테스트 방법


dbdeployer

dbdeployer 를 이용해서 하나의 host 에서 여러 port 를 이용해서 mysql 를 여러개 띄울 수 있다. 이것을 이용해서 여러 topology 를 테스트 해 볼 수 있다. 이 dbdeployer 의 전신이 MySQL-Sandbox 이다.

환경

  • OS : ubutu 20.04.1 64bit (참고로 dbdeployer 는 windows 용 binary 를 제공하지 않는다.)

시작, dbdeployer init

dbdeployer init 을 하면 directory 들도 만들고, dbdeployer 를 $PATH 에 copy 해 놓게 된다. 그리고 일단 기본적으로 mysql 을 download 해서 SANDBOX_DIRECTORY 에 넣게 된다.

  • ($SANDBOX_BINARY) was created
  • ($SANDBOX_HOME) was created
  • dbdeployer downloads get mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz
  • dbdeployer unpack mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz
  • dbdeployer defaults enable-bash-completion --run-it --remote
  • Download of file dbdeployer_completion.sh was successful
na@na-VirtualBox:~/a$ dbdeployer init
SANDBOX_BINARY /home/na/opt/mysql
SANDBOX_HOME   /home/na/sandboxes

--------------------------------------------------------------------------------
Directory /home/na/opt/mysql ($SANDBOX_BINARY) was created
This directory is the destination for expanded tarballs

--------------------------------------------------------------------------------
Directory /home/na/sandboxes ($SANDBOX_HOME) was created
This directory is the destination for deployed sandboxes

--------------------------------------------------------------------------------
# dbdeployer downloads get mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz
....  48 MB
--------------------------------------------------------------------------------
# dbdeployer unpack mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz
Unpacking tarball mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz to $HOME/opt/mysql/8.0.21
Renaming directory /home/na/opt/mysql/mysql-8.0.21-linux-glibc2.17-x86_64-minimal to /home/na/opt/mysql/8.0.21
--------------------------------------------------------------------------------
dbdeployer versions
Basedir: /home/na/opt/mysql
8.0.21
--------------------------------------------------------------------------------
# dbdeployer defaults enable-bash-completion --run-it --remote
  83 kB
Download of file dbdeployer_completion.sh was successful
# completion file: dbdeployer_completion.sh
# Running: sudo cp dbdeployer_completion.sh /etc/bash_completion.d
# File copied to /etc/bash_completion.d/dbdeployer_completion.sh
# Run the command 'source /etc/bash_completion'

main

dpdeployer deploy ... 로 시작하는 명령어들이 main 이다. 이 명령어들은 sandbox-binary directory(보통 $HOME/opt/mysql 로 만들어진다.) 에 있는 db binary 를 이용한다.

  • dpdeployer deploy single
  • dpdeployer deploy replication: replication 관계로 여러 node 를 만든다.
  • dpdeployer deploy multiple: replication 관계가 없는 같은 버전의 sandbox 여러개들을 만든다.
  • 참고로 -h 를 이용하면 자세한 설명을 확인할 수 있다. (ex: dpdeployer deploy multiple -h)

unpack command 를 이용해서 미리 mysql tarball 을 풀어놓으면 된다.(참고로 binary tarball 이다. source tarball 이 아니라.) 만약 다른 db(mariadb) 를 사용하고 싶다면 다른 tarball 을 풀어놓으면 된다. unpack 명령어를 이용하면 되고, unpack 을 하면 /home/na/opt/mysql 에 설치(?) 된다. 대략 저장용량이 3GB 정도 필요하다.

$ wget https://downloads.mariadb.org/interstitial/mariadb-10.4.15/bintar-linux-x86_64/mariadb-10.4.15-linux-x86_64.tar.gz
$  dbdeployer unpack mariadb-10.4.15.tar.gz

mariadb source tarball 은 아래 경로를 가면 된다.

libaio, libnuma

libaio, libnuma 가 필요하다. 설치를 해 놓자.

sudo apt install libaio-dev
sudo apt install libnuma-dev
sudo apt install libtinfo5

deploy replication, deploy multiple, deploy single

deploy replication 은 replication 관계에 있는 node 들을 만들어준다. 다른 방식(multiple, single)도 비슷하게 실행할 수 있다.

10.4.15 version 으로 master-slave 를 만드는 것은 아래처럼 하면 된다. --topology 가 없으면 기본적으로 master-slave 로 만들어준다. (참고: dbdeployer > Replication topologies)

아래처럼 remote-access 를 설정하면, 기본적으로 만들어지는 계정의 값이 바뀐다.(user@%)

참고로, root 의 password 는 기본적으로 msandbox 로 set 된다.

dbdeployer deploy replication 10.4.15 \
--topology=master-slave \
--nodes=3 \
--bind-address=0.0.0.0 \
--remote-access='%'

아래처럼 .sql 을 사용하면, deploy 할 때 .sql 을 실행 한다.

$ dbdeployer deploy --topology=master-slave replication 10.4.15 \
--bind-address=0.0.0.0 \
--remote-access='%' \
--post-grants-sql-file=$PWD/run.sql
-- run.sql
CREATE DATABASE IF NOT EXISTS my_test;
CREATE USER myuser IDENTIFIED BY 'mypassord';
GRANT ALL PRIVILEGES ON my_test.* TO myuser;
GRANT SELECT ON mysql.user TO myuser;
na@na-VirtualBox:~/a$ dbdeployer deploy --topology=master-slave replication 10.4.15
Installing and starting master
. sandbox server started
Installing and starting slave1
. sandbox server started
Installing and starting slave2
. sandbox server started
$HOME/sandboxes/rsandbox_10_4_15/initialize_slaves
initializing slave 1
initializing slave 2
Replication directory installed in $HOME/sandboxes/rsandbox_10_4_15
run 'dbdeployer usage multiple' for basic instructions'

그러면 아래처럼 3개의 process 가 떠있는 것을 확인할 수 있다.

user_na@user_na-VirtualBox:~/a$ ps aux | grep my
user_na        1930  0.0  0.1   2608  1684 pts/0    S    13:50   0:00 /bin/sh bin/mysqld_safe --defaults-file=/home/user_na/sandboxes/rsandbox_10_4_15/master/my.sandbox.cnf
user_na        2042  0.0  8.2 1235432 82544 pts/0   Sl   13:50   0:00 /home/user_na/opt/mysql/10.4.15/bin/mysqld --defaults-file=/home/user_na/sandboxes/rsandbox_10_4_15/master/my.sandbox.cnf --basedir=/home/user_na/opt/mysql/10.4.15 --datadir=/home/user_na/sandboxes/rsandbox_10_4_15/master/data --plugin-dir=/home/user_na/opt/mysql/10.4.15/lib/plugin --log-error=/home/user_na/sandboxes/rsandbox_10_4_15/master/data/msandbox.err --pid-file=/home/user_na/sandboxes/rsandbox_10_4_15/master/data/mysql_sandbox22916.pid --socket=/tmp/mysql_sandbox22916.sock --port=22916
user_na        2164  0.0  0.1   2608  1828 pts/0    S    13:50   0:00 /bin/sh bin/mysqld_safe --defaults-file=/home/user_na/sandboxes/rsandbox_10_4_15/node1/my.sandbox.cnf
user_na        2276  0.1  8.3 1235732 83584 pts/0   Sl   13:50   0:00 /home/user_na/opt/mysql/10.4.15/bin/mysqld --defaults-file=/home/user_na/sandboxes/rsandbox_10_4_15/node1/my.sandbox.cnf --basedir=/home/user_na/opt/mysql/10.4.15 --datadir=/home/user_na/sandboxes/rsandbox_10_4_15/node1/data --plugin-dir=/home/user_na/opt/mysql/10.4.15/lib/plugin --log-error=/home/user_na/sandboxes/rsandbox_10_4_15/node1/data/msandbox.err --pid-file=/home/user_na/sandboxes/rsandbox_10_4_15/node1/data/mysql_sandbox22917.pid --socket=/tmp/mysql_sandbox22917.sock --port=22917
user_na        2384  0.0  0.1   2608  1840 pts/0    S    13:50   0:00 /bin/sh bin/mysqld_safe --defaults-file=/home/user_na/sandboxes/rsandbox_10_4_15/node2/my.sandbox.cnf
user_na        2496  0.1  8.3 1235732 83444 pts/0   Sl   13:50   0:00 /home/user_na/opt/mysql/10.4.15/bin/mysqld --defaults-file=/home/user_na/sandboxes/rsandbox_10_4_15/node2/my.sandbox.cnf --basedir=/home/user_na/opt/mysql/10.4.15 --datadir=/home/user_na/sandboxes/rsandbox_10_4_15/node2/data --plugin-dir=/home/user_na/opt/mysql/10.4.15/lib/plugin --log-error=/home/user_na/sandboxes/rsandbox_10_4_15/node2/data/msandbox.err --pid-file=/home/user_na/sandboxes/rsandbox_10_4_15/node2/data/mysql_sandbox22918.pid --socket=/tmp/mysql_sandbox22918.sock --port=22918
user_na        2557  0.0  0.0  18964   724 pts/0    S+   13:52   0:00 grep --color=auto my

 

client 접근

/home/namh/opt/mysql/10.4.15/bin/mysql -u msandbox --host=127.0.0.1 --port=22918 -p

sandbox 삭제

dbdeployer sandboxes
dbdeployer delete rsandbox_10_4_15
namh@namh-VirtualBox:~/a$ dbdeployer sandboxes
rsandbox_10_4_15 : master-slave 10.4.15 [22916 22917 22918 ]
namh@namh-VirtualBox:~/a$ dbdeployer delete rsandbox_10_4_15
List of deployed sandboxes:
/home/namh/sandboxes/rsandbox_10_4_15
Running /home/namh/sandboxes/rsandbox_10_4_15/send_kill_all destroy
# executing 'send_kill' on /home/namh/sandboxes/rsandbox_10_4_15
executing "send_kill" on slave 1
Terminating the server immediately --- kill -9 5502
executing "send_kill" on slave 2
Terminating the server immediately --- kill -9 5723
executing "send_kill" on master
Terminating the server immediately --- kill -9 5267
Running rm -rf /home/namh/sandboxes/rsandbox_10_4_15
Directory /home/namh/sandboxes/rsandbox_10_4_15 deleted


Reference

  1. Testing Percona XtraDB Cluster 8.0 with DBdeployer - Percona Database Performance Blog

댓글 없음:

댓글 쓰기