2010-10-26 19 views
5

Ben cron işlerinde yeniyim ve her 30 dakikada bir veritabanı (mysql) geri yüklemem gerekiyor. Gzipped olan bir .sql dosyasından bir veritabanını geri yükleyebilen bir cron job komutu var mı? Veya bunu yapmak için bir php betiği oluşturmalı ve bu betiği her 30 dakikada bir çağırmak için bir cron işi oluşturmam gerekir mi?Bir cron işi kullanarak her 30 dakikada bir veritabanı (mysql) geri yüklemem gerekiyor

Ayrıca, ve bu ayrı bir soru ama yine de cron işleri ile ilgili, günde bir kez farklı bir veritabanını yedeklemek için bir cron işi kullanıyorum, gzip ve kökün üzerindeki bir klasöre koyun. Bir aydan eski bir şeyi (otomatik olarak) silmenin bir yolu var mı? Ya da en azından en yeni 20 yedeği saklayın ve kalanını silin mi?

Bu konuyla ilgili pek çok iyi öğretici yok, diğerlerinde rastgele forum gönderileri var. Herhangi bir yardım takdir edilir. Bir döküm dosyası nasıl içe İlişkin

cevap

7

, basitçe cron işi içine

mysql -u user -ppassword databasename < /path/to/dump.sql 

koydu.

Diğer ayrıntılar: How do I restore a MySQL .dump file?

+0

Çok takdir. – Johnny

+0

Bu Pekka'daki tarihi anlıyorum, ancak bu yöntemi 'cat /path/to/file.sq/ | mysql -u root -ppassword'? –

+1

@Daryl Unix/Linux'un dosya verilerinden nasıl daha etkili olduğunu söylemesiyle ilgili çok az şey biliyorum! Öneriniz daha iyi olabilir. –

1

Bunu yapmak için bir bash komut dosyası yazabilirsiniz.

mysql -uPutYourUserHere -pPutYourPasswordHere PutYourUserHere_databaseName < database.sql 

Otomatik olarak bir şeyi silmek için bir şey yok.

find /path/to/files -mtime +30 -exec rm {}\; 
+0

Eski yedeklemeleri silmek için bir cron görevi kastettim. Bence "otomatik olarak" yanıltıcıydı. Önerinizi deneyecek. Korkarım ki bash senaryolarına aşina değilim. – Johnny

+0

bulmak gerçekten güçlü bir araçtır. Bazen sadece google "eskiyi bul" seçeneğini seçerseniz doğru cevabı bulacaksınız. –

+0

Bana şu hatayı yollayan bir hata alıyorum: '-exec 'eksik argümanı' – Johnny

1

MySQL doğrudan gzip'lenmiş verileri işleyemez, ancak daha sonra MySQL için boru gzcat aracılığıyla boruya Önemsiz ve: Ama sen cron işi yapabileceğiniz

gzcat name_of_file.sql.gz | mysql -u.... 
İlgili konular