SSH olmadan, talep üzerine yerel bir test db içine canlı bir MySQL db indirmek için?

6 Cevap php

(Ben sadece FTP erişimi) için SSH erişimi olmayan bir sunucu üzerinde oldukça küçük bir MySQL veritabanı (a Textpattern yüklemeniz) var. Ben düzenli talep üzerine benim yerel dev sunucuya canlı veritabanı indirmeniz gerekir; yani, ben bir komut dosyası çalıştırmak ve / veya cron iş çalışıyor olması ya istiyorum. Bunu yapmanın bazı iyi yolları nelerdir?

Bazı noktaları not:

  • Live sunucu Linux, Apache 2.2, PHP 5.2 ve MySQL 4.1 çalıştırıyor
  • Yerel sunucu (yani PHP kullanarak bir seçenek) aynı çalışan, ancak işletim sistemi Windows
  • Yerel sunucu üzerinde Ruby olan (yani Ruby kullanarak geçerli bir seçenektir)
  • Canlı MySQL db can farklı IP'ler uzak bağlantıları kabul
  • Ben uzak sunucuda çoğaltmayı etkinleştiremezsiniz

Update: Blam cevabını kabul ettik; Bu güzel ve basit. Bunu düşünmedim inanamıyorum. Ama bir sorun vardı: Ben sürecini otomatikleştirmek istedim, ancak önerilen çözüm bir şifre için kullanıcıya sorar. İşte parola geçer mysqldump komutu biraz değiştirilmiş bir versiyonu:

mysqldump -u USER --password=MYPASSWORD DATABASE_TO_DUMP -h HOST > backup.sql

6 Cevap

Uzaktan veritabanına erişebilir olduğundan, uzak veritabanına almak için windows makineden mysqldump kullanabilirsiniz. Komut ile:

cd "into mysql directory"
mysqldump -u USERNAME -p -h YOUR_HOST_IP DATABASE_TO_MIRROR >c:\backup\database.sql

Program veritabanı parolası isteyecek ve ardından bir dosya c üretecektir: \ backup \ database.sql verileri eklemek için windows makinede çalıştırabilirsiniz.

Küçük bir veritabanı ile bu oldukça hızlı olmalıdır.

Here's what I use. This dump the database from the live server while uploads it to the local server. mysqldump -hlive_server_addresss -ulive_server_user -plive_server_password --opt --compress live_server_db | mysql -ulocal_server_user -plocal_server_password local_server_db

Bir yarasa dosyasından bu çalıştırabilirsiniz. Hiç bir zamanlanmış görev kullanabilirsiniz.

MySQL bir seçenek çoğaltma mı? Eğer sürekli çoğaltmak istemiyordu varsa bile onu ve kapatmak olabilir.

Bu good article çoğaltma oldu.

Ben bir SELECT * FROM ... sunucu üzerindeki tüm veritabanları üzerinde ve daha sonra DROP DATABASE ... yeni INSERT s bir dizi izledi do a (Ruby) komut dosyası yaratacak kopyada. Sen veritabanlarını dinamik listelemek için bir SHOW DATABASES sorgu yapabilirsiniz. Şimdi, bu tablo yapısı değişmez olduğunu varsayar, ama tablo değişiklikleri desteklemek isterseniz ayrıca bir SHOW CREATE TABLE ... sorgu ve her her tablo için bir karşılık gelen CREATE TABLE deyimi ekleyebilirsiniz veritabanı. Bir SHOW TABLES sorgusu yapmak, bir veritabanındaki tüm tabloların bir listesini almak için.

Eğer script var kez sıklıkta ihtiyaç olarak çalıştırmak için zamanlanmış bir iş olarak ayarlayabilirsiniz.

@ Mark Biek

MySQL bir seçenek çoğaltma mı? Eğer sürekli çoğaltmak istemiyordu varsa bile onu ve kapatmak olabilir.

Öneriniz için teşekkürler, ama ben sunucu üzerinde çoğaltmayı etkinleştirebilirsiniz olamaz. Bu manevra için çok küçük bir oda ile paylaşılan bir sunucu. Ben bu nota soruyu güncelledik.

Eğer phpMyAdmin hem de makinelerde yükleme, canlı veri ve ne kadar hızlı bunu yapmanız gereken aşağı kopyalamak için gereken ne sıklıkta bağlı olarak bir seçenek olabilir. Sen ihracat ve ithalat DBs, ama elle yapmak zorundalar olabilir. Küçük bir DB (ve bunun gibi geliyor), ve çok sık üzerinde kopyalanan canlı verileri ihtiyacınız yoksa, neye ihtiyacınız için işe yarayabilecek.