Mysql
 sql >> база данни >  >> RDS >> Mysql

Linux shell скрипт за архивиране на база данни

След часове и часове работа създадох решение като по-долу. Копирам паста за други хора, които могат да се възползват.

Първо създайте скриптов файл и дайте на този файл разрешение за изпълним.

# 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/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

Редактиране:
Ако използвате InnoDB и архивирането отнема твърде много време, можете да добавите „единична транзакция " аргумент за предотвратяване на заключване. Така че редът на mysqldump ще бъде така:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL заявката не е вмъкната, когато PHP променливата съдържа единични кавички

  2. Изключения за MySQL конектор 6.7.4 и Entity Framework 5

  3. Нуждае ли се от soft_delete на Laravel индекс на MySQL?

  4. Как да върна цели и числови колони от MySQL като цели числа и числа в PHP?

  5. Филтриране по дата и час MYSQL форматиране