Haciendo más o menos lo mismo que mucha gente.
-
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" -
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