mysqldump: especifique el nombre de la base de datos por usuario en ~ / .my.cnf

1

Estoy ejecutando un servidor compartido con múltiples usuarios. Cada usuario tiene su propia base de datos en MySQL y credenciales asociadas. He creado una plantilla systemd timer & service (es decir, sitetasks @ .timer & sitetasks @ .service ) para ejecutar mysqldump diariamente para hacer una copia de seguridad de la base de datos de cada usuario. Información específica del usuario es leído por mysqldump desde la .my.cnf archivo en el directorio personal de cada usuario.

Luego puedo ejecutar el temporizador / servicio systemd para un usuario específico (es decir, [email protected] ) para hacer una copia de seguridad de la base de datos de ese usuario.

Sin embargo, no puedo encontrar una manera de especificar el nombre de la base de datos en .my.cnf . He mirado la opción --databases pero esto es solo un indicador, no una forma de especificar una base de datos o un conjunto de bases de datos.

Puedo pensar en varias formas de resolver esto de manera diferente:

  1. crear un temporizador / servicio systemd específico para el usuario, pero esto no escala bien
  2. suelte un archivo .db-name en el directorio de inicio de los usuarios y léalo cuando llame a mysqldump (algo así como mysqldump $ (cat .db-name)> backup.sql), pero ahora necesito un archivo adicional
  3. similar al # 2 pero analizando wp-config.php de cada usuario (los db son para Wordpress)
  4. asegúrese de que el nombre de la base de datos sea siempre el mismo que el nombre de usuario

Sin embargo, ninguno de estos es tan escalable y portátil como poder usar el archivo de opciones .my.cnf existente de MySQL .

¿Hay alguna manera de especificar un nombre de base de datos predeterminado en .my.cnf ?

chr0mag
fuente

Respuestas:

1

Cada usuario tiene acceso a la base de datos a la que se le otorgaron derechos de acceso, por lo que si le dio mysqldumpinstrucciones para volcar todas las bases de datos: --all-databasessolo se respaldaría la base de datos de este usuario y, por supuesto, todos los dbs generales a los que tiene acceso. Por lo general es information_schemasolo. De hecho, no hace que el tamaño del volcado sea mucho mayor, ya que no se descarta información de ese esquema, porque allí hay información dinámica.
Por lo tanto, al garantizar los privilegios para cada usuario, tiene una solución simple para hacer una copia de seguridad de las bases de datos de esos usuarios simplemente descargando "todas las bases de datos".

Jarek Jóźwik
fuente
Interesante. Asumí que mysqldump produciría un error sin derechos para todos los DB. Parece que el volcado usando --todas las bases de datos falta las directivas CREATE TABLE y USE que son útiles en la restauración, pero me imagino que puedo obligarlo a incluirlas con algunos modificadores adicionales.
chr0mag
1
Corrección: todas las bases de datos incluyen directivas CREATE TABLE & USE. Pase --no-create-db para omitir CREATE TABLE.
chr0mag