GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Automatisches Backup der MySQL-Datenbank auf dem Linux-Server

Machen so ziemlich das Gleiche wie viele Menschen.

  1. 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"

  2. 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:

verwenden
30 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

Linux
  1. So erlauben Sie eine Remote-Verbindung zum MySQL-Datenbankserver

  2. Datenbank in eine lokale MySQL-Instanz importieren

  3. Wiederherstellungsmodelle für SQL Server-Datenbanken

  4. So planen Sie ein MySQL-Datenbank-Backup unter Ubuntu

  5. So konfigurieren Sie eine MySQL-Slave-Datenbank

So sichern Sie eine einzelne MySQL-Datenbank über die Befehlszeile

So sichern Sie die WordPress-Datenbank über MySQL

So überprüfen Sie die MySQL-Benutzerrechte unter Linux

So benennen Sie den MySQL-Datenbanknamen in Linux um

MySQL-Datenbankserver

So sichern Sie eine MySQL-Datenbank in cPanel