2013-11-01 69 views
8

我想恢復13G大的sql轉儲文件。我首先在xampp中使用了phpAdmin,它說這個大小太大了。然後我使用大轉儲,仍然收到「我無法在xx.sql中查找」的錯誤消息。我在網上發現它意味着文件太大。 然後我開始使用命令行。 mysql -u用戶名-p數據庫<位置/ to/your/dump.sql 似乎它正在工作,因爲它要求輸入密碼,並且我直接按Enter鍵,因爲我沒有密碼。 現在我可以看到「_」不斷閃爍,我假設這意味着它正在工作。但是,我無法檢查確認,而且已經過了一段時間了。嘗試恢復大於10 GB的sql轉儲文件

有沒有辦法確保它正在工作?我真的很感謝你的幫助! TJ

回答

0

我恢復類似大小的文件

  1. 我要花大概4-5小時,可以更取決於鍵和約束你有
  2. 您可以隨時檢查進程列表中看到的性質如果它有效。
  3. tail -f mysql的通用日誌,並確保它記錄任何查詢。這是查看它是否正常工作的最簡單方法。 一個警告,這減慢一切甚至更多,由100%+
+0

謝謝您的快速答覆!我檢查了進程列表,命令行程序在進程列表中,但它沒有使用任何CPU。 –

+0

但我不明白你建議的第三個提示。我如何檢查日誌?謝謝。 –

7

另一種方式與mysql命令行客戶機恢復文件是這樣的:

$ mysql -u username -p database 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 2933685 
--8<-- snip --8<-- 

mysql> source location/to/your/dump.sql 

source命令將讀取轉儲文件並將其應用到服務器,就像<重定向運算符一樣,但有兩點不同:您將看到滾動的連續「受x行影響」的消息,這表明實際進度確實正在發生。這種方法的缺點是,與使用<重定向的方法不同,如果轉儲文件中存在任何錯誤,命令行客戶端只會嘗試繼續前進,而這並不總是您想要的。不過,這可能是一個可行的方法。

或者......您現在正在執行此操作的方式,如果您能看到流程列表中的連接,請檢查Sleep的值。如果該值始終爲0,則會發生某種活動。

+1

這對我來說效果很好。我有幾個數據庫,它們都超過1GB的備份。我最大的是12GB。此方法在15分鐘內非常快速地導入數據。之前,我使用MySQL -u root -p database user1794918

0

嘗試這種技術

連接到遠程MySQL數據庫之後...

  • 生成一個查詢來創建表架構,程序和源的功能DB
  • 生成查詢找到的所有索引除源數據庫的外鍵約束以外的所有表中的所有表
  • 生成查詢以刪除在步驟2中找到的所有索引
  • 生成查詢以插入源數據庫的所有數據
  • 生成查詢以創建在第2步中找到的所有索引
  • 按上述順序將所有查詢寫入一個.sql文件,這是您的新MySql備份。使用LZ4壓縮進行壓縮。
  • 現在只需使用MySql的普通恢復實用程序從此文件恢復數據庫。

編號:http://axiomnext.com/blog/how-to-restore-large-mysql-database-faster/