Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डेटाबेस बैकअप के लिए लिनक्स शेल स्क्रिप्ट

घंटों और घंटों के काम के बाद, मैंने नीचे जैसा समाधान बनाया। मैं अन्य लोगों के लिए कॉपी पेस्ट करता हूं जो लाभ उठा सकते हैं।

पहले एक स्क्रिप्ट फ़ाइल बनाएं और इस फ़ाइल को निष्पादन योग्य अनुमति दें।

# 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 सम्मिलित करें जहाँ PDO के साथ मौजूद नहीं है

  2. PHP और MySQL का उपयोग करके यूनिकोड स्ट्रिंग (हिंदी) को संग्रहीत और प्रदर्शित करना

  3. MySQL INSERT SELECT - डुप्लिकेट पंक्तियाँ

  4. RMySQL सिस्टम त्रुटि:10060

  5. लारवेल सिंपल मंथ सिलेक्शन