LinuxParty
Probablemente ya sepa que Puppets le permite configurar un servidor desde cero. Puppets le ofrece una gestión centralizada eficiente para servicios complejos tales como MySQL .
Recientemente hemos hablado de la administración multiservidor con Puppets. Ahora vamos a centrarnos en la administración de MySQL, a través de Puppets sobre el módulo MySQL, un módulo completo, riguroso y probado que sigue las mejores prácticas tanto para MySQL como Puppet.
Para instalar el módulo de MySQL, ejecute el comando shell: "/usr/bin/puppet module install puppetlabs/mysql"
en el servidor maestro de puppets para descargar archivos del módulo en el directorio /etc/puppet/modules/mysql/. Después de que el módulo está listo para ser utilizado.
Una vez instalado el módulo de puppets puede utilizar su clase parametrizada mysql::server. Las clases parametrizadas le permiten pasar parámetros al utilizarlos, como dentro de un nodo para la configuración de un servicio, y por lo tanto, le proporciona la flexibilidad para configuraciones complejas.
Incluya el código de la clase con parámetros dentro de los manifiestos para un nodo gestionado con Puppets. Por ejemplo, para instalar el servidor MySQL en un nodo denominado cent4.localdomain, edite el archivo /etc/puppet/manifests/site.pp e incluir una definición de nodo de esta manera:
node 'cent4.localdomain' { class { '::mysql::server': root_password => 'secretpass', override_options => { 'mysqld' => { 'max_connections' => '600', 'query_cache_size' => '64M' } } } }
Esta declaración le dice a Puppets que debe instalar el servidor MySQL en el nodo cent4.localdomain y establece la contraseña de administrador "secretpass." Puppets guarda automáticamente la contraseña para el archivo /root/.my.cnf por conveniencia, y hace dos cambios en el archivo de configuración de MySQL (/etc/my.cnf): Fija el número de conexiones máximas a 600, y el tamaño de la caché de consultas a 64MB.
Los dos puntos dobles en frente de la clase – ::mysql::server
– garantiza que Puppets resuelve la clase mysql::server desde el espacio de nombres global y no local.
Con las directivas como ésta puede administrar el servidor MySQL en plataformas soportadas por Puppets como CentOS y Debian. Puppets instalará la versión de MySQL que se envía con la distribución correspondiente y disponible a través de su sistema de gestión de paquetes por defecto.
Se instalará el cliente de MySQL en el nodo del servidor, ya que es un requisito para el servidor MySQL. Si desea instalar un cliente MySQL en un nodo diferente, puede incluir la clase mysql::client en la configuración puppet del nodo:
node 'cent3.localdomain' { include '::mysql::client' }
Esta directiva sólo es adecuada para los escenarios más sencillos que no requieren de parámetros que deben pasarse a la clase, como en este ejemplo.
Usted también puede necesitar enlaces MySQL para permitir que las aplicaciones se conecten al servidor MySQL. Se puede especificar la clase mysql::bindings con los parámetros de los lenguajes necesarios dentro de la configuración de nodo:
class { '::mysql::bindings': php_enable => 1, perl_enable => 1 }
En CentOS esta configuración instalará los paquetes php-pdo, php mysql, perl-DBI, y perl-DBD-MySQL. En otras plataformas los nombres de los paquetes pueden variar, pero Puppets sabe cómo determinar de forma automática.
Administración de Usuarios y bases de datos MySQL
Otra forma de utilizar el módulo de MySQL es a través de un tipo de recurso definido, que es un bloque de código con los parámetros que pueden ser evaluados en múltiples ocasiones. Por ejemplo, supongamos que tiene varias bases de datos y usuarios y que tiene que declarar todas. Usted puede utilizar la clase mysql::db y pasar argumentos de bases de datos, usuario, contraseña, host y privilegios como este:
mysql::db { 'testdb': user => 'testuser', password => 'secretp', host => 'localhost', grant => ['SELECT', 'UPDATE', 'DELETE'], }
Coloque este código dentro de la definición de nodo de puppets para el servidor MySQL. Puppets traduce el código en dos declaraciones de MySQL: CREATE DATABASE testdb; GRANT SELECT, UPDATE, DELETE on testdb.* TO 'testuser'@'localhost' IDENTIFIED BY 'secretp';
.
Alternativamente, para una gestión más fina de las bases de datos y usuarios, utilice el providers mysql_database y mysql_user. Los providers en Puppets se utilizan para las implementaciones más estrictamente definidos y estandarizados, como la presencia de una base de datos con un determinado conjunto de caracteres y colación. Ponga las declaraciones de providers dentro de la definición de nodo del servidor MySQL:
mysql_database { 'testdb2': ensure => 'present', charset => 'utf8', collate => 'utf8_swedish_ci', } mysql_user { 'testuser'@'localhost': ensure => 'present', }
Estas directivas crean la base de datos testdb2 y el usuario testuser. Si desea quitar el usuario o base de datos, ya que no lo necesita en el servidor, basta bastará sustituir "present" con el "absent" para ensure el valor del parámetro.
La Gestión de bases de datos MySQL y los usuarios con puppets es no sólo conveniente, sino que también garantiza la configuración persistente, porque cada vez que se ejecuta de Puppets, que por defecto es cada 30 minutos, se valida el estado de MySQL actual.
Gestión de copia de seguridad
El módulo de MySQL Puppets también le permite gestionar las copias de seguridad de MySQL utilizando la clase mysql::server::backup. He aquí un ejemplo de código con los parámetros que se pueden colocar dentro de su definición de nodo del servidor MySQL:
class { '::mysql::server::backup': backupdir => '/backups', backupuser => 'backupuser', backuppassword => 'secret', backupcompress => 1, backuprotate => 5, backupdatabases => ['testdb1','testdb2'], file_per_database => 1, time => ['2', '10'], }
Este código define el directorio /backups para almacenar las copias de seguridad de las bases de datos testdb1 testdb2. La secuencia de comandos de copia de seguridad de los guardará los datos con los privilegios del usuario backupuser MySQL y emplea la compresión para ahorrar espacio en disco. Cada archivo de base de datos se almacena en su propio archivo. Las copias de seguridad se rotan cada cinco días.
Cuando Puppets ejecuta con éxito este código en el nodo del servidor MySQL, crea una nueva tarea de cron programada para ejecutarse diariamente a las 2:10 am en virtud de los trabajos de cron del usuario root que apunta a una recién creada shell script /usr/local/sbin/mysqlbackup.sh.
El script /usr/local/sbin/mysqlbackup.sh es un buen ejemplo de cómo el módulo MySQL de Puppets ayuda a que te pegues a los mejores estándares y prácticas. Se vuelca bases de datos con los argumentos --opt --flush-logs --single-transaction
, lo que garantiza la integridad de los datos de la copia de seguridad. Nunca editar el script manualmente, debido a los cambios personalizados se sobrescribirán con la próxima ejecución de la puppet.
Como puede ver, Puppets ofrece formas eficaces de administrar servicios complejos tales como MySQL. No sólo le ahorra tiempo y esfuerzo, pero también se asegura el cumplimiento de las mejores prácticas.
-
Bases de Datos
- Cómo hacer copias de seguridad y restaurar MySQL/MariaDB y PostgreSQL con las herramientas 'Automysqlbackup' y 'Autopostgresqlbackup'
- La última versión de MySQL es decepcionante, dicen algunos expertos en bases de datos
- Cómo instalar MongoDB en AlmaLinux 9 con ejemplos de uso
- Cómo instalar PostgreSQL 16 en distribuciones basadas en RHEL, AlmaLinux, RockyLinux y Fedora
- Cómo instalar PhpMyAdmin con Apache en sistemas RHEL, Alma Linux, Rocky Linux, Centos y Fedora
- Cómo hacer una copia de seguridad y restaurar una base de datos PostgreSQL en Linux
- Cómo instalar phpPgAdmin y PostgreSQL en CentOS, AlmaLinux, RHEL, RockyLinux y similares
- 20 comandos mysqladmin para la administración de bases de datos MYSQL/MariaDB
- Copiar y restaurar copias de seguridad de MySQL / MariaDB para la administración de bases de datos
- Crear Copias de Seguridad (Backups) de MariaDB o MySQL Automáticas con AutoMySQLBackup
- Grafana, software para análisis y supervisión
- Cómo configurar la replicación MariaDB (Maestro-Esclavo) en CentOS / RHEL y Debian
- Arrancar al inicio MySQL / MariaDB con Linux.
- Conocer que IPs están conectados a MySQL haciendo consultas a la base de datos.
- MariaDB, guía práctica para Administradores Linux