sql >> Database >  >> RDS >> Mysql

Linux-shellscript voor databaseback-up

Na uren en uren werk, heb ik een oplossing gemaakt zoals hieronder. Ik kopieer en plak voor andere mensen die hiervan kunnen profiteren.

Maak eerst een scriptbestand en geef dit bestand uitvoerrechten.

# cd /etc/cron.daily/
# touch /etc/cron.daily/dbbackup-daily.sh
# chmod 755 /etc/cron.daily/dbbackup-daily.sh
# vi /etc/cron.daily/dbbackup-daily.sh

Kopieer vervolgens de volgende regels naar het bestand met Shift+Ins

#!/bin/sh
now="$(date +'%d_%m_%Y_%H_%M_%S')"
filename="db_backup_$now".gz
backupfolder="/var/www/vhosts/example.com/httpdocs/backups"
fullpathbackupfile="$backupfolder/$filename"
logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt
echo "mysqldump started at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
mysqldump --user=mydbuser --password=mypass --default-character-set=utf8 mydatabase | gzip > "$fullpathbackupfile"
echo "mysqldump finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
chown myuser "$fullpathbackupfile"
chown myuser "$logfile"
echo "file permission changed" >> "$logfile"
find "$backupfolder" -name db_backup_* -mtime +8 -exec rm {} \;
echo "old files deleted" >> "$logfile"
echo "operation finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
echo "*****************" >> "$logfile"
exit 0

Bewerken:
Als je InnoDB gebruikt en het maken van een back-up te veel tijd kost, kun je "enkele transactie " argument om vergrendeling te voorkomen. Dus de mysqldump-regel ziet er als volgt uit:

mysqldump --user=mydbuser --password=mypass --default-character-set=utf8
          --single-transaction mydatabase | gzip > "$fullpathbackupfile"


  1. invoegen indien niet bestaat anders selecteer gewoon in mysql

  2. MariaDB JSON_REMOVE() uitgelegd

  3. Gebruikt het gebruik van NULL in PostgreSQL nog steeds een NULL-bitmap in de header?

  4. xampp mysql Kan multi-masterstructuren niet initialiseren