daixijun.mysql

mysql

Build-Status Ansible-Galaxy GitHub-Tag

Ein Werkzeug zur schnellen Bereitstellung von MySQL-Clustern.

Unterstützte Cluster-Modi:

  • GTID-basierte Master-Slave-Replikation
  • Standardmäßig aktiviertes Semi-Sync
  • Master-Slave-Replikation basierend auf MHA-Architektur
  • MGR Einzelmaster-Modus (Standard)
  • MGR Mehrmaster-Modus
  • ReplicaSet

Unterstützte MySQL-Versionen:

Systemanforderungen

  • CentOS 7+
  • Ansible 2.9+
  • MySQL 8.0+

Variablen

Variablenname Typ Standardwert Beschreibung
mysql_version string 8.0.23 MySQL-Version
mysql_upgrade bool false Ob ein Upgrade der Version durchgeführt werden muss
mysql_download_url string Download-URL für das Installationspaket
mysql_inventory_group string mysql Gruppenname im Ansible-Inventory, standardmäßig mysql
mysql_basedir string /usr/local/mysql Installationsverzeichnis
mysql_datadir string /data/mysql Verzeichnis zur Speicherung von Daten
mysql_logdir string /var/log/mysqld Verzeichnis für Logs
mysql_pidfile string /var/run/mysqld/mysqld.pid Speicherort der PID-Datei
mysql_socket string /var/run/mysqld/mysqld.sock Speicherort der Socket-Datei
mysql_port int 3306 Verfügbare Portnummer
mysql_bind_address string 0.0.0.0 Bindungsadresse
mysql_interface string "" Bestimmte Netzwerkschnittstelle, standardmäßig die erste, die nicht lo ist
mysql_default_time_zone string +8:00 Bestimmung der Zeitzone
mysql_character_set_server string utf8mb4 Standard-Zeichensatz
mysql_collation_server string utf8mb4_general_ci Standard-Zeichenreihe
mysql_max_connections int 1005 Maximale Verbindungen
mysql_max_user_connections int 1000 Maximale Benutzerverbindungen, muss kleiner als mysql_max_connections sein
mysql_interactive_timeout int 28800 Wartezeit in Sekunden, bevor interaktive Verbindungen vom Server geschlossen werden
mysql_wait_timeout int 28800 Wartezeit in Sekunden, bevor nicht-interaktive Verbindungen vom Server geschlossen werden
mysql_max_connect_errors int 200 Maximale Anzahl an Verbindungsfehlern
mysql_root_password string "" Passwort für den root-Benutzer
mysql_cluster_type string mgr Cluster-Typ (Standard ist MGR), wählbar zwischen mgr (Mysql Gruppenreplikation) oder ms (Master-Slave)
mysql_cluster_name string default Name des Clusters für InnodbCluster/ReplicaSet
mysql_mha_enabled bool false Ob MHA-basierte Master-Slave-Hochverfügbarkeit aktiviert ist
mysql_mha_config_dir string /etc/mha Verzeichnis für die MHA-Konfigurationsdateien
mysql_mha_manager_workdir string /var/log/mha Arbeitsverzeichnis von MHA, in dem Logs und Statusinformationen gespeichert werden
mysql_mha_user string mha Benutzer für die Verbindung zur MySQL-Verwaltung, benötigt ALL-Rechte
mysql_mha_password string "" Management-Passwort für MySQL
mysql_mha_repl_user string repl Benutzer für die MySQL-Master-Slave-Replikation
mysql_mha_repl_password string "" Passwort für die MySQL-Master-Slave-Replikation
mysql_mha_ssh_user string root SSH-Benutzer für die Kommunikation zwischen Knoten
mysql_mha_ssh_port int 22 SSH-Port für die Kommunikation zwischen Knoten
mysql_mha_ping_interval int 2 Herzschlagintervall für den Status des Master-Knotens
mysql_mha_vip string "" Zu bindende VIP an den Master-Knoten
mysql_mha_wechat_token string "" Schlüssel für den Unternehmens-WeChat-Bot, um Alarmbenachrichtigungen zu senden
mysql_mha_proxy string "" Proxy für das Skript zur Alarmbenachrichtigung (send_report)
mysql_repl_user string repl Benutzer für die Master-Slave/Gruppe-Replikation
mysql_repl_password string Passwort für den Master-Slave/Gruppe-Replikationsbenutzer
mysql_group_replication_name uuid "" Name des Replikationsclusters, im MySQL mit SELECT UUID() oder in der Shell mit uuidgen erzeugt
mysql_group_replication_single_primary_mode bool true Ob das MGR-Cluster im Einzelmaster-Modus läuft
mysql_innodb_cluster_enable bool true Ob das Innodb Cluster aktiviert werden soll
mysql_innodb_cluster_username string ic Benutzer zur Erstellung und Verwaltung des Innodb Clusters, benötigt ALL WITH GRANT OPTION Rechte
mysql_innodb_cluster_password string "" Verwaltungs-Passwort
mysql_proxysql_config bool false Ob Proxysql als Proxy-Ebene verwendet werden soll
mysql_proxysql_monitor_username string monitor Proxysql-Benutzer zur Überwachung des MGR-Status
mysql_proxysql_monitor_password string "" Proxysql-Passwort zur Überwachung des MGR-Status
mysql_databases array [] Datenbanken, die erstellt werden sollen
mysql_users array [] Benutzer, die erstellt werden sollen

Abhängigkeiten

Sammlungen:

Beispiel

Installation

ansible-galaxy collection install -r requirements.yml

Verwendung

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

Bekannte Probleme

To-Do

  • Unterstützung der halb-synchronen Replikation im Master-Slave-Modus
  • Verbesserung der Side-Effects-Tests unter MHA
  • Unterstützung von Versionsupdates
  • Unterstützung für die Wiederherstellung von Knoten
  • Nach einem vollständigen Ausfall aller Knoten im MGR-Cluster muss die Instanz mit dem größten GTID als primärer Knoten für die Neugestaltung des Clusters gefunden werden

Cluster-Störung beheben

Wiederherstellung eines MGR-Clusters nach einem asynchronen Ausfall

Nehmen Sie den Schnittpunkt von SELECT RECEIVED_TRANSACTION_SET from performance_schema.replication_connection_status + SHOW VARIABLES LIKE 'gtid_executed' und wählen Sie den Master mit dem größten Wert als Primärknoten aus.

Über das Projekt

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

Installieren
ansible-galaxy install daixijun.mysql
GitHub Repository
Lizenz
mit
Downloads
238
Besitzer