daixijun.mysql

mysql

Status Budowy Ansible Galaxy Ostatnia wersja GitHub

Przeznaczone do szybkiego wdrażania klastra MySQL.

Obsługiwane tryby klastra:

  • Idealna replikacja oparta na GTID
  • Włączona domyślnie pół-synchronizacja (Semi-Sync)
  • Replikacja oparta na architekturze MHA
  • MGR pojedynczy tryb główny (domyślnie)
  • MGR tryb wielu głównych
  • Klaster ReplicaSet

Obsługiwane wersje MySQL:

Wymagania środowiskowe

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

Zmienne

Nazwa zmiennej Typ Wartość domyślna Opis
mysql_version string 8.0.23 Wersja MySQL
mysql_upgrade bool false Czy wykonać operację aktualizacji wersji?
mysql_download_url string Adres do pobrania pakietu bez instalacji
mysql_inventory_group string mysql Nazwa grupy w inwentaryzacji Ansible, domyślnie mysql
mysql_basedir string /usr/local/mysql Katalog instalacji
mysql_datadir string /data/mysql Katalog na pliki danych
mysql_logdir string /var/log/mysqld Katalog na logi
mysql_pidfile string /var/run/mysqld/mysqld.pid Lokalizacja pliku PID
mysql_socket string /var/run/mysqld/mysqld.sock Lokalizacja pliku Socket
mysql_port int 3306 Port nasłuchujący
mysql_bind_address string 0.0.0.0 Adres nasłuchujący
mysql_interface string "" Określ karta sieciowa, domyślnie używana jest pierwsza karta poza lo
mysql_default_time_zone string +8:00 Określenie strefy czasowej
mysql_character_set_server string utf8mb4 Domyślny zestaw znaków
mysql_collation_server string utf8mb4_general_ci Domyślna kolacja znaków
mysql_max_connections int 1005 Maksymalna liczba połączeń
mysql_max_user_connections int 1000 Maksymalna liczba połączeń dla użytkownika, musi być mniejsza niż mysql_max_connections
mysql_interactive_timeout int 28800 Czas oczekiwania na aktywność przed zamknięciem połączenia interaktywnego
mysql_wait_timeout int 28800 Czas oczekiwania na aktywność przed zamknięciem połączenia nieinteraktywnego
mysql_max_connect_errors int 200 Maksymalna liczba błędów połączenia
mysql_root_password string "" Hasło dla konta root
mysql_cluster_type string mgr Typ klastra (domyślnie mgr), do wyboru mgr (Mysql Group Replication)/ms (Master-Slave)
mysql_cluster_name string default Nazwa klastra, odpowiednia dla InnodbCluster/ReplicaSet
mysql_mha_enabled bool false Czy włączyć wysoką dostępność opartą na MHA
mysql_mha_config_dir string /etc/mha Katalog plików konfiguracyjnych MHA
mysql_mha_manager_workdir string /var/log/mha Katalog roboczy MHA, zawierający logi i informacje o stanie
mysql_mha_user string mha Użytkownik do łączenia się z MySQL, potrzebne są uprawnienia ALL
mysql_mha_password string "" Hasło do zarządzania MySQL
mysql_mha_repl_user string repl Konto do replikacji MySQL
mysql_mha_repl_password string "" Hasło dla konta replikacji MySQL
mysql_mha_ssh_user string root Konto SSH do komunikacji między węzłami
mysql_mha_ssh_port int 22 Port SSH do komunikacji między węzłami
mysql_mha_ping_interval int 2 Interwał pingowania stanu węzła głównego
mysql_mha_vip string "" VIP przypisany do węzła głównego
mysql_mha_wechat_token string "" Klucz robota WeChat do wysyłania powiadomień
mysql_mha_proxy string "" Proxy używane w skrypcie do wysyłania powiadomień (send_report)
mysql_repl_user string repl Konto do replikacji/klastrowania
mysql_repl_password string Hasło do konta replikacji/klastrowania
mysql_group_replication_name uuid "" Nazwa klastra grupowego, wygenerowana poprzez SELECT UUID() w MySQL lub uuidgen w shellu
mysql_group_replication_single_primary_mode bool true Czy klaster MGR jest w trybie pojedynczego źródła
mysql_innodb_cluster_enable bool true Czy włączyć klaster Innodb
mysql_innodb_cluster_username string ic Użytkownik do tworzenia i zarządzania klastrem Innodb, wymagane uprawnienia ALL WITH GRANT OPTION
mysql_innodb_cluster_password string "" Hasło zarządzające
mysql_proxysql_config bool false Czy używać proxysql jako warstwy proxy
mysql_proxysql_monitor_username string monitor Użytkownik proxysql monitorujący stan mgr
mysql_proxysql_monitor_password string "" Hasło monitorujące stan mgr w proxysql
mysql_databases array [] Bazy danych do utworzenia
mysql_users array [] Użytkownicy do utworzenia

Zależności

Kolekcje:

Przykład

Instalacja

ansible-galaxy collection install -r requirements.yml

Użycie

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

Znane problemy

  • Moduł mysql_user ma problemy z idempotencją przy przyznawaniu uprawnień ALL dla wersji MySQL powyżej 8.0 Idempotencja grant all

Do zrobienia

  • W trybie master-slave wsparcie dla pół-synchronizacji
  • Ulepszenie testów side-effect w MHA
  • Wsparcie dla aktualizacji wersji
  • Wsparcie dla odbudowy węzłów
  • W skrajnych przypadkach MGR, po awarii wszystkich węzłów, należy znaleźć instancję z największym gtid, aby ustawić ją jako główną i ponownie uruchomić klaster

Naprawa błędów klastra

Odzyskiwanie z awarii klastra MGR

Zbierz dane, wykonaj SELECT RECEIVED_TRANSACTION_SET from performance_schema.replication_connection_status + show variables like 'gtid_executed', a następnie wybierz największą główną, aby ustawić jako główną.

O projekcie

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

Zainstaluj
ansible-galaxy install daixijun.mysql
Licencja
mit
Pobrania
238
Właściciel