daixijun.mysql

mysql

État de construction Ansible Galaxy Tag GitHub (dernière version)

Pour déployer rapidement un cluster MySQL

Supporte les modes de cluster suivants :

  • Réplication maître-esclave basée sur GTID
  • Semi-Sync activé par défaut
  • Réplication maître-esclave basée sur MHA
  • Mode maître unique MGR (par défaut)
  • Mode maître multiple MGR
  • Réplication ReplicaSet

Versions de MySQL prises en charge :

Exigences de l'environnement

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

Variables

Nom de la variable Type Valeur par défaut Description
mysql_version string 8.0.23 Version de MySQL
mysql_upgrade bool false Indique si une mise à niveau est nécessaire
mysql_download_url string Adresse de téléchargement pour le paquet compressé sans installation
mysql_inventory_group string mysql Nom du groupe dans l'inventaire Ansible, par défaut mysql
mysql_basedir string /usr/local/mysql Répertoire d'installation
mysql_datadir string /data/mysql Répertoire de stockage des fichiers de données
mysql_logdir string /var/log/mysqld Répertoire de stockage des logs
mysql_pidfile string /var/run/mysqld/mysqld.pid Emplacement du fichier PID
mysql_socket string /var/run/mysqld/mysqld.sock Emplacement du fichier Socket
mysql_port int 3306 Port d'écoute
mysql_bind_address string 0.0.0.0 Adresse d'écoute
mysql_interface string "" Interface à utiliser, par défaut la première carte sauf lo
mysql_default_time_zone string +8:00 Fuseau horaire à définir
mysql_character_set_server string utf8mb4 Jeu de caractères par défaut
mysql_collation_server string utf8mb4_general_ci Ordre des caractères par défaut
mysql_max_connections int 1005 Nombre maximum de connexions
mysql_max_user_connections int 1000 Nombre maximum de connexions par utilisateur, doit être inférieur à mysql_max_connections
mysql_interactive_timeout int 28800 Nombre de secondes à attendre avant la fermeture des connexions interactives
mysql_wait_timeout int 28800 Nombre de secondes à attendre avant la fermeture des connexions non interactives
mysql_max_connect_errors int 200 Nombre maximum d'erreurs de connexion
mysql_root_password string "" Mot de passe pour le compte root
mysql_cluster_type string mgr Type de cluster (par défaut mgr), options : mgr (Mysql Group Replication) / ms (Master-Slave)
mysql_cluster_name string default Nom du cluster, utilisé pour InnodbCluster/ReplicaSet
mysql_mha_enabled bool false Indique si la haute disponibilité basée sur MHA est activée
mysql_mha_config_dir string /etc/mha Répertoire des fichiers de configuration MHA
mysql_mha_manager_workdir string /var/log/mha Répertoire de travail MHA pour l'enregistrement des logs et des informations d'état
mysql_mha_user string mha Utilisateur utilisé pour gérer MySQL, doit avoir les droits ALL
mysql_mha_password string "" Mot de passe de gestion MySQL
mysql_mha_repl_user string repl Compte pour la réplication maître-esclave MySQL
mysql_mha_repl_password string "" Mot de passe pour la réplication maître-esclave MySQL
mysql_mha_ssh_user string root Utilisateur SSH pour la communication entre les nœuds
mysql_mha_ssh_port int 22 Port SSH pour la communication entre les nœuds
mysql_mha_ping_interval int 2 Intervalle de vérification de l'état du nœud maître
mysql_mha_vip string "" VIP à associer au nœud maître
mysql_mha_wechat_token string "" Clé pour le robot WeChat, utilisé pour envoyer des alertes
mysql_mha_proxy string "" Proxy utilisé pour le script d'envoi d'alerte (send_report)
mysql_repl_user string repl Compte pour la réplication maître-esclave / groupe
mysql_repl_password string Mot de passe pour le compte de réplication maître-esclave / groupe
mysql_group_replication_name uuid "" Nom du cluster de réplication de groupe, à générer avec SELECT UUID() ou uuidgen
mysql_group_replication_single_primary_mode bool true Indique si le cluster MGR a un maître unique
mysql_innodb_cluster_enable bool true Indique si le cluster Innodb est activé
mysql_innodb_cluster_username string ic Compte pour créer et gérer le cluster Innodb, doit avoir les droits ALL WITH GRANT OPTION
mysql_innodb_cluster_password string "" Mot de passe de gestion
mysql_proxysql_config bool false Indique si proxysql est utilisé comme couche de proxy
mysql_proxysql_monitor_username string monitor Compte pour surveiller l'état de MGR avec proxysql
mysql_proxysql_monitor_password string "" Mot de passe pour surveiller l'état de MGR avec proxysql
mysql_databases array [] Bases de données à créer
mysql_users array [] Utilisateurs à créer

Dépendances

collections :

Exemple

Installation

ansible-galaxy collection install -r requirements.yml

Utilisation

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

Problèmes connus

  • Le module mysql_user présente des problèmes d'idempotence lors de l'octroi de droits ALL pour les versions supérieures à MySQL 8.0 Idempotence all grant

À faire

  • Support de la réplication semi-synchrone en mode maître-esclave
  • Améliorer les tests side-effect sous MHA
  • Support des mises à jour de version
  • Support de la reconstruction des nœuds
  • Dans un cluster MGR, après un arrêt extrême de tous les nœuds, il faut identifier l'instance avec le GTID le plus élevé pour relancer le cluster en tant que nœud primaire

Réparation d'anomalies de cluster

Récupération d'un cluster MGR après un arrêt asynchrone

Effectuer l'union, sélectionner RECEIVED_TRANSACTION_SET à partir de performance_schema.replication_connection_status + afficher les variables comme 'gtid_executed', puis sélectionner le primaire avec le nombre le plus élevé, comme primaire.

À propos du projet

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

Installer
ansible-galaxy install daixijun.mysql
Licence
mit
Téléchargements
238
Propriétaire