CoreOS: как установить зависимости для контейнеров Docker в облачной конфигурации?

У меня есть базовый cloud-config.yaml для запуска четырех контейнеров в CoreOS (напрямую, без кластеризации). Два контейнера ( nginx-gen и nginx-letsencrypt ) монтируют тома из контейнера с именем nginx . Каждый запуск контейнера определяется как модуль systemd.

Я добавил After = и Requires = зависимостей, однако при первом входе в систему меня приветствуют:

CoreOS stable (1185.5.0)
Failed Units: 2
  letsencrypt.service
  nginx-gen.service

nginx ] (тот, который обеспечивает том) работает.

Если после этого я выполню:

У меня есть рабочий процесс автоматического развертывания, который отправляет код на мои рабочие серверы и запускает миграцию базы данных, обновление статических файлов и т. Д. Проблема в том, что Gunicorn не перезагружает изменения кода автоматически без опции разработки - reload , которые они не рекомендуют использовать в производстве. Вместо этого инструкция состоит в том, чтобы послать сигнал HUP на masterpid . Проблема в том, что я не знаю, как получить masterpid в автоматическом скрипте, хотя это достаточно легко сделать вручную. Я пытаюсь создать и запустить несколько экземпляров, но очень разочарован тем, что такая простая вещь не работает. Я установил MySQL в C: \ Program Files \ ...

Я только что установил MySQL 5.7 на виртуальную машину Windows 2012. Я пытаюсь создать и запустить несколько экземпляров, но очень разочарован тем, что такая простая вещь не работает.

Я установил MySQL в C: \ Program Files \ MySQL \ MySQL Server 5.7 , который является местоположением по умолчанию и затем я скопировал папку и сделал ее еще одну копию, чтобы создать еще один экземпляр (я полагаю, так это работает?)

Оба экземпляра MySQL показаны на изображении ниже.

Server1 Server1

Server2
Server2

Настройки INI для обоих серверов приведены ниже:

Server1

server-id = 1
Я пытаюсь создать и запустить несколько экземпляров, но очень разочарован тем, что такая простая вещь не работает.

Я установил MySQL в C: \ Program Files \ MySQL \ MySQL Server 5.7 , который является местоположением по умолчанию и затем я скопировал папку и сделал ее еще одну копию, чтобы создать еще один экземпляр (я полагаю, так это работает?)

Оба экземпляра MySQL показаны на изображении ниже.

Server1 Server1

Server2
Server2

Настройки INI для обоих серверов приведены ниже:

Server1

server-id = 1
Я пытаюсь создать и запустить несколько экземпляров, но очень разочарован тем, что такая простая вещь не работает.

Я установил MySQL в C: \ Program Files \ MySQL \ MySQL Server 5.7 , который является местоположением по умолчанию и затем я скопировал папку и сделал ее еще одну копию, чтобы создать еще один экземпляр (я полагаю, так это работает?)

Оба экземпляра MySQL показаны на изображении ниже.

Server1 Server1

Server2
Server2

Настройки INI для обоих серверов приведены ниже:

Server1

server-id = 1
7 , который является местоположением по умолчанию, а затем я скопировал папку и сделал ее еще одну копию, чтобы создать еще один экземпляр (я полагаю, так это работает?)

Оба экземпляра MySQL показаны на изображении ниже.

Server1 Server1

Server2
Server2

Настройки INI для обоих серверов приведены ниже:

Server1

server-id = 1
7 , который является местоположением по умолчанию, а затем я скопировал папку и сделал ее еще одну копию, чтобы создать еще один экземпляр (я полагаю, так это работает?)

Оба экземпляра MySQL показаны на изображении ниже.

Server1 Server1

Server2
Server2

Настройки INI для обоих серверов приведены ниже:

Server1

server-id = 1
log-bin = "mysql-bin"
binlog-ignore-db = тест
binlog-ignore-db = схема_информации
реплицировать-игнорировать-db = тест
replicate-ignore-db = схема_информации
relay-log = "mysql-relay-log"
автоинкремент-инкремент = 2
auto-increment-offset = 1

