GNU/Linux >> Linux Esercitazione >  >> Linux

Backup automatico del database MySQL sul server Linux

Fare più o meno le stesse cose di molte persone.

  1. Lo script deve essere eseguito sulla macchina che ospita il database MySql (è una macchina Linux).
    => Crea uno script bash o perl locale (o qualsiasi altra cosa) "myscript" su questa macchina "A"

  2. I backup devono essere salvati sullo stesso server su cui si trova il database.
    => nello script "myscript", puoi semplicemente usare mysqldump . Dal backup locale, puoi creare un tarball che invii tramite scp alla tua macchina remota. Finalmente puoi inserire il tuo script di backup nel crontab (crontab -e).

Alcuni suggerimenti e funzioni per iniziare poiché non pubblicherò l'intero script, non svolge completamente il trucco ma non molto lontano:

#!/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

}

Quindi per eliminare i file più vecchi di "date", puoi guardare man find e concentrati sul mtime e più recenti opzioni.

Modifica:come detto in precedenza, non c'è alcun interesse particolare nel fare un backup locale tranne un file temproray per poter inviare facilmente un tarball ed eliminarlo quando viene inviato.


Crea uno script di shell come quello qui sotto:

#!/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

Sostituisci nome utente, password e la tua directory di backup (my_dir). Salvalo in una directory (shell_dir) come filename.sh

Pianificalo in modo che venga eseguito tutti i giorni utilizzando crontab -e come:

30 8 * * * /shell_dir/filename.sh

Questo verrà eseguito tutti i giorni alle 8:30 ed eseguirà il backup del database. Elimina anche il backup che è più vecchio di 10 giorni. Se non vuoi farlo, cancella l'ultima riga dallo script.


Rispondi :Un cron

Descrizione :

Prova a creare un file something.sh con questo:

 #!/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 {} \;

Dare i permessi adeguati al file

 chmod 700 mysqlrespaldo.sh

o

 sudo chmod 700 something.sh

e poi crea un cron con

 crontab -e

impostandolo come

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

Ricorda che i numeri oi caratteri '*' hanno questa struttura:

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. Importa database in un'istanza MySQL locale

  2. Modelli di ripristino del database di SQL Server

  3. Come pianificare un backup del database MySQL su Ubuntu

  4. Come configurare un database slave MySQL

  5. Backup MySQL 1.2 (MySQL 5.5+)

Come eseguire il backup di un singolo database MySQL dalla riga di comando

Come eseguire il backup del database di WordPress tramite MySQL

Come controllare i privilegi utente MySQL in Linux

Come rinominare il nome del database MySQL in Linux

Server database MySQL

Come eseguire il backup di un database MySQL in cPanel