Вопрос или проблема
Я только что установил MySQL 5.7 на виртуальную машину с Windows 2012. Я пытаюсь создать и запустить несколько экземпляров, но очень расстроен тем, что такая простая вещь не работает.
Я установил MySQL в C:\Program Files\MySQL\MySQL Server 5.7, что является местоположением по умолчанию, а затем скопировал папку и сделал другую копию, чтобы создать другой экземпляр (предполагаю, что именно так это и работает?)
Оба экземпляра MySQL показаны на изображении ниже.
INI-настройки для обоих серверов приведены ниже:
Server1
server-id=1
log-bin=”mysql-bin”
binlog-ignore-db=test
binlog-ignore-db=information_schema
replicate-ignore-db=test
replicate-ignore-db=information_schema
relay-log=”mysql-relay-log”
auto-increment-increment=2
auto-increment-offset=1
Server2
server-id=2
log-bin=”mysql-bin”
binlog-ignore-db=test
binlog-ignore-db=information_schema
replicate-ignore-db=test
replicate-ignore-db=information_schema
relay-log=”mysql-relay-log”
auto-increment-increment=2
auto-increment-offset=2
Я запускаю оба сервера, открыв командную строку и вводя следующее:
“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld”
“C:\Program Files\MySQL\MySQL Server 5.7 – 2\bin\mysqld”
Команда, похоже, выполняется успешно, так как ошибок не отображается, но когда я смотрю в диспетчере задач, чтобы увидеть, работают ли какие-либо процессы mysql, я не вижу их.
Что я делаю не так?
Ошибка, которую я допустил, заключалась в том, что я копировал всю папку установки MySQL. Вам не нужно копировать эту папку.
- Просто создайте новый файл ini для каждого экземпляра, который вы хотите запустить (примеры приведены выше) в любом месте, например, C:\MyInstances\my1.ini.
- Затем создайте новую папку, например, data1 в C:\MyInstances\data1 и скопируйте в нее базы данных mysql и information_schema. Вы получите эти базы данных из папки данных, где установлен MySQL. На Windows 2012 (и, вероятно, других серверных ОС) это обычно C:\ProgramData\MySQL
- Затем определите следующее в своем ini-файле.
datadir=C:/MyInstances/data1
- Затем выполните следующую команду, которая установит MySQL как службу. После создания службы просто запустите ее.
MySqlpath\bin\mysqld –install mysqld1
–defaults-file=PATH_TO_YOUR_INI_FILE
Конечно, в каждом ini-файле вам нужно определить другой номер порта, как упоминал @Anthony Fornito.
Я полагаю, вы пытались запустить их на одном и том же порту.
Изменение номеров портов на разные сделало это работающим.
- Создайте отдельную папку данных и дайте ПОЛНЫЙ ДОСТУП к NETWORK SERVICE.
- Скопируйте my.ini в новую папку данных.
-
Создайте новый файл в директории данных с именем mysql-init.txt и добавьте одну строку, чтобы убедиться, что пароль пользователя root установлен.
ALTER USER 'root'@'localhost' IDENTIFIED BY '[Введите пароль]';
-
Отредактируйте my.ini, изменив порт, сокет, datadir и название базового имени общей памяти. Все из них должны отличаться от других экземпляров MySQL.
my.ini:
[client]
port=3333
socket=MYSQL2_INST.SOCK
shared-memory-base-name=MYSQL2_INST
[mysqld]
shared-memory-base-name=MYSQL2_INST
socket=MYSQL2_INST.SOCK
port=3333
basedir="C:/Program Files/MySQL/MySQL Server 5.7"
datadir="E:/MySQL2/Data"
-
Из командной строки перейдите в ~\MySQL Server X.Y\bin\ и выполните
mysqld --install MySQL57-2 --defaults-file=E:\mysql2\data\my.ini --init-file=E:\mysql2\data\mysql-init.txt
-
Запустите службу
NET START MySQL57-2
-
Проверьте, чтобы убедиться, что служба успешно запустилась. Если нет, вы можете найти журнал ошибок в папке данных, в противном случае все должно быть в порядке.
Мои шаги на Windows 10
:
- Скопируйте
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
вC:\ProgramData\MySQL\MySQL Server 8.0\my1.ini
- Откройте
my1.ini
и измените:- port=3307 (в разделе Client и Server)
- datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data1
- report_port=3307
- Скопируйте
C:\ProgramData\MySQL\MySQL Server 8.0\Data
вC:\ProgramData\MySQL\MySQL Server 8.0\Data1
- Запустите в
cmd
с правами администратора, если необходимо:
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --install MySQL80-1 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my1.ini"
Если все прошло хорошо, вы увидите:
Служба успешно установлена.
- Win+R
Напишитеservices.msc
, найдите имя службыMySQL80-1
, щелкните по нему правой кнопкой мыши и выберитеЗапустить
.
Если все прошло хорошо, вы увидите, что Статус
изменится на Работает
.
Если что-то пошло не так, откройте файл xxx.err
, который находится в C:\ProgramData\MySQL\MySQL Server 8.0\Data1
, чтобы проверить, почему.
Если вы больше не хотите, чтобы служба работала:
- Остановите её
- Удалите ее в
cmd
с помощьюsc delete MySQL80-1
, гдеMySQL80-1
— это имя вашей службы.
У меня все прошло немного иначе. Я использую mysql 8.0. Сначала я скопировал содержимое my.ini в my2.ini. В файле my2.ini я внес следующие изменения:
под [client]:
port=3307
под [mysqld]:
port=3307
datadir=C:/ProgramData/MySQL/MySQL Server 8.0\Data2 (Data — это значение по умолчанию для первого экземпляра)
Затем откройте командную строку от имени администратора по адресу “C:\Program Files\MySQL\MySQL Server 8.0\bin” и выполните следующие команды:
mysqld –initialize-insecure –console –datadir=”C:\ProgramData\MySQL\MySQL Server 8.0\Data2″
(чтобы заполнить папку стандартными таблицами и файлами mysql).
mysqld –install MySQL3307 –defaults-file=”C:\ProgramData\MySQL\MySQL Server 8.0\my2.ini”
(чтобы установить mysql-сервер как службу windows).
Перейдите в службы Windows, запустите службу “MySQL3307”, и все будет готово.
Ответ или решение
Чтобы установить и запустить несколько экземпляров MySQL на Windows Server 2012, выполните следующие шаги:
Шаг 1: Подготовка к установке
-
Создайте отдельные папки для данных:
Вам нужно создать отдельные директории для данных каждого экземпляра. Например, создайте папкиC:\MyInstances\data1
иC:\MyInstances\data2
. -
Копирование данных:
Вам потребуется иметь базовые данные для ваших экземпляров. Папка с данными, как правило, находится по адресуC:\ProgramData\MySQL\MySQL Server 5.7\Data
. Скопируйте необходимые папкиmysql
иinformation_schema
из этого каталога в созданные непосредственно папки для экземпляров.
Шаг 2: Настройка конфигурации
-
Создайте отдельные файлы конфигурации:
Создайте новый файл конфигурацииmy1.ini
для первого экземпляра иmy2.ini
для второго экземпляра. Эти файлы можно разместить в любой удобной директории, например вC:\MyInstances
.Пример
my1.ini
:[client] port=3306 [mysqld] port=3306 datadir=C:/MyInstances/data1
Пример
my2.ini
:[client] port=3307 [mysqld] port=3307 datadir=C:/MyInstances/data2
Обратите внимание, что для каждого экземпляра порт (здесь 3306 и 3307) должен быть уникальным.
Шаг 3: Установка экземпляров как службы Windows
-
Инициализация данных:
Откройте командную строку с правами администратора и выполните следующие команды для инициализации второго экземпляра:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld --initialize-insecure --datadir="C:\MyInstances\data1" C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld --initialize-insecure --datadir="C:\MyInstances\data2"
Каждая команда создаст базу данных и необходимые таблицы в указанных каталога данных.
-
Установка экземпляра как службы:
После инициализации, выполните следующее для установки каждого экземпляра как службы:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld --install MySQL1 --defaults-file="C:\MyInstances\my1.ini" C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld --install MySQL2 --defaults-file="C:\MyInstances\my2.ini"
Если установка прошла успешно, вы увидите сообщение о том, что служба была успешно установлена.
Шаг 4: Запуск служб
- Запуск служб:
Перейдите в меню "Службы" (services.msc
) и найдите службыMySQL1
иMySQL2
. Щелкните правой кнопкой мыши на каждой службе и выберите "Запустить".
Шаг 5: Проверка работы
- Проверка статуса:
Убедитесь, что службы запущены. Если они не запустились, проверьте журналы ошибок, которые располагаются в каталогах данных экземпляров, чтобы выявить причину проблем.
Заключение
В результате выполнения этих шагов вы сможете успешно установить и запустить несколько экземпляров MySQL на Windows Server 2012. Учтите, что ключевыми моментами являются уникальность портов и правильное указание директорий данных в конфигурационных файлах.