Server2
server-id = 2
log-bin = "mysql-bin"
binlog-ignore-db = тест
binlog-ignore-db = схема_информации
реплицировать-игнорировать-db = тест
replicate-ignore-db = схема_информации
relay-log = "mysql-relay-log"
автоинкремент-инкремент = 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, я ничего не вижу.

Что я делаю не так?

11
задан 31 December 2016 в 22:34
4 ответа

Моя ошибка заключалась в копировании всей установочной папки MySQL. Вам не нужно копировать эту папку.

  • Просто создайте новый ini-файл для каждого экземпляра, который вы хотите запустить (примеры приведены выше) в любом месте, например, C: \ MyInstances \ my1.ini.
  • Затем создайте новую папку, например, для data1 в C: \ MyInstances \ data1 и скопируйте в него базы данных mysql и information_schema . Вы получите эти базы данных из папки данных, в которой установлен MySQL. В Windows 2012 (и, возможно, в других серверных ОС) это обычно C: \ ProgramData \ MySQL
  • Затем определите следующее в своем ini-файле.

datadir = C:/ MyInstances / data1

  1. Затем выполните следующую команду, которая установит MySQL как службу. После создания службы просто запустите службу.

MySqlpath \ bin \ mysqld - установить mysqld1 --defaults-file = PATH_TO_YOUR_INI_FILE

Конечно, в каждом ini-файле вы должны определить другой номер порта, как указано @Anthony Fornito.

11
ответ дан 2 December 2019 в 21:43

Полагаю, вы пытались запустить их на одном порту.

Изменили номера портов, чтобы они отличались, что и заставило его работать

.
11
ответ дан 2 December 2019 в 21:43
  1. Создайте отдельную папку данных и предоставьте ПОЛНОЕ УПРАВЛЕНИЕ СЕТЕВОЙ СЛУЖБЕ.
  2. Скопируйте файл my.ini в новую папку данных.
  3. Создайте новый файл в каталоге данных с именем mysql-init.txt и добавьте одну строку, чтобы убедиться, что пароль пользователя root установлен.

    • ALTER USER 'root' @ 'localhost' IDENTIFIED BY '[Enter Password]';
  4. Отредактируйте файл my. ini, изменив порт, сокет, каталог данных и базовое имя разделяемой памяти. Все это должно отличаться от других экземпляров 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"
  1. В командной строке перейдите в ~ \ MySQL Server XY \ bin \ и запустите

    • mysqld --install MySQL57-2 --defaults-file = E: \ mysql2 \ data \ my .ini --init-file = E: \ mysql2 \ data \ mysql-init.txt
  2. Запуск службы

    • NET START MySQL57-2
  3. Убедитесь, что служба запущена успешно. Если этого не произошло, вы можете найти журнал ошибок в папке с данными, иначе все будет в порядке.

11
ответ дан 2 December 2019 в 21:43

Мои шаги по Windows 10:

  1. Скопировать C:\ProgramData\MySQL\MySQL Server 8.0\my.ini в C:\ProgramData\MySQL\MySQL Server 8.0\my1.ini
  2. Откройте my1.ini и измените:
    • port=3307(в разделе Client and Server)
    • datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data1
    • report_port=3307
  3. Копировать C:\ProgramData\MySQL\ MySQL Server 8.0\Data to C:\ProgramData\MySQL\MySQL Server 8.0\Data1
  4. Выполнить в командной строке 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"

Если все прошло хорошо, вы увидите:
Служба успешно установлена.

  1. Win+R
    Введите services.msc, найдите имя службы MySQL80-1, щелкните правой кнопкой мыши и выберите Пуск.

Если все прошло хорошо, вы увидите, что Статус изменится на Выполняется.
Если это не помогло, откройте файл xxx.err, расположенный в C:\ProgramData\MySQL\MySQL Server 8.0\Data1, чтобы проверить, почему.


Если вам больше не нужен сервис:

  • Остановите его
  • Удалите его в командной строке cmd с помощью sc delete MySQL80-1 где MySQL80-1 — имя вашей службы.
1
ответ дан 18 July 2020 в 09:11

Теги

Похожие вопросы