Mysql veritabanlarının günlük yedeklenmesi
Mysql veritabanı sunucumuzdaki veritabanlarının günlük yada belirli periyortlarla yedeklenmesi gerekmektedir. Yedekleme işlemi için işletim sisteminde oluşturacağımız bir script ile düzenli olarak yedeklenmesi mümkündür. Yedekleme için mysqldump aracını kullanabiliriz.
Aşağıdaki gibi bir shell script oluşturup çizelgeleyebiliriz.
grep -Ev ile , veritabanı data dizini içindeki veritabanı ile ilişkili olmayan dizinleri veya yedeklenmesini istemediğimiz veritabanlarını belirtebiliriz.
Yedekleme sonrasında yedekleme dizinindeki 7 günden önce oluşturulan dizinleri temizliyoruz.
mysql_backup.sh şeklinde içeriği aşağıdaki gibi olan bir script oluşturalım. Script tüm veritabanları için ayrı ayrı sıkıştırılmış şekilde yedek dosyası oluşturacaktır.
#! /bin/bash TIMESTAMP=$(date +"%F") BACKUP_DIR="/backup" MYSQL_USER="root" MYSQL=/usr/bin/mysql MYSQL_PASSWORD="root_sifreniz" MYSQLDUMP=/usr/bin/mysqldump mkdir -p "$BACKUP_DIR/$TIMESTAMP" databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|oldiblog|ndbinfo|ndb_2_fs|backup)"` for db in $databases; do $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/mysql/$db.gz" done # 7 gunden onceki yedekler siliniyor find $BACKUP_DIR -ctime +7 -type f -delete
Oluşturulan script’i çalıştırılabilir hale getirelim.
chmod 755 mysql_backup.sh
Son olarak istedğimiz aralıklarda ve günlerde yedeklenmesi için crontab’a oluşturduğumuz script’i ekleyelim.
[root@mysqldb1 mysql]# crontab -e 0 0 * * * /root/scripts/mysql_backup.sh
[root@mysqldb1 mysql]# crontab -l 0 0 * * * /root/scripts/mysql_backup.sh