GNU/Linux >> Tutoriales Linux >  >> Linux

Copia de seguridad automática de la base de datos MySQL en el servidor Linux

Haciendo más o menos lo mismo que mucha gente.

  1. El script debe ejecutarse en la máquina que aloja la base de datos MySql (es una máquina Linux).
    => Cree un script local bash o perl (o lo que sea) "myscript" en esta máquina "A"

  2. Las copias de seguridad deben guardarse en el mismo servidor en el que se encuentra la base de datos.
    => en el script "myscript", puede usar mysqldump . Desde la copia de seguridad local, puede crear un tarball que envía a través de scp a su máquina remota. Finalmente, puede colocar su secuencia de comandos de copia de seguridad en crontab (crontab -e).

Algunos consejos y funciones para que comiences, ya que no publicaré mi secuencia de comandos completa, no hace el truco por completo, pero no muy lejos:

#!/bin/sh
...
MYSQLDUMP="$(which mysqldump)"   
FILE="$LOCAL_TARBALLS/$TARBALL/mysqldump_$db-$SNAPSHOT_DATE.sql"  
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db > $FILE && $GZIP $GZ_COMPRESSION_LEVEL $FILE   

function create_tarball()
{
local tarball_dir=$1
tar -zpcvf $tarball_dir"_"$SNAPSHOT_DATE".tar.gz" $tarball_dir >/dev/null
return $?
}

function send_tarball()
{
local PROTOCOLE_="2"
local IPV_="4"
local PRESERVE_="p"
local COMPRESSED_="C"
local PORT="-P $DESTINATION_PORT"
local EXECMODE="B"

local SRC=$1
local DESTINATION_DIR=$2
local DESTINATION_HOST=$DESTINATION_USER"@"$DESTINATION_MACHINE":"$DESTINATION_DIR

local COMMAND="scp -$PROTOCOLE_$IPV_$PRESERVE_$COMPRESSED_$EXECMODE $PORT $SRC $DESTINATION_HOST &"

echo "remote copy command: "$COMMAND
[[ $REMOTE_COPY_ACTIVATED = "Yes" ]] && eval $COMMAND

}

Luego, para eliminar archivos anteriores a la "fecha", puede consultar man find y concéntrate en el mtime y más reciente opciones.

Editar:como se dijo anteriormente, no hay ningún interés particular en hacer una copia de seguridad local, excepto un archivo Temproray para poder enviar un tarball fácilmente y eliminarlo cuando se envíe.


Cree un script de shell como el siguiente:

#!/bin/bash
mysqldump -u username -p'password' dbname > /my_dir/db_$(date+%m-%d-%Y_%H-%M-%S).sql
find /mydir -mtime +10 -type f -delete

Reemplace el nombre de usuario, la contraseña y su directorio de respaldo (my_dir). Guárdelo en un directorio (shell_dir) como filename.sh

Prográmelo para que se ejecute todos los días usando crontab -e como:

30 8 * * * /shell_dir/filename.sh

Esto se ejecutará todos los días a las 8:30 AM y respaldará la base de datos. También elimina la copia de seguridad que tiene más de 10 días. Si no quiere hacer eso, simplemente elimine la última línea del script.


Respuesta :Un cron

Descripción :

Intente crear un archivo something.sh con esto:

 #!/bin/sh
 mysqldump -u root -p pwd --opt db1.sql > /respaldosql/db1.sql
 mysqldump -u root -p pwd --opt db2.sql > /respaldosql/db2.sql
 cd /home/youuser/backupsql/
 tar -zcvf backupsql_$(date +%d%m%y).tgz *.sql
 find -name '*.tgz' -type f -mtime +2 -exec rm -f {} \;

Dar el permiso adecuado al archivo

 chmod 700 mysqlrespaldo.sh

o

 sudo chmod 700 something.sh

y luego crea un cron con

 crontab -e

configurarlo como

 **0 1 * * *** /home/youruser/coolscripts/something.sh

Recuerda que los números o caracteres '*' tienen esta estructura:

Minutes (range 0-59)
Hours (0-23)
Day of month (1-31)
Month (1-12)
Day of the week (0-6 being 0=Domingo)
Absolute path to script or program to run

Linux
  1. Cómo permitir la conexión remota al servidor de base de datos MySQL

  2. Importar base de datos a una instancia local de MySQL

  3. Copia de seguridad y restauración de la base de datos MySQL usando mysqlhotcopy

  4. Deteniendo el servidor de la base de datos MySQL:mysqld falló

  5. Servidor de archivos Linux Samba resistente al ransomware

Cómo hacer una copia de seguridad de una sola base de datos MySQL desde la línea de comandos

Cómo hacer una copia de seguridad de la base de datos de WordPress a través de MySQL

Cómo verificar los privilegios de usuario de MySQL en Linux

Cómo cambiar el nombre de la base de datos MySQL en Linux

Servidor de base de datos MySQL

Cómo hacer una copia de seguridad de una base de datos MySQL en cPanel