Copia de seguridad automática de la base de datos MySQL

Ayer, hice un experimento sobre el funcionamiento básico de la copia de seguridad de la base de datos MySQL, y hoy probé una copia de seguridad automática regular de la base de datos MySQL.

  La idea general es crear primero un directorio para el archivo de copia de seguridad por separado, luego escribir un comando para ejecutar la copia de seguridad de la base de datos en el script Crear Shell en el directorio, y agregar permisos ejecutables al script Shell, y finalmente agregar el script Shell a la tarea programada crond Y deja que se ejecute regularmente todos los días.

1. Primero ingrese el directorio de inicio, cree un directorio mysqlBackup y luego ingrese este directorio

 

  2. Cree un archivo de sufijo .sh,

 

 3. Edite el script de Shell, haga una copia de seguridad de todas las bases de datos en el directorio / home / mysqlBackup y asígnele el nombre Back_year, month, day_hour, minute, second.sql

 

  4. Agregue X al archivo de respaldo para realizar la operación, y cancelo el permiso de lectura de otros usuarios en el mismo grupo porque la contraseña de la base de datos en el script = .. =

 

  5. Ejecute Kangkang

 

 

 Triunfó

6. Elimine las dos bibliotecas a continuación y realice una prueba de esta copia de seguridad restaurada

Estado actual:

 

 Se eliminaron las bibliotecas para las dos pruebas.

 

 Restaurar copia de seguridad

 

Pero aquí hay un error, intenté nuevamente la copia de seguridad manual y descubrí que se puede restaurar

 

 

 

 Este problema me llevó medio día, y finalmente descubrí que la causa estaba en el script. La instrucción sql en el script escribió directamente la contraseña después del parámetro -p, y las operaciones anteriores fueron todas después de -p. Entró a través de la ventana de acceso.

Comparemos los dos archivos a.sql y b.sql generados sin ingresar directamente la contraseña e ingresar directamente la contraseña

 

La siguiente imagen puede verse claramente que el tamaño del archivo a.sql es 849,000+, mientras que b.sql solo tiene 203

 

 

 Por lo tanto, si desea utilizar .sh para completar la copia de seguridad de la base de datos, debe resolver el proceso interactivo de ingresar la contraseña de la base de datos entre el script y el servidor. Creo que también debería ser posible utilizar la herramienta de esperar. En los scripts de otras personas, se asigna cierta información de la base de datos a las variables, y luego se llama a las variables para hacer una copia de seguridad. Luego modifiqué el script de Shell.

 

 

 

 La ejecución también fue incorrecta esta vez

 

 La razón es porque el mecanismo de seguridad de la base de datos después de MySQL 5.6, probablemente significa que la contraseña utilizada en la línea de comando puede ser insegura, por lo que esto no es posible.

 Para resolver este problema, debe modificar el archivo de configuración de la base de datos my.cnf

 

 

 Esta base de datos de respaldo se puede usar:

mysqldump --defaults-extra-file = /etc/my.cnf --todas las bases de datos> bak.sql

Restaurar copia de seguridad también se puede utilizar:

mysql --defaults-extra-file = /etc/my.cnf <bak.sql;

En realidad, está bien restaurar la contraseña

 

 

 Luego edite otro script .sh

 

 Agregar permisos para ejecutar

 Pruebe esta vez para ver si puede restaurarlo, agregue una base de datos

 

Hacer una copia de seguridad

 

 Eliminar la base de datos de prueba

 

 Intenta restaurar la copia de seguridad sin ingresar una contraseña

  La base de datos eliminada ha sido restaurada

 7. Agregar scripts de Shell a las tareas programadas

Primero mire el estado de crond y descubra que está abierto

 

 Luego edite el archivo / etc / crontab y agregue el script de shell al archivo de configuración

 

 Esta regla es relativamente simple.

* * * * * Script de usuario

* Indica los primeros minutos de una hora, puede ingresar 0-59

    * Indica la hora del día, puede ingresar 0-23

        * Indica el día del mes, puede ingresar 1-31

                * Indica los primeros meses del año, puede ingresar 1-12

                    * Indica el día de la semana, puede ingresar 0-6, 0 o 7 para el domingo

 

0 2 * * * Script de usuario // Se dice que se ejecuta a las dos en punto todos los días

0 2 * * 7 script de usuario // Se dice que se ejecuta a las dos en punto todos los domingos

0 2 10,20,30 * * script de usuario // significa ejecución los días 10, 20 y 30 de cada mes

* / 1 * * * * script de usuario // ejecutar cada minuto

0 * * * * script de usuario // significa ejecutar cada hora del día

Entonces el día de la semana no se siente muy bien con el mes y el día, veamos qué necesito

 

Pruébelo a continuación, elimine primero la copia de seguridad y luego intente ejecutar el script de copia de seguridad cuando esté configurado

 

 Ahora son 38, establece un 40 para ver

 

 Hey, funciono

 

Resumiendo es

1. Escriba la contraseña en el archivo de configuración de la base de datos my.cnf (quizás haya otras formas mejores)

2. Use el script de Shell para escribir declaraciones de respaldo y otorgue a este script de shell permiso para ejecutar

3. Programe tareas a través de crond y ejecute regularmente scripts de shell

 

Pero, ¿no sería esto coherente con la confidencialidad de los datos?

 

Supongo que te gusta

Origin www.cnblogs.com/hai-long/p/12690768.html
Recomendado
Clasificación