2008-09-02 31 views
6

我有一個相當小的MySQL數據庫(一個Textpattern安裝)在我沒有SSH訪問權限的服務器上(我只有FTP訪問權限)。我需要定期將實時數據庫下載到我的本地開發服務器上;即,我想要運行腳本和/或運行cron作業。有什麼好辦法做到這一點?如何在沒有SSH的情況下按需將實時MySQL數據庫下載到本地測試數據庫中?

幾點需要注意:

  • Live服務器運行Linux操作系統,Apache 2.2,PHP 5.2和MySQL 4.1
  • 本地服務器運行的是相同的(因此使用PHP是一個選項),但操作系統是的Windows
  • 本地服務器的Ruby on它(因此使用Ruby是一種有效的選項)
  • 活的MySQL數據庫可以接受來自不同的IP遠程連接
  • 我無法在遠程服務器上啓用複製

更新:我已經接受布拉姆的答案;它非常簡單。不能相信我沒有想到這一點。但是,有一個問題:我想自動化該過程,但提議的解決方案會提示用戶輸入密碼。這是一個通過了密碼mysqldump命令略加修改的版本:

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

回答

5

由於您可以遠程訪問數據庫,因此可以使用Windows機器中的mysqldump來獲取遠程數據庫。從命令行:

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

程序會詢問你的數據庫密碼,然後生成一個文件c:\備份\ database.sql您可以在Windows機器上運行以插入數據。

一個小型的數據庫應該相當快。

1

是MySQL的複製選項?如果你不希望它不斷複製,你甚至可以打開或關閉它。

這是關於複製的good article

0

我會創建一個(Ruby)腳本在服務器上的所有數據庫上執行SELECT * FROM ...,然後在本地副本上執行DROP DATABASE ...,然後執行一系列新的INSERT。您可以執行SHOW DATABASES查詢以動態列出數據庫。現在,這假定表結構不會改變,但是如果您想要支持表更改,則還可以爲每個數據庫中的每個表添加SHOW CREATE TABLE ...查詢和相應的CREATE TABLE語句。要獲取數據庫中所有表的列表,請執行SHOW TABLES查詢。

一旦你有了腳本,你就可以將它設置爲一個計劃的作業,按照你的需要經常運行。

0

@馬克Biek

是MySQL的複製選項?如果你不希望它不斷複製,你甚至可以打開或關閉它。

感謝您的建議,但我無法在服務器上啓用複製。這是一個共享服務器,迴旋餘地很小。我已經更新了這個問題。

0

根據您需要複製實時數據的頻率以及需要多快執行此操作,在兩臺計算機上安裝phpMyAdmin可能是一個選項。你可以導出和導入數據庫,但你必須手動完成。如果它是一個小型的數據庫(聽起來就是這樣),並且你不需要經常複製實時數據,它可能適用於你所需要的。

2

這是我使用的。這會從實時服務器轉儲數據庫,並將其上傳到本地服務器。 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

您可以從bat文件運行此項。您可以使用計劃任務。

相關問題