Продовжуємо розгляд установки декількох mysql-демонів на одному хості. Цього разу мова піде про Mysql Sandbox.
Mysql Sandbox - це набір скриптів на Perl для автоматизації та швидкого розвертання інстансів MySQL: за допомогою нього можна лиш однією командою підняти одночасно декілька mysql-демонів різних версій, налаштувати реплікацію різних типів тощо. Причому установка додаткових інстансів не зачіпає директорій оригінального mysql, якщо він присутній на сервері. Насправді дуже корисно мати такий інструмент для тестування нових фіч чи для перевірки поведінки реплікації при певних діях.
Для початку завантажимо tar-архів mysql необхідної версії:
# wget -O mysql-5.6.11-linux-glibc2.5-x86_64.tar.gz http://www.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.11-linux-glibc2.5-x86_64.tar.gz/from/http://cdn.mysql.com/
Тепер переходимо до самого завантаження Mysql Sandbox:
# wget https://launchpad.net/mysql-sandbox/mysql-sandbox-3/mysql-sandbox-3/+download/MySQL-Sandbox-3.0.33.tar.gz
Розпаковуємо і переходимо в директорію:
# tar xvfz MySQL-Sandbox-3.0.33.tar.gz
# cd MySQL-Sandbox-3.0.33
І тепер власне потрібно визначитись з користувачем від якого будуть працювати mysql-інстанси. Це може бути рут чи звичайний користувач (на ваш вибір). Для рута виконуємо наступне:
# export SANDBOX_AS_ROOT=1
# perl Makefile.PL
Writing Makefile for MySQL::Sandbox
Writing MYMETA.yml
# make
Skip blib/lib/MySQL/Sandbox/Scripts.pm (unchanged)
Skip blib/lib/MySQL/Sandbox/Recipes.pm (unchanged)
Skip blib/lib/MySQL/Sandbox.pm (unchanged)
cp bin/deploy_to_remote_sandboxes.sh blib/script/deploy_to_remote_sandboxes.sh
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/deploy_to_remote_sandboxes.sh
# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01_modules.t ...................... ok
t/02_test_binaries.t ................ ok
t/03_test_sandbox.t ................. ok
t/04_test_sbtool.t .................. ok
t/05_test_smoke.t ................... ok
t/06_test_user_defined.t ............ ok
t/07_test_user_defined.t ............ ok
t/08_test_single_port_checking.t .... ok
t/09_test_multiple_port_checking.t .. ok
t/10_check_start_restart.t .......... ok
t/11_replication_parameters.t ....... ok
t/12_custom_user_pwd.t .............. ok
t/13_innodb_plugin_install.t ........ ok
t/14_semi_synch_plugin_install.t .... ok
t/15_user_privileges.t .............. ok
t/16_replication_options.t .......... ok
All tests successful.
Files=16, Tests=53, 1 wallclock secs ( 0.08 usr 0.02 sys + 1.00 cusr 0.15 csys = 1.25 CPU)
Result: PASS
# make install
Installing /usr/local/share/perl/5.14.2/MySQL/Sandbox.pm
Installing /usr/local/share/perl/5.14.2/MySQL/Sandbox/Scripts.pm
Installing /usr/local/share/perl/5.14.2/MySQL/Sandbox/Recipes.pm
Installing /usr/local/man/man3/MySQL::Sandbox::Recipes.3pm
Installing /usr/local/man/man3/MySQL::Sandbox.3pm
Installing /usr/local/man/man3/MySQL::Sandbox::Scripts.3pm
Installing /usr/local/bin/make_sandbox_from_source
Installing /usr/local/bin/sbtool
Installing /usr/local/bin/make_replication_sandbox
Installing /usr/local/bin/make_multiple_custom_sandbox
Installing /usr/local/bin/deploy_to_remote_sandboxes.sh
Installing /usr/local/bin/msandbox
Installing /usr/local/bin/make_sandbox
Installing /usr/local/bin/test_sandbox
Installing /usr/local/bin/make_multiple_sandbox
Installing /usr/local/bin/make_sandbox_from_installed
Installing /usr/local/bin/sb
Installing /usr/local/bin/low_level_make_sandbox
Appending installation info to /usr/local/lib/perl/5.14.2/perllocal.pod
Writing Makefile for MySQL::Sandbox
Writing MYMETA.yml
# make
Skip blib/lib/MySQL/Sandbox/Scripts.pm (unchanged)
Skip blib/lib/MySQL/Sandbox/Recipes.pm (unchanged)
Skip blib/lib/MySQL/Sandbox.pm (unchanged)
cp bin/deploy_to_remote_sandboxes.sh blib/script/deploy_to_remote_sandboxes.sh
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/deploy_to_remote_sandboxes.sh
cp bin/msandbox blib/script/msandbox
...
cp bin/make_sandbox_from_source
blib/script/make_sandbox_from_source
...
cp bin/make_sandbox_from_source
blib/script/make_sandbox_from_source
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/make_sandbox_from_source
Manifying blib/man3/MySQL::Sandbox::Scripts.3pm
Manifying blib/man3/MySQL::Sandbox::Recipes.3pm
Manifying blib/man3/MySQL::Sandbox.3pm
# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01_modules.t ...................... ok
t/02_test_binaries.t ................ ok
t/03_test_sandbox.t ................. ok
t/04_test_sbtool.t .................. ok
t/05_test_smoke.t ................... ok
t/06_test_user_defined.t ............ ok
t/07_test_user_defined.t ............ ok
t/08_test_single_port_checking.t .... ok
t/09_test_multiple_port_checking.t .. ok
t/10_check_start_restart.t .......... ok
t/11_replication_parameters.t ....... ok
t/12_custom_user_pwd.t .............. ok
t/13_innodb_plugin_install.t ........ ok
t/14_semi_synch_plugin_install.t .... ok
t/15_user_privileges.t .............. ok
t/16_replication_options.t .......... ok
All tests successful.
Files=16, Tests=53, 1 wallclock secs ( 0.08 usr 0.02 sys + 1.00 cusr 0.15 csys = 1.25 CPU)
Result: PASS
# make install
Installing /usr/local/share/perl/5.14.2/MySQL/Sandbox.pm
Installing /usr/local/share/perl/5.14.2/MySQL/Sandbox/Scripts.pm
Installing /usr/local/share/perl/5.14.2/MySQL/Sandbox/Recipes.pm
Installing /usr/local/man/man3/MySQL::Sandbox::Recipes.3pm
Installing /usr/local/man/man3/MySQL::Sandbox.3pm
Installing /usr/local/man/man3/MySQL::Sandbox::Scripts.3pm
Installing /usr/local/bin/make_sandbox_from_source
Installing /usr/local/bin/sbtool
Installing /usr/local/bin/make_replication_sandbox
Installing /usr/local/bin/make_multiple_custom_sandbox
Installing /usr/local/bin/deploy_to_remote_sandboxes.sh
Installing /usr/local/bin/msandbox
Installing /usr/local/bin/make_sandbox
Installing /usr/local/bin/test_sandbox
Installing /usr/local/bin/make_multiple_sandbox
Installing /usr/local/bin/make_sandbox_from_installed
Installing /usr/local/bin/sb
Installing /usr/local/bin/low_level_make_sandbox
Appending installation info to /usr/local/lib/perl/5.14.2/perllocal.pod
Для звичайного користувача необхідно експортувати інші змінні:
# export PATH=$HOME/usr/local/bin:$PATH
# export PERL5LIB=$HOME/usr/local/lib/perl5/site_perl/5.8.8
# perl Makefile.PL PREFIX=$HOME/usr/local
# make
# make test
# make install
unpacking /home/ipeacocks/sandbox/mysql-5.6.11-linux-glibc2.5-x86_64.tar.gz
Executing low_level_make_sandbox --basedir=/home/ipeacocks/sandbox/5.6.11 \
--sandbox_directory=msb_5_6_11 \
--install_version=5.6 \
--sandbox_port=5611 \
--no_ver_after_name \
--my_clause=log-error=msandbox.err
The MySQL Sandbox, version 3.0.33
(C) 2006-2013 Giuseppe Maxia
installing with the following parameters:
upper_directory = /root/sandboxes
sandbox_directory = msb_5_6_11
sandbox_port = 5611
check_port =
no_check_port =
datadir_from = script
install_version = 5.6
basedir = /home/ipeacocks/sandbox/5.6.11
tmpdir =
my_file =
operating_system_user = root
db_user = msandbox
remote_access = 127.%
ro_user = msandbox_ro
rw_user = msandbox_rw
repl_user = rsandbox
db_password = msandbox
repl_password = rsandbox
my_clause = log-error=msandbox.err
master =
slaveof =
high_performance =
prompt_prefix = mysql
prompt_body = [\h] {\u} (\d) >
force =
no_ver_after_name = 1
verbose =
load_grants = 1
no_load_grants =
no_run =
no_show =
do you agree? ([Y],n) Y
loading grants
.. sandbox server started
Your sandbox server was installed in $HOME/sandboxes/msb_5_6_11
# mysql -P5611 --protocol=tcp -p
Так як базу було запущено від користувача root - всі системні файли будуть знаходитись в /root/sandboxes/версія_mysql (власне це також помітно в попередньому системному виводі). Також у цій же директорії лежать скрипти для зупинки/старту/тощо інстанса:
:~/sandboxes/msb_5_6_11# ls
change_paths change_ports clear data grants.mysql load_grants msb my my.sandbox.cnf proxy_start rescue_mysql_dump.sql restart send_kill start status stop tmp use USING
Кожний наступну копію mysql запускають аналогічним чином (з указанням порту ключем --sandbox_port=xxxx ). Звісно, якщо версію потрібно іншу - то варто також скачати tar-архів mysql необхідної версії.
Так як базу було запущено від користувача root - всі системні файли будуть знаходитись в /root/sandboxes/версія_mysql (власне це також помітно в попередньому системному виводі). Також у цій же директорії лежать скрипти для зупинки/старту/тощо інстанса:
:~/sandboxes/msb_5_6_11# ls
change_paths change_ports clear data grants.mysql load_grants msb my my.sandbox.cnf proxy_start rescue_mysql_dump.sql restart send_kill start status stop tmp use USING
Кожний наступну копію mysql запускають аналогічним чином (з указанням порту ключем --sandbox_port=xxxx ). Звісно, якщо версію потрібно іншу - то варто також скачати tar-архів mysql необхідної версії.
Так можна запустити багато копій mysql однієї версії:
# make_multiple_sandbox /path/to/tarball.tar.gz --how_many_nodes = number
# make_replication_sandbox /path/to/tarball.tar.gz
Надіюсь ця стаття буде корисною для вас і зекономить багато часу.
Надіюсь ця стаття буде корисною для вас і зекономить багато часу.
Корисні посилання:
http://mysqlsandbox.net/
Немає коментарів:
Дописати коментар