经过数小时的工作,我创建了如下所示的解决方案。我将粘贴复制给其他可以受益的人。
首先创建一个脚本文件并授予该文件可执行权限。
# 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
然后使用Shift + Ins将以下行复制到文件中
#!/bin/shnow="$(date +'%d_%m_%Y_%H_%M_%S')"filename="db_backup_$now".gzbackupfolder="/var/www/vhosts/example.com/httpdocs/backups"fullpathbackupfile="$backupfolder/$filename"logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txtecho "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编辑:
如果您使用InnoDB并且备份花费太多时间,则可以添加“
单笔交易 ”参数以防止锁定。因此,mysqldump行将如下所示:
mysqldump --user=mydbuser --password=mypass --default-character-set=utf8 --single-transaction mydatabase | gzip > "$fullpathbackupfile"



