GNU/Linux >> Znalost Linux >  >> Linux

Automaticky zálohujte databázi MySQL na linuxovém serveru

Dělat v podstatě to samé jako mnoho lidí.

  1. Skript musí běžet na počítači hostujícím databázi MySql (jedná se o linuxový stroj).
    => Vytvořte místní bash nebo perl skript (nebo cokoli jiného) "myscript" na tomto počítači "A"

  2. Zálohy musí být uloženy na stejném serveru, na kterém je databáze.
    => ve skriptu "myscript" stačí použít mysqldump . Z místní zálohy můžete vytvořit tarball které odešlete prostřednictvím scp na váš vzdálený stroj. Nakonec můžete zálohovací skript vložit do crontab (crontab -e).

Několik rad a funkcí, které vám pomohou začít, protože nebudu zveřejňovat celý svůj skript, není to úplně správné, ale není to daleko:

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

}

Chcete-li pak smazat soubory starší než "datum", můžete se podívat na man find a zaměřte se na mtime a novější možnosti.

Edit:Jak již bylo řečeno dříve, neexistuje žádný zvláštní zájem o provádění místní zálohy kromě dočasného souboru, aby bylo možné snadno odeslat tarball a odstranit jej při odeslání.


Vytvořte skript shellu, jako je ten níže:

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

Nahraďte uživatelské jméno, heslo a svůj záložní adresář (my_dir). Uložte jej do adresáře (shell_dir) jako filename.sh

Naplánujte si každodenní spouštění pomocí crontab -e jako:

30 8 * * * /shell_dir/filename.sh

To bude běžet každý den v 8:30 a zálohovat databázi. Smaže také zálohu, která je starší než 10 dní. Pokud to nechcete udělat, smažte poslední řádek ze skriptu.


Odpověď :Cron

Popis :

Zkuste vytvořit soubor Something.sh s tímto:

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

Dejte souboru odpovídající oprávnění

 chmod 700 mysqlrespaldo.sh

nebo

 sudo chmod 700 something.sh

a poté vytvořte cron pomocí

 crontab -e

nastavení jako

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

Pamatujte, že čísla nebo znaky '*' mají tuto strukturu:

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. 5 nejlepších bezplatných náhrad pro server MySQL

  2. Jak povolit vzdálené připojení k databázovému serveru MySQL

  3. Import databáze do místní instance MySQL

  1. Modely obnovy databáze SQL Server

  2. Jak naplánovat zálohu databáze MySQL na Ubuntu

  3. Souborový server Linux Samba odolný proti ransomwaru

  1. Jak nakonfigurovat databázi MySQL Slave

  2. Zálohování a obnova databáze MySQL pomocí mysqlhotcopy

  3. Záloha MySQL 1.2 (MySQL 5.5+)