MySQL – Stored Procedure ve Function’ların Yedeklenmesi
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYT9pDIE' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
mysqldump kullanarak bir veritabanını yedeklemek istediğiniz zaman özellikle belirtmezseniz stored procedure'ler ve function'lar backup'a dahil edilmiyor. Neden bilmiyorum ama öntanımlı olarak mysqldump bu verileri görmezden gelerek dump dosyasına yazmıyor. Dolayısı ile database'inizde tanımlı stored procedure'ler varsa, mysqldump cümlenize –routines paramtresini de eklemeniz gerekiyor.
Aksi halde, db'yi dump dosyasından geri dönmek gibi bir durum olduğu zaman, stored procedure'lerinizin yerinde yeller estiğini görebilirsiniz. Bu sebeple yedek alırken –routines parametesini her seferinde kullanmanızı öneririm.
Ayrıca, –routines paramteresi, tüm db içeriğini almadan sadece stored procedure'leri dump etmek üzere de kullanılabilmektedir. Aşağıda her iki gereksinim için birer örnek mysqldump cümleciği bulabilirsiniz.
İçerik İndexi
Data ve SP`leri Yedeklemek
Hem data'yı hem de stored proceduer'leri dump etmek için herzaman kullandığınız mysqldump cümlesine ek olarak örnekte olduğu gibi –routines parametresini eklemek yeterlidir.
NOT: Stored Procedure'lerin dump edilebilmesi için, mysqldump cümlesinde belirtilen user'ın, mysql db'sindeki “proc” isimli tabloda SELECT yetkisi olmalıdır. Zira, Stored Procedure'ler bu tabloya yazılmakta dolayısı ile mysqldump'ın buraya erişebilmesi gerekmektedir. |
Örnek:
# mysqldump --user=kullaniciadi --password=sifre --routines database_adi > database_adi.sql
Bu şekilde hem veri hem de rutinler yedeklenmiş olur.
Sadece SP`leri Yedeklemek
Sadece rutinleri almak istemeniz durumunda da aşağıdaki örnek komut kullanılabilir:
# mysqldump --user=kullaniciadi --password=sifre --routines --no-create-info --no-data --no-create-db --skip-opt database_adi > database_adi.sql
Bu durumda da sadece stored procedures ve function'lar yedeklenmiş olurlar.
Bu dump dosyasını normal şekilde restore ederseniz, restore edilen db'nin (varsa) tablolarındaki veri aynı şekilde korunur ve sadece rutinler restore edilir.
Konu hakkında detaylı bilgi almak için aşağıdaki adrese de göz atabilirsiniz:
http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_routines
Bu yazılar da ilginizi çekebilir:
- Mysql – Backup to FTP (PHP Script)
- Mysql Root Şifresini Resetlemek – Password Recovery
- GreenSQL DB Firewall ile Sql Injection Önlemi
- MySQL Replication durumunu bir script ile check etmek
- Lighttpd, Mysql, Php, Eaccelerator ile OpenAds Ad Server kurulumu.
Yorumlar
Henuz yorum yapilmamis.
Yorumda bulunun.