mysql

mysql

Статус сборки Ansible Galaxy GitHub тег (последний SemVer)

Для быстрой развертки кластера MySQL.

Поддерживаются следующие режимы кластера:

  • Репликация Master-Slave на основе GTID
  • По умолчанию включена полусинхронная повышенная репликация
  • Репликация Master-Slave на основе архитектуры MHA
  • Одномастевая модель MGR (по умолчанию)
  • Многомастевая модель MGR
  • ReplicaSet репликация

Поддерживаемые версии MySQL:

Требования к окружению

  • Centos 7+
  • Ansible 2.9+
  • MySQL 8.0+

Переменные

Имя переменной Тип Значение по умолчанию Описание переменной
mysql_version строка 8.0.23 Версия MySQL
mysql_upgrade булев false Нужно ли выполнять операцию обновления версии
mysql_download_url строка URL для скачивания без установки
mysql_inventory_group строка mysql Название группы в инвентаре Ansible, по умолчанию mysql
mysql_basedir строка /usr/local/mysql Директория установки
mysql_datadir строка /data/mysql Директория для хранения данных
mysql_logdir строка /var/log/mysqld Директория для хранения логов
mysql_pidfile строка /var/run/mysqld/mysqld.pid Путь к файлу PID
mysql_socket строка /var/run/mysqld/mysqld.sock Путь к файлу сокета
mysql_port целое 3306 Порт для прослушивания
mysql_bind_address строка 0.0.0.0 Адрес для прослушивания
mysql_interface строка "" Указать сетевой интерфейс, по умолчанию используется первый интерфейс, кроме lo
mysql_default_time_zone строка +8:00 Указать часовой пояс
mysql_character_set_server строка utf8mb4 Стандартная кодировка
mysql_collation_server строка utf8mb4_general_ci Стандартная сортировка
mysql_max_connections целое 1005 Максимальное количество подключений
mysql_max_user_connections целое 1000 Максимальное количество подключений для пользователя, должно быть меньше mysql_max_connections
mysql_interactive_timeout целое 28800 Время в секундах до закрытия интерактивного подключения
mysql_wait_timeout целое 28800 Время в секундах до закрытия неинтерактивного подключения
mysql_max_connect_errors целое 200 Максимальное количество ошибок соединения
mysql_root_password строка "" Пароль для учетной записи root
mysql_cluster_type строка mgr Тип кластера (по умолчанию mgr) можно выбрать mgr (Mysql Group Replication)/ms (Master-Slave)
mysql_cluster_name строка default Имя кластера, подходит для InnodbCluster/ReplicaSet
mysql_mha_enabled булев false Включить высокую доступность на основе MHA
mysql_mha_config_dir строка /etc/mha Директория для конфигурационных файлов MHA
mysql_mha_manager_workdir строка /var/log/mha Рабочая директория MHA, где хранятся логи и информация о состоянии
mysql_mha_user строка mha Учетная запись для управления MySQL, требуется ALL права
mysql_mha_password строка "" Пароль для управления MySQL
mysql_mha_repl_user строка repl Учетная запись для репликации MySQL
mysql_mha_repl_password строка "" Пароль для репликации MySQL
mysql_mha_ssh_user строка root Учетная запись SSH для связи между узлами
mysql_mha_ssh_port целое 22 Порт SSH для связи между узлами
mysql_mha_ping_interval целое 2 Интервал пинга статуса узла master
mysql_mha_vip строка "" VIP для привязки к узлу master
mysql_mha_wechat_token строка "" Ключ бота WeChat для отправки уведомлений
mysql_mha_proxy строка "" Прокси для использования в скрипте отправки уведомлений (send_report)
mysql_repl_user строка repl Учетная запись для Master-Slave/Gruop репликации
mysql_repl_password строка Пароль учетной записи для Master-Slave/Gruop репликации
mysql_group_replication_name uuid "" Имя кластера групповой репликации, в MySQL используется SELECT UUID() или uuidgen в shell
mysql_group_replication_single_primary_mode булев true Является ли кластер MGR однопрофильным
mysql_innodb_cluster_enable булев true Активировать Innodb Cluster
mysql_innodb_cluster_username строка ic Учетная запись для создания и управления Innodb Cluster, требуется ALL WITH GRANT OPTION права
mysql_innodb_cluster_password строка "" Пароль для управления
mysql_proxysql_config булев false Использовать ли proxysql в качестве прокси
mysql_proxysql_monitor_username строка monitor Учетная запись для мониторинга состояния mgr с помощью proxysql
mysql_proxysql_monitor_password строка "" Пароль для мониторинга состояния mgr с помощью proxysql
mysql_databases массив [] Бизнес-базы данных, которые нужно создать
mysql_users массив [] Пользователи, которых нужно создать

Зависимости

коллекции:

Пример

Установка

ansible-galaxy collection install -r requirements.yml

Применение

- hosts: servers
  roles:
    - { role: mysql, mysql_version: 8.0.20 }

Известные проблемы

  • Модуль mysql_user для версий MySQL выше 8.0 имеет проблемы с идемпотентностью при назначении пользователю привилегий ALL Idempotence all grant

Задачи на будущее

  • Поддержка полусинхронной репликации в мастер-слейв режиме
  • Завершить тестирование побочных эффектов в MHA
  • Поддержка обновления версий
  • Поддержка восстановления узлов
  • В экстремальных ситуациях в кластере MGR, когда все узлы падают, необходимо найти экземпляр с максимальным gtid для повторной инициализации кластера в качестве основного узла.

Восстановление после аномалий кластера

Восстановление после асинхронного сбоя кластера MGR

Необходимо взять объединение: select RECEIVED_TRANSACTION_SET from performance_schema.replication_connection_status + show variables like 'gtid_executed', затем выбрать основной узел с максимальным значением, чтобы сделать его основным.

О проекте

安装mysql,并配置主从或MGR集群

Установить
ansible-galaxy install daixijun/ansible-role-mysql
Лицензия
mit
Загрузки
226
Владелец