Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tập lệnh shell Linux để sao lưu cơ sở dữ liệu

Sau hàng giờ đồng hồ làm việc, tôi đã tạo ra một giải pháp như bên dưới. Tôi sao chép và dán cho những người khác có thể được hưởng lợi.

Trước tiên, hãy tạo một tệp script và cấp quyền thực thi cho tệp này.

# 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

Sau đó, sao chép các dòng sau vào tệp bằng 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

Chỉnh sửa:
Nếu bạn sử dụng InnoDB và việc sao lưu mất quá nhiều thời gian, bạn có thể thêm "single-transaction "để ngăn chặn việc khóa. Vì vậy, dòng mysqldump sẽ như thế này:

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. PHP-MySQL-Làm thế nào để tăng trường số nguyên MySQL một cách an toàn?

  2. Di chuyển MySQL sang PostgreSQL trên AWS RDS, Phần 3

  3. Tham gia còn lại, tổng và đếm nhóm theo

  4. Làm cách nào để tạo một cột tăng tự động MySQL khác?

  5. Cách khắc phục sự cố trình xác định MySQL