Machen so ziemlich das Gleiche wie viele Menschen.
-
Das Skript muss auf dem Computer ausgeführt werden, der die MySql-Datenbank hostet (es ist ein Linux-Computer).
=> Erstellen Sie ein lokales Bash- oder Perl-Skript (oder was auch immer) "myscript" auf dieser Maschine "A" -
Die Sicherungen müssen auf demselben Server gespeichert werden, auf dem sich die Datenbank befindet.
=> Im Skript "myscript" können Sie einfach mysqldump verwenden . Aus der lokalen Sicherung können Sie einen Tarball erstellen die Sie per scp senden zu Ihrem Remote-Computer. Schließlich können Sie Ihr Backup-Skript in die crontab einfügen (crontab -e).
Einige Hinweise und Funktionen, um Ihnen den Einstieg zu erleichtern, da ich nicht mein gesamtes Skript veröffentlichen werde, es erfüllt den Zweck nicht vollständig, ist aber nicht weit entfernt:
#!/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
}
Um dann Dateien zu löschen, die älter als "date" sind, können Sie sich man find ansehen und konzentrieren Sie sich auf die mtime und neuer Optionen.
Bearbeiten:Wie bereits erwähnt, besteht kein besonderes Interesse daran, ein lokales Backup zu erstellen, außer einer temporären Datei, um einen Tarball einfach senden und nach dem Senden löschen zu können.
Erstellen Sie ein Shell-Skript wie das folgende:
#!/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
Ersetzen Sie Benutzername, Passwort und Ihr Backup-Verzeichnis (my_dir). Speichern Sie es in einem Verzeichnis (shell_dir) als filename.sh
Planen Sie es so, dass es jeden Tag ausgeführt wird, indem Sie crontab -e wie:
verwenden30 8 * * * /shell_dir/filename.sh
Dies wird jeden Tag um 8:30 Uhr ausgeführt und die Datenbank gesichert. Es löscht auch die Sicherung, die älter als 10 Tage ist. Wenn Sie das nicht möchten, löschen Sie einfach die letzte Zeile aus dem Skript.
Antworten :Ein Cron
Beschreibung :
Versuchen Sie, eine Datei something.sh damit zu erstellen:
#!/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 {} \;
Geben Sie der Datei die entsprechende Berechtigung
chmod 700 mysqlrespaldo.sh
oder
sudo chmod 700 something.sh
und erstellen Sie dann einen Cron mit
crontab -e
Einstellung wie
**0 1 * * *** /home/youruser/coolscripts/something.sh
Denken Sie daran, dass die Zahlen oder '*'-Zeichen diese Struktur haben:
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