Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Skrip shell Linux untuk cadangan basis data

Setelah berjam-jam bekerja, saya membuat solusi seperti di bawah ini. Saya copy paste untuk orang lain yang dapat mengambil manfaat.

Pertama, buat file skrip dan berikan izin eksekusi untuk file ini.

# 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

Kemudian salin baris berikut ke dalam file dengan 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

Sunting:
Jika Anda menggunakan InnoDB dan pencadangan memakan waktu terlalu lama, Anda dapat menambahkan "transaksi tunggal " argumen untuk mencegah penguncian. Jadi baris mysqldump akan menjadi seperti ini:

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. Kueri relevansi mentah di Laravel. Bagaimana menanganinya?

  2. PHP dan MySQL - bagaimana cara menghindari kata sandi dalam kode sumber?

  3. Perbarui MySQL dari CSV menggunakan JAVA

  4. Mengapa saya mendapatkan 'Logging biner tidak mungkin.' di server MySQL saya?

  5. Bidang Ekstra dengan SQL MIN() &GROUP BY