XtraDB-Cluster

Статус сборки

Ansible роль ansible-role-XtraDB-Cluster

Ansible роль для установки кластера Percona XtraDB. Она выполняет следующие задачи:

  • установка пакетов
  • обеспечение безопасных соединений
  • инициализация кластера

Требования

Отсутствуют специальные требования.

Переменные роли

БАЗОВЫЕ

Переменная По умолчанию Комментарии (тип)
xtradb_bind_address - IP для прослушивания
xtradb_bind_interface eth0 Интерфейс, используемый кластером
xtradb_cluster_name foo Имя кластера
xtradb_configured xtradb_datadir/configured Уникальный идентификатор для идемпотентности
xtradb_datadir /var/lib/mysql Директория данных
xtradb_master_node groups[xtradb_nodes_group][0] Выбранный узел для роли мастера
xtradb_mysql_user mysql Пользователь для запуска galera
xtradb_nodes_group xtradb-cluster-nodes Группа узлов, где будет установлен кластер
xtradb_root_password root Пароль для пользователя root
xtradb_root_user root Пользователь root
xtradb_secured xtradb_datadir/secured Уникальный идентификатор для идемпотентности
xtradb_service mysql Имя службы Linux
xtradb_sst_password sstpassword Пароль для xtradb_sst_user
xtradb_sst_user sstuser Пользователь для передачи состояния снимка
xtradb_swappiness 0 Значение "swappiness". По умолчанию 60. Значение 0 означает, что замена процессов избегается.
xtradb_databases [] Список имен баз данных для добавления
xtradb_users [] Список словарей с указанием пользователей для добавления. Смотрите ниже для подробностей.
xtradb_version 57 Версия пакета XtraDB

Часть MySQL

Для более подробной информации о значениях, читайте документацию по системным переменным сервера MariaDB.

Переменная По умолчанию Комментарии (тип)
xtradb_binlog_format ROW Формат бинарного логирования
xtradb_character_set_server utf Набор символов
xtradb_collation_server utf8_general_ci Коллация
xtradb_default_storage_engine InnoDB Установка движка хранения
xtradb_innodb_autoinc_lock_mode 2 Существует три возможных значения для параметра конфигурации innodb_autoinc_lock_mode: 0, 1, или 2, соответственно для «традиционного», «последовательного» и «смешанного» режима блокировки.
xtradb_innodb_buffer_pool_instances Чтобы включить несколько экземпляров буфера, укажите значение больше 1 (по умолчанию 8) до 64 (максимум). Эта опция применяется только при установке размера innodb_buffer_pool_size на 1 ГБ или более. Общий размер делится между всеми пулами буферов.
xtradb_innodb_buffer_pool_size Хорошее значение - 70%-80% от доступной памяти.
xtradb_innodb_file_format
xtradb_innodb_file_format_check
xtradb_innodb_file_per_table
xtradb_innodb_flush_log_at_trx_commit При значении innodb_flush_log_at_trx_commit=1 буфер логов сбрасывается при каждом выполнении транзакции на лог-файл и обеспечивает максимальную целостность данных, но также может повлиять на производительность. Значение 2 означает, что буфер логов сбрасывается в файл ОС на каждом завершении транзакции.
xtradb_innodb_log_buffer_size Innodb записывает измененные данные в буфер логов, который хранится в памяти, тем самым уменьшая количество операций записи на диск для крупных транзакций. 4 МБ – 8 МБ – хорошее начальное значение.
xtradb_innodb_log_file_size Значение по умолчанию было изменено в MySQL 5.6 на 50 МБ из 5 МБ (старое значение), но это все еще слишком маленький размер для многих рабочих нагрузок.
xtradb_innodb_file_per_table on innodb_file_per_table включен по умолчанию с MySQL 5.6. Это обычно рекомендуется, поскольку позволяет избежать создания огромного общего пространства таблиц и позволяет освобождать место при удалении или обрезке таблицы. Отдельное пространство таблицы также помогает для схемы частичного резервного копирования Xtrabackup.
xtradb_innodb_strict_mode on
xtradb_join_buffer_size
xtradb_log_warnings
xtradb_long_query_time
xtradb_max_allowed_packet
xtradb_max_connections 4096
xtradb_max_heap_table_size
xtradb_max_user_connections
xtradb_pxc_strict_mode ENFORCING Режим строгой проверки PXC предназначен для избежания использования экспериментальных и неподдерживаемых функций в кластере Percona XtraDB.
xtradb_query_cache_size
xtradb_read_buffer_size
xtradb_read_rnd_buffer_size
xtradb_skip_name_resolve 1 Использовать только IP-адреса. Установите в 0 для разрешения имен хостов.
xtradb_slow_query_log 0 Установите в 1, чтобы включить лог медленных запросов.
xtradb_socket
xtradb_sort_buffer_size
xtradb_table_definition_cache
xtradb_table_open_cache
xtradb_table_open_cache_instances
xtradb_tmp_table_size

Добавление баз данных

Базы данных определены словарем, содержащим поля name: (обязательно) и init_script: (необязательно). Скрипт инициализации – это SQL-файл, который выполняется при создании базы данных для инициализации таблиц и заполнения значениями.

xtradb_databases:
  - name: keystone
  - name: mydb
    init_script: files/init_mydb.sql

Добавление пользователей

Пользователи определены словарем, содержащим поля name:, password:, priv: и, возможно, host:. Пароль указан в открытом виде, а priv: определяет привилегии для этого пользователя, как описано в документации Ansible.

Пример:

xtradb_users:
  - name: keystone
    password: KEYSTONE_DBPASS
    priv: 'keystone.*:SUPER'

  - name: cdelgehier
    password: yolo
    priv: 'mydb.*:ALL'
    host: '192.168.1.%'

Зависимости

Зависимостей нет.

Пример плейбука

- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_user: sstuser
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo

      xtradb_nodes_group: "db"
      xtradb_bind_interface: eth0
- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_user: sstuser
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo

      xtradb_bind_address: "{{ ansible_default_ipv4.address }}"
      xtradb_wsrep_cluster_address: "gcomm://{{ groups['db'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | join(',') }}"
      xtradb_master_node: "{{ hostvars[ groups['db'][0] ].ansible_default_ipv4.address }}"
- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo
      xtradb_nodes_group: "db"
      xtradb_bind_interface: eth0

      xtradb_databases:
        - name: keystone
      xtradb_users:
        - name: keystone
          password: PASSWD
          priv: 'keystone.*:GRANT,ALL'

      xtradb_innodb_buffer_pool_instances: 8
      xtradb_innodb_buffer_pool_size: "384M"
      xtradb_innodb_file_format: "Barracuda"
      xtradb_innodb_file_format_check: "1"
      xtradb_innodb_file_per_table: "on"
      xtradb_innodb_flush_log_at_trx_commit: "1"
      xtradb_innodb_log_buffer_size: "16M"
      xtradb_innodb_log_file_size: "50M"
      xtradb_innodb_strict_mode: "on"
      xtradb_join_buffer_size: "128K"
      xtradb_log_warnings: "1"
      xtradb_long_query_time: "10"
      xtradb_max_allowed_packet: "16M"
      xtradb_max_connections: "505"
      xtradb_max_heap_table_size: "16M"
      xtradb_max_user_connections: "500"
      xtradb_query_cache_size: "0"   # отключить
      xtradb_read_buffer_size: "128K"
      xtradb_read_rnd_buffer_size: "256k"
      xtradb_skip_name_resolve: "1"
      xtradb_slow_query_log: "1"
      xtradb_sort_buffer_size: "2M"
      xtradb_table_definition_cache: "1400"
      xtradb_table_open_cache: "2000"
      xtradb_table_open_cache_instances: "8"
      xtradb_tmp_table_size: "16M"
[db]
node1 ansible_host=192.168.1.173
node2 ansible_host=192.168.1.156
node3 ansible_host=192.168.1.154

Тестирование

Доступны два типа тестовых окружений. Одно на основе Vagrant, другое на Docker. Последнее подходит для запуска автоматических тестов на Travis-CI. Тестовый код хранится в отдельных ветках. Для получения информации о том, как настроить эти тестовые окружения на своем компьютере, смотрите файлы README в соответствующих ветках:

Удаление

Чтобы удалить все следы и начать новую установку

ansible db -m shell -a 'rm -rf /var/lib/mysql /var/log/mysqld.log /etc/percona-xtradb-cluster.conf.d ; yum remove Percona* -y'

Участие

Вопросы, запросы на функции и идеи приветствуются и могут быть размещены в разделе "Issues".

Пулл-реквесты также очень приветствуются. Лучший способ отправить PR - сначала создать форк этого проекта на Github, затем создать тематическую ветку для предложенных изменений и отправить ее в свой форк. Github затем может легко создать PR на основе этой ветки.

Лицензия

Лицензия BSD с двумя пунктами, см. LICENSE.md

Участники

О проекте

Install and configure a Cluster Mysql

Установить
ansible-galaxy install cdelgehier/ansible-role-XtraDB-Cluster
Лицензия
other
Загрузки
529
Владелец