Mysql veritabanlarının günlük yedeklenmesi

5 Ara by Ahmet Duruöz

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

 

 

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir