Jul 26 2008

Установка, настройка и запуск нескольких серверов MySQL для Windows

Category: MySQLIgor @ 14:30

Каждый раз когда, делаю установку, обновление новой версии сервера MySQL под Windows, необходимо перекинуть все базы данных со старой версии на новую. В этом случае удобно запустить обе версии MySQL на разных портах, а не останавливать одну службу, потом другую, потому что, что-то забываем, что-то не надо сразу. Итак последовательность действий.

1. Скачать MySQL Server:
MySQL Downloads — выбираем версию которая нас интересует. Текущая версия MySQL 5.1 Release Candidate, все еще релиз, и самый последний дистрибутив, который можно скачать MySQL 5.1.26. Для работы в Windows пользуюсь MySQL без инсталляции — Without installer (unzip in C:\), в архиве это весит 98.3 Мб.

Качаем напрямую Download или выбираем зеркало Pick a mirror, где вежливо отказываемся «» No thanks, just take me to the downloads!» и получаем прямую ссылку.

2. Установка MySQL
У меня MySQL, Apache, PHP, Python, и др. софт находиться на диске D:\:
d:/usr/
apache2/
php/
mysql/ — текущая версия сервера

Это позволяет не переустанавливать каждый раз все заново при новой инсталляции Windows. Очень удобно и переносимо.

Создаем папку d:/usr/mysql_5.1.26-rc/ и распаковываем туда наш архив mysql-noinstall-5.1.26-rc-win32.zip.

3. Настройка MySQL
Можно скопировать файл конфигурации my.ini с предыдущей версии, только если это версия 5.1, более старые конфигурации могут отличаться. Или настраиваем новый файл.
Делаем все с нуля.

Есть четыре файла настройки MySQL: my-huge.ini, my-large.ini, my-medium.ini, my-small.ini. Отличаются они разными опциями и зависят от целей, ресурсов сервера. Берем my-medium.ini и переименовываем в my.ini — это наш файл конфигурации.

Добавляем следующие полезные опции в секцию [mysqld].

[mysqld]
# меняем временно порт с 3306 на 3307
port = 3307

# добавляем поддержку кодировки UTF-8 по умолчанию, это решает много проблем
default-character-set=utf8
default-collation=utf8_unicode_ci

4. Запуск MySQL
Запускать MySQL в Windows будем как службу. Для это её надо добавить в сервисы. Можно запускать сервис вручную, или включить автозагрузку в «Сервисах».

Добавление службы

Создаем следующие bat-файлы, все команды можно запускать в консоли, но так удобнее.
install_service.bat — инсталляция сервиса

"d:\usr\mysql_5.1.26-rc\bin\mysqld" --install-manual MySQL5_1_26-rc  --defaults-file="d:\usr\mysql_5.1.26-rc\my.ini"

MySQL5_1_26-rc — название нашей службы, оно обязательно должно быть уникальным. Если зайти в «Службы»: Настройка — Панель Управления — Администрирование Службы , то можно увидеть новый сервис: MySQL5_1_26-rc и в её настройках параметр запуска

d:\usr\mysql_5.1.26-rc\bin\mysqld --defaults-file=d:\usr\mysql_5.1.26-rc\my.ini MySQL5_1_26-rc

remove_service.bat — удаления сервиса из списка служб

NET STOP MySQL5_1_26-rc
"d:\usr\mysql_5.1.26-rc\bin\mysqld" --remove MySQL5_1_26-rc

service_start_mysql.bat — запуск сервиса

NET START MySQL5_1_26-rc

service_stop_mysql.bat — остановка сервиса

NET STOP MySQL5_1_26-rc

5. Подключение к БД
После инсталляции сервиса и его запуска, нужно проверить работоспособность MySQL сервера.

Настройки подключения по умолчанию:
хост: localhost
имя пользователя: root
пароль:
порт: 3306 (но мы его поменяли, теперь он 3307)

Можно воспользоваться каким-нибудь клиентом, например: SQLyog. Или с помощью консольной утилиты mysql:

# очень важно использовать полный путь к новому серверу и порт 3307
D:> d:\usr\mysql_5.1.26-rc\bin\mysql -h localhost -P 3307 -u root

# отобразить список БД
mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

6. Экспорт базы данных
Для экспорта БД лучше воспользоваться стандартным программой MySQL mysqldump. Все родные утилиты более производительнее, чем другие.

"d:\usr\mysql\bin\mysqldump.exe "  -hlocalhost -uroot -proot  --add-drop-table --all-databases > mysql_all_db.sql

На выходе получаем файл — mysql_all_db.sql.

Можно добавить опцию —add-drop-database — но тогда будут удалены все БД при импорте. Когда это нужно? Например, если нужно импортировать БД со всеми пользователями, их привилегиями, правами.

7. Импорт БД
Для импорта воспользуемся консольной утилитой mysql.

# без пароля
d:\usr\mysql_5.1.26-rc\bin\mysql -h localhost -P 3307 -u root < mysql_all_db.sql

# с указанием пароля
d:\usr\mysql_5.1.26-rc\bin\mysql -h localhost -P 3307 -u root -proot < mysql_all_db.sql
# или с паролем, но с вводом его вручную
d:\usr\mysql_5.1.26-rc\bin\mysql -h localhost -P 3307 -u root -p < mysql_all_db.sql

8. Окончательная настройка нового MySQL сервера
Поменять порт в новом сервере на 3306

Если старый сервер не нужен, то как минимум надо его службу остановить, оключить из автозапуска сервисов

Если вдруг понадобятся данные из старого сервера, рекомендую создать bat-файлы для него, и настроить его на другой порт, тогда не будет конфликтов с текущим.

Чтобы консольные утилиты сервера MySQL работали без указания полного пути можно добавить в «Переменные среды» путь к серверу:

Path: d:\usr\mysql;d:\usr\mysql\bin;

# или
Path: d:\usr\mysql_5.1.26-rc;d:\usr\mysql_5.1.26-rc\bin;

Только учтите, там не должны быть указаны пути на несколько серверов, только на один сервер.

Ссылки по теме:
Installing MySQL on Windows
Starting MySQL as a Windows Service
Starting Multiple Windows Servers as Services
Connecting to the MySQL Server
mysql — The MySQL Command-Line Tool
mysqldump — A Database Backup Program
Запуск MySQL на Windows NT, 2000 или XP

SQLyog MySQL Client
http://ru.wikipedia.org/wiki/SQLyog
phpMyAdmin

Tags:

One Response to “Установка, настройка и запуск нескольких серверов MySQL для Windows”

  1. Алексей says:

    Заинтересовало. Добавил к себе на сайт вашу ссылку

Leave a Reply to Алексей