Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.



Запускаем несколько копий MySQL на одной машине

Метки:
Среда, 21 января 2009 г.
Просмотров: 12997
Подписаться на комментарии по RSS


Для решения задачи запуска нескольких копий mysql (на разных портах) на одном сервере существуют различные методы. Вы можете либо установить mysql в разные места, используя проекты mysqld_multi или MySQL Sandbox. Но простейшим решением, которое использую я, является использование общего дистрибутива, но с использованием нескольких конфигурационных файлов (с разными значениями портов, сокетов, пидов и директорий данных). В этой заметке я покажу этот метод.

1. Создаем новые директории для данных и логов

Нам необходимо создать новую директорию для данных и лог файлов. Также нужно назначить правильные права на эти папки:

mkdir /var/lib/mysql2
 chown -R mysql.mysql /var/lib/mysql2/
 mkdir /var/log/mysql2
 chown -R mysql.mysql /var/log/mysql2

2. Создаём новый конфигурационный файл

Далее нам необходимо создать новый конфиг. Мы можем скопировать существующий конфиг и изменить необходимые значения. В моём дистрибутиве Debian конфигурационный файл лежит в /etc/mysql/my.cnf:

cp -R /etc/mysql/ /etc/mysql2

если вы используете редхатоподобные дистрибутивы тогда ваш конфиг будет лежать по адресу /etc/my.cnf и вы можете скопировать непосредственно его:

cp /etc/my.cnf /etc/my2.cnf

Далее нам необходимо отредактировать конфигурационный файл и внести изменения как минимум в параметры mysql port (по умолчанию 3306),  pid и socket, и также директории данных и логов:

cd /etc/mysql2/
 sed -i 's/3306/3307/g' my.cnf
 sed -i 's/mysqld.sock/mysqld2.sock/g' my.cnf
 sed -i 's/mysqld.pid/mysqld2.pid/g' my.cnf
 sed -i 's/var\/lib\/mysql/var\/lib\/mysql2/g' my.cnf
 sed -i 's/var\/log\/mysql/var\/log\/mysql2/g' my.cnf

3. Инициализация и запуск

Наконец проводим инициализацию:

mysql_install_db --user=mysql --datadir=/var/lib/mysql2/

В качестве альтернативного метода мы можем скопировать существующий /var/lib/mysql если необходимо (обязательно требуется остановить mysql).

 

Запускаем нашу новую копию mysql:

mysqld_safe --defaults-file=/etc/mysql2/my.cnf &

Мы можем подключиться к ней используя команды:

mysql -S /var/run/mysqld/mysqld2.sockor
 <code>mysql -h 127.0.0.1 -P 3307</code>

И если она больше не нужна, останавливаем её:

mysqladmin -S /var/run/mysqld/mysqld2.sock shutdown

Ниже размещен скрипт для создания множества копий mysql, который полностью автоматизирует работу. Запускать следует следующим образом: new_mysql_instance.sh <ID>

#!/bin/bash
i=$1
port=$[3306+$i]
mkdir /var/lib/mysql$i
chown -R mysql.mysql /var/lib/mysql$i/
mkdir /var/log/mysql$i
chown -R mysql.mysql /var/log/mysql$i
cp -R /etc/mysql/ /etc/mysql$i
cd /etc/mysql$i/
sed -i "s/3306/$port/g" my.cnf
sed -i "s/mysqld.sock/mysqld$i.sock/g" my.cnf
sed -i "s/mysqld.pid/mysqld$i.pid/g" my.cnf
sed -i "s/var\/lib\/mysql/var\/lib\/mysql$i/g" my.cnf
sed -i "s/var\/log\/mysql/var\/log\/mysql$i/g" my.cnf
mysql_install_db --user=mysql --datadir=/var/lib/mysql$i/
mysqld_safe --defaults-file=/etc/mysql$i/my.cnf &

Постовой

Перевозка сыпучих грузов, цементовозы, муковозы. Большой парк машин в вашем распоряжении.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 4

  1. Запускаю скрипт, создаются папки, а вт с базами проблема:

    $ sudo mysql_install_db --user=mysql --datadir=/var/lib/mysql2

    Installing MySQL system tables...

    110403 13:54:52 [Warning] Can't create test file /var/lib/mysql2/ubuntuServ64.lower-test

    110403 13:54:52 [Warning] Can't create test file /var/lib/mysql2/ubuntuServ64.lower-test

    Installation of system tables failed! Examine the logs in

    /var/lib/mysql2 for more information.

    You can try to start the mysqld daemon with:

    shell> /usr/sbin/mysqld --skip-grant &

    and use the command line tool /usr/bin/mysql

    to connect to the mysql database and look at the grant tables:

    shell> /usr/bin/mysql -u root mysql

    mysql> show tables

    Try 'mysqld --help' if you have problems with paths. Using --log

    gives you a log in /var/lib/mysql2 that may be helpful.

    The latest information about MySQL is available on the web at

    http://www.mysql.com/. Please consult the MySQL manual section

    'Problems running mysql_install_db', and the manual section that

    describes problems on your OS. Another information source are the

    MySQL email archives available at http://lists.mysql.com/.

    Please check all of the above before mailing us! And remember, if

    you do mail us, you MUST use the /usr/scripts/mysqlbug script!

    Я так понимаю ему прав не хватает чтоли? Но права на папки то одинаковые (на mysql и mysql2), и с mysql первый сервер (который из коробки стоит) нормально работает, а вот в созданные скриптом папки устанавливать базы не хочет (

    P.S. Ubuntu 10.10

  2. сделай /etc/init.d/apparmor stop

    или подправь его конфиг, это он запрещает

  3. EleanorJimenez35 | 2011-09-04 в 21:20:04

    Every one acknowledges that modern life is not cheap, nevertheless different people require cash for various stuff and not every person earns enough money. Thus to get good personal loans and just car loan will be good way out.

  4. Спасибо за статью.

    Только у меня не захотела сразу

    ругалась

    Installation of system tables failed! Examine the logs in

    /var/lib/mysql2 for more information.

    проблема решилась указание пути к конфигам

    # mysql_install_db --user=mysql --datadir=/var/lib/mysql2 --defaults-file=/etc/mysql2/my.cnf

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)