Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

odnovremennyj_zapusk_mysql_4_i_mysql_5

Одновременный запуск MySQL 4 и MySQL 5

Преамбула проблемы

На сервере FreeBSD 7.2-RELEASE из портов уже установлен сервер MySQL 4.0.27.

# pkg_info | grep mysql
mysql-client-4.0.27 Multithreaded SQL database (client)
mysql-server-4.0.27 Multithreaded SQL database (server)

Из-за программного обеспечения использующего MySQL 4.0.27 - версию MySQL обновить нельзя. С другой стороны новое программное обеспечение (тот же bug tracking mantis) требует более новую версию MySQL.

Задача

Установить из портов MySQL сервер версии 5.1.36. При этом обеспечить полную работоспособность первого сервера MySQL 4.0.27. И возможность обновления программа из портов (т.е. вариант скачать исходники с сайта и установить не подходит).

P.S. Как выяснилось - из портов две версии MySQL поставить нельзя. Ниже показана установка второго сервера MySQL из уже скомпилированных файлов (скаченных с мастер- сайта).

Инсталляция

Пробуем из портов ставить

# /usr/ports/databases/mysql51-server
# make fetch
===>  mysql-server-5.1.36 cannot install: MySQL versions mismatch: mysql40-client is installed and wanted version is mysql51-client.
*** Error code 1

Stop in /usr/ports/databases/mysql51-server.

При попытки скачать исходники командой make fetch - сразу выдало сообщение о конфликте версий MySQL. Придеться качать вручную с сайта.

# make master-sites
ftp://ftp.fi.muni.cz/pub/mysql/Downloads/MySQL-5.1/ http://mysql.mirrors.cybercity.dk/Downloads/MySQL-5.1/
...

Выбираем из списка сайт, заходим на него. Для каждой операционной системы там уже выложены скомпилированные бинарные файлы. Забираем для своей ОС.

# fetch ftp://ftp.fi.muni.cz/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.36-freebsd7.0-i386.tar.gz

За основу дальнейшей установки взята англоязычная информация с сайта Installing MySQL4 and MySQL5 on a single FreeBSD 6.2 Server

Распаковываем бинарные файлы и для удобства дальнейшей работы создаем ссылку на распакованный каталог

# cd /usr/local
# gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
# ln -s full-path-to-mysql-VERSION-OS mysql5

Создаем пользователя и группу для запуска mysql5

# pw groupadd mysql5
# pw useradd -n mysql5 -c "" -g mysql5 -d /nonexistent -s /usr/sbin/nologin

Устанавливаем права на директорию mysql5.

# cd /usr/local/mysql5
# chown -R root:mysql5 .

Выполним скрипт создания системных таблиц MySQL сервера.

# scripts/mysql_install_db --help
...
  --user=user_name     The login username to use for running mysqld.  Files
                       and directories created by mysqld will be owned by this
                       user.  You must be root to use this option.  By default
                       mysqld runs using your current login name and files and
                       directories that it creates will be owned by you.

...
# scripts/mysql_install_db --user=mysql5

Копируем скрипт запуска и редактируем в нем пути запуска MySQL

# cp /usr/local/mysql5/support-files/mysql.server /usr/local/etc/rc.d/mysql5.server.sh
# ee /usr/local/etc/rc.d/mysql5.server.sh

Change “basedir=” to “basedir=/usr/local/mysql5″
Change “datadir=” to “datadir=/usr/local/mysql5/data”
Change “pid_file=” to “pid_file=/var/run/mysql5/mysql5.pid”
Change “server_pid_file=” to “server_pid_file=/var/run/mysql5/mysql5.pid”
Change “user=mysql” to “user=mysql5″

Создаем и настраиваем конфигурационный файл my.cnf

# cp /usr/local/mysql5/support-files/my-medium.cnf /usr/local/mysql5/my.cnf
# ee /usr/local/mysql5/my.cnf
Add a variable at the top of the [mysqld] section – “user = mysql5″
Change the “port = 3306″ variables to “port = 3308″
Change the “socket = /tmp/mysql.sock” variables to “socket = /tmp/mysql5.sock”
Добавим строки нужной нам кодировки MySQL сервера в раздел [mysqld]
default-character-set = utf8
character_set_server = utf8
collation_server = utf8_unicode_ci

Create a run directory for the MySQL 5 process and set permissions on it.

# mkdir /var/run/mysql5
# chown -R mysql5:mysql5 /var/run/mysql5

# Запускаем MySQl5.

# /usr/local/etc/rc.d/mysql5.server.sh start

Проверяем появился ли новый процесс на порту 3308 и старый на порту 3306

# lsof -i:3308,3306                                                 
COMMAND   PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
mysqld    782  mysql    3u  IPv4 0xc4560910      0t0  TCP *:3306 (LISTEN)
...
mysqld  47353 mysql5   13u  IPv4 0xc77fc3a0      0t0  TCP *:3308 (LISTEN)
...

Команды подключения для серверов из командной строки (подразумевается что пароль root для обеих БД уже установлен)

MySQL4:
Connect to MySQL 4.0.27
# /usr/local/bin/mysql -u root -p -P 3306 -S /tmp/mysql.sock

MySQL5:

Connect to MySQL 5.1.36
# /usr/local/mysql5/bin/mysql -u root -p -P 3308 -S /tmp/mysql5.sock

После установочные настройки MySQL 5xxx

# /usr/local/mysql5/bin/mysql -u root -P 3308 -S /tmp/mysql5.sock

Задание пароля для root MySQL5

> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('difficultpassword1');
mysql> SET PASSWORD FOR 'root'@'server.domain.com' = PASSWORD('difficultpassword1');
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('difficultpassword1');

odnovremennyj_zapusk_mysql_4_i_mysql_5.txt · Последние изменения: 2015/07/22 19:13 (внешнее изменение)