Translate

четвер, 25 квітня 2013 р.

MySQL Sandbox (декілька MySQL-демонів різних версій на одному хості)



Продовжуємо розгляд установки декількох 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

четвер, 18 квітня 2013 р.

Mysqld_multi: декілька демонів mysql на одному хості

Іноді постає необхідність встановити ще одну базу даних на тому ж хості, але просто на іншому порту. І як показала практика, краще за все це робити за допомогою функціоналу mysqld_multi, котрим володіють останні версії mysql.

1) Ясна справа у вас має бути встановлений mysql-server та mysql-client.

2) Зупиняємо наявний демон, якщо його запущено, бекапимо конфіг /etc/mysql/my.cnf (чи просто /etc/my.cnf).

3) Створюємо новий:

cat /etc/my.cnf

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin

[mysqld1]
datadir = /var/lib/mysql1
socket = /var/lib/mysql1/mysql.sock
pid-file = /var/run/mysqld/mysqld1.pid
user = mysql
port = 3306
log-error=/var/log/mysqld1.log

[mysqld2]
datadir=/var/lib/mysql2
socket=/var/lib/mysql2/mysql.sock
pid-file = /var/run/mysqld/mysqld2.pid
user=mysql
port = 3307
log-error=/var/log/mysqld2.log

[mysqld3]
datadir=/var/lib/mysql3
socket=/var/lib/mysql3/mysql.sock
pid-file = /var/run/mysqld/mysqld3.pid
user=mysql
port = 3308
log-error=/var/log/mysqld3.log