Dělat v podstatě to samé jako mnoho lidí.
-
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" -
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