1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/witless-docker-mysql-mha

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Docker MySQL MHA

Проект Docker Compose для MySQL MHA, основанный на Docker 1.13.1.

Позволяет быстро запустить кластер MasterHA в режиме GTID, предназначен для обучения и исследований с использованием MySQL и Docker.

Окружение

  • MacOS 10.12.3
  • Docker 1.13.1
  • Docker Compose 1.11.1
  • Изображение Docker для MySQL 5.7.17
  • Изображение Docker для Debian Jessie
  • mha4mysql-manager-0.56
  • mha4mysql-node-0.56

Возможности

  • Исходники Debian от Университета Синьцзянского технологического колледжа (USTC)
  • Автоматическое создание учетной записи MySQL для репликации и учетной записи для работы MHA
  • Настройка учетных записей MySQL для репликации и учетных записей для работы MHA
  • Автоматическое создание ключей SSH
  • Обмен ключами SSH между контейнерами и настройка SSH без пароля
  • Автоматический запуск MasterHA

Конфигурация и запуск

Определение docker-compose.yml

master — сервис Docker compose с именем master, контейнер главного сервера по умолчанию использует порт 3406

slave_1 — сервис Docker compose с именем slave_1, контейнер вторичного сервера по умолчанию использует порт 3407

manager — сервис Docker compose с именем manager, служба управления MHA

mha_share — общие данные между контейнерами

Описание директорий и файлов

  • account.env

    Сохраняет общие переменные окружения для всех контейнеров, такие как имя пользователя и пароль для учетной записи MySQL repl

  • employees_db

    Скрипт инициализации MySQL при старте контейнера master- employees_master

    Конфигурационные файлы, логи и базы данных для контейнера master

  • employees_slave_1

    Конфигурационные файлы, логи и базы данных для контейнера slave_1

  • employees_share

    Общие данные между контейнерами

  • mha_manager

    Директория с Dockerfile и зависимыми файлами для создания образа Docker mha_manager, указано в docker-compose.yml

  • mha_node

    Директория с Dockerfile и зависимыми файлами для создания образа Docker mha_node, указано в docker-compose.yml

  • reset.sh

    Остановка проекта и удаление всех логов и баз данных (кроме конфигурационных файлов)

  • shutdown.sh

    Простое завершение проекта

  • start.sh

    1. Запуск проекта
    2. Создание ключей SSH в каждом контейнере
    3. Копирование ключей SSH в другие контейнеры для настройки SSH без пароля
    4. Создание цепочки репликации между master и slave_ Yöntem
    5. Генерация конфигурационных файлов MHA на основе пользовательских учетных записей MySQL
    6. Проверка правильности SSH между контейнерами с помощью команды masterha_check_ssh
    7. Проверка состояния репликации с помощью команды masterha_check_repl
    8. Запуск службы masterha_manager и запись логов в файл mha.log в директории employees_share

Запуск

  1. При первом запуске рекомендуется выполнить инициализацию MySQL, чтобы контейнер принимал соединения```shell ➜ mha git:(master) docker-compose up -d Создание сети "mha_default" с использованием стандартного драйвера Создание mha_mha_node_1 Создание mha_mha_share_1 Создание mha_mha_manager_1 Создание mha_master_1 Создание mha_slave_1_1 Создание mha_manager_1

2. После прогрева запустите скрипт `start.sh` для создания кластера MHA.```shell
➜  mha git:(master) . /start.sh
>>> Начало работы Docker Compose...
Запуск mha_mha_manager_1
Запуск mha_mha_share_1
Запуск mha_mha_node_1
mha_master_1 уже актуален
mha_slave_1_1 уже актуален
mha_manager_1 уже актуален
>>> Настройка SSH...
fd9686976e61 инициализация SSH...
fd9686976e61 Успешное изменение пароля пользователя root.
fd9686976e61 SSH-сервис успешно перезапущен.
fd9686976e61 Успешное создание ключа SSH.
...
fd9686976e61 Успешное копирование ключа SSH на менеджер.
fd9686976e61 Успешное копирование ключа SSH на мастер.
...
>>> Создание пользователя MySQL для репликации с именем 'repl' в контейнере мастера...
mysql: [Предупреждение] Использование пароля на командной строке может представлять риск безопасности.
>>> Настройка репликации с режимом GTID...
Настройка slave_1 754214d5bdfc...
mysql: [Предупреждение] Использование пароля на командной строке может представлять риск безопасности.
>>> Инициализация конфигурации MHA...
Конфигурация MHA "/mha_share/application.cnf" ещё не инициализирована.
Добавлен хост "master" в файл конфигурации MHA.
Добавлен хост "slave_1" в файл конфигурации MHA.
**********************************************
Проверка SSH MHA...
Ср 15 фев 2017 11:04:08 MSK - [Предупреждение] Глобальный файл конфигурации /etc/masterha_default.cnf не найден. Пропуск.
...
Ср 15 фев 2017 11:04:08 MSK - [Отладка]   OK.
Ср 15 фев 2017 11:04:09 MSK - [Информация] Все тесты SSH-соединений прошли успешно.
**********************************************
Проверка репликации MHA до MySQL...
Ср 15 фев 2017 11:04:09 MSK - [Предупреждение] Глобальный файл конфигурации /etc/masterha_default...

cnf не найден. Пропуск. . . . MySQL Replication Health is OK.


Начало работы менеджера MHA с файлом "/mha_share/application.cnf". . . . nohup: перенаправление stderr в stdout

Готово!

## Примечание
```При первом запуске, если не выполнить процесс "подогрева" перед вызовом скрипта `start.sh`, это может привести к ошибкам при создании цепочки главного и реплицированного серверов MySQL из-за незаконченной инициализации MySQL. Если база данных уже была проинициализирована, то процесс "подогрева" не требуется.

## Учебные заметки

1. При первом запуске выполните команду `docker-compose up -d` для инициализации MySQL.
2. Один сервис Docker Compose соответствует одному контейнеру, что позволяет использовать сетевые возможности по умолчанию Docker Compose для создания сети контейнеров. Это позволяет использовать имя сервиса для SSH-соединения.
3. Этот проект предназначен для изучения MySQL MHA-кластера и практики использования Docker.
4. Для использования виртуального IP можно самостоятельно настроить Keepalive или LVS.

## Ссылки

* [Краткое руководство по использованию MHA](https://www.percona.com/blog/2016/09/02/mha-quickstart-guide/)
* [Изображение Docker MySQL](https://hub.docker.com/_/mysql/)
* [Двусторонняя связь с помощью Docker Compose](https://medium.com/@tristan.claverie/well-there-is-in-fact-a-simpler-solution-than-creating-a-network-do-nothing-at-all-docker-f38e93326134#.l6uupkacv)
* [Как настроить автоматическое переключение MySQL master/slave репликации с использованием MHA](http://www.arborisoft.com/how-to-configure-mysql-masterslave-replication-with-mha-automatic-failover/)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

MySQL MHA кластер, построенный на основе Docker Compose. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/witless-docker-mysql-mha.git
git@api.gitlife.ru:oschina-mirror/witless-docker-mysql-mha.git
oschina-mirror
witless-docker-mysql-mha
witless-docker-mysql-mha
master