sql >> Database teknologi >  >> RDS >> Mysql

Linux shell script til database backup

Efter timers arbejde skabte jeg en løsning som nedenstående. Jeg copy paste for andre, der kan få gavn af det.

Opret først en scriptfil og giv denne fil eksekverbare tilladelse.

# 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

Kopier derefter følgende linjer til filen med 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

Rediger:
Hvis du bruger InnoDB og backup tager for meget tid, kan du tilføje "enkelttransaktion " argument for at forhindre låsning. Så mysqldump-linjen vil være sådan her:

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


  1. 10 bedste startups i cloud – 2018

  2. Kan ikke oprette forbindelse til nogen af ​​de angivne mysql-værter. C# MySQL

  3. Kører flere SQL-sætninger fra Groovy

  4. Fjederstøvle JPA indsats i TABLE med store bogstaver med Hibernate