daixijun.mysql

mysql

Estado de Construcción Ansible Galaxy Etiqueta de GitHub (último SemVer)

Herramienta para desplegar rápidamente un clúster de mysql

Soporta los siguientes modos de clúster:

  • Replicación maestro-esclavo basada en GTID
  • Semi-Sync habilitado por defecto
  • Replicación maestro-esclavo basada en arquitectura MHA
  • MGR modo de un solo maestro (por defecto)
  • MGR modo de múltiples maestros
  • Conjunto de réplicas (ReplicaSet)

Versiones de MySQL soportadas:

Requisitos del Entorno

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

Variables

Nombre de Variable Tipo Valor por Defecto Descripción de la Variable
mysql_version string 8.0.23 Versión de MySQL
mysql_upgrade bool false Si es necesario realizar una actualización de versión
mysql_download_url string URL de descarga del paquete comprimido sin instalación
mysql_inventory_group string mysql Nombre del grupo en el inventario de Ansible, por defecto es mysql
mysql_basedir string /usr/local/mysql Directorio de instalación
mysql_datadir string /data/mysql Directorio donde se almacenan los archivos de datos
mysql_logdir string /var/log/mysqld Directorio para almacenar los registros
mysql_pidfile string /var/run/mysqld/mysqld.pid Ubicación del archivo PID
mysql_socket string /var/run/mysqld/mysqld.sock Ubicación del archivo Socket
mysql_port int 3306 Puerto de escucha
mysql_bind_address string 0.0.0.0 Dirección de escucha
mysql_interface string "" Interfaz de red especificada, por defecto se usa la primera interfaz que no sea lo
mysql_default_time_zone string +8:00 Zona horaria especificada
mysql_character_set_server string utf8mb4 Conjunto de caracteres por defecto
mysql_collation_server string utf8mb4_general_ci Orden de caracteres por defecto
mysql_max_connections int 1005 Número máximo de conexiones
mysql_max_user_connections int 1000 Máximo de conexiones por usuario, debe ser menor que mysql_max_connections, se deben reservar algunas para el administrador
mysql_interactive_timeout int 28800 Segundos que espera el servidor antes de cerrar conexiones interactivas inactivas
mysql_wait_timeout int 28800 Segundos que espera el servidor antes de cerrar conexiones no interactivas inactivas
mysql_max_connect_errors int 200 Número máximo de errores de conexión
mysql_root_password string "" Contraseña del usuario root
mysql_cluster_type string mgr Tipo de clúster (por defecto mgr), opciones: mgr (Mysql Group Replication)/ms (Master-Slave)
mysql_cluster_name string default Nombre del clúster, aplicable para InnodbCluster/ReplicaSet
mysql_mha_enabled bool false Si se habilita alta disponibilidad maestro-esclavo basada en MHA
mysql_mha_config_dir string /etc/mha Directorio de archivos de configuración de MHA
mysql_mha_manager_workdir string /var/log/mha Directorio de trabajo de MHA, almacena registros e información de estado
mysql_mha_user string mha Usuario para conectarse a MySQL, necesita tener permisos ALL
mysql_mha_password string "" Contraseña de administración de MySQL
mysql_mha_repl_user string repl Usuario para la replicación maestro-esclavo de MySQL
mysql_mha_repl_password string "" Contraseña para la replicación maestro-esclavo de MySQL
mysql_mha_ssh_user string root Usuario SSH para comunicación entre nodos
mysql_mha_ssh_port int 22 Puerto SSH para comunicación entre nodos
mysql_mha_ping_interval int 2 Intervalo de ping para verificar el estado del nodo maestro
mysql_mha_vip string "" VIP para enlazar al nodo maestro
mysql_mha_wechat_token string "" clave del robot WeChat empresarial, utilizada para enviar notificaciones de alerta
mysql_mha_proxy string "" Proxy usado por el script de notificaciones (send_report)
mysql_repl_user string repl Usuario para replicación maestro-esclavo/agrupada
mysql_repl_password string Contraseña para el usuario de replicación maestro-esclavo/agrupada
mysql_group_replication_name uuid "" Nombre del clúster de replicación, generar con SELECT UUID() o uuidgen en shell
mysql_group_replication_single_primary_mode bool true Indica si el clúster MGR está en modo de un solo maestro
mysql_innodb_cluster_enable bool true Si se habilita Innodb Cluster
mysql_innodb_cluster_username string ic Usuario para crear y gestionar Innodb Cluster, debe tener permisos ALL WITH GRANT OPTION
mysql_innodb_cluster_password string "" Contraseña de administración
mysql_proxysql_config bool false Si se usa proxysql como capa de proxy
mysql_proxysql_monitor_username string monitor Usuario para monitorear el estado de MGR mediante proxysql
mysql_proxysql_monitor_password string "" Contraseña para monitorear el estado de MGR mediante proxysql
mysql_databases array [] Bases de datos que se deben crear
mysql_users array [] Usuarios que se deben crear

Dependencias

colecciones:

Ejemplo

Instalación

ansible-galaxy collection install -r requirements.yml

Uso

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

Problemas Conocidos

  • El módulo mysql_user tiene problemas de idempotencia al otorgar permisos ALL a usuarios en versiones MySQL 8.0 y superiores Idempotence all grant

Tareas Pendientes

  • Soportar replicación semisíncrona en modo maestro-esclavo
  • Mejorar las pruebas de efectos secundarios bajo MHA
  • Soporte para actualización de versión
  • Soporte para reconstrucción de nodos
  • En caso extremo, cuando todos los nodos de un clúster MGR fallan, encontrar la instancia con el mayor gtid para reiniciar el clúster como nodo primario

Recuperación de Errores en el Clúster

Recuperación de clúster MGR tras fallo asíncrono

Obtener la unión, seleccionar RECEIVED_TRANSACTION_SET de performance_schema.replication_connection_status + mostrar variables como 'gtid_executed', y luego seleccionar el maestro con el mayor gtid como primario.

Acerca del proyecto

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

Instalar
ansible-galaxy install daixijun.mysql
Licencia
mit
Descargas
238
Propietario