1. 程式人生 > >mysql大量資料遷移

mysql大量資料遷移

http://blog.csdn.net/blakefez/article/details/51076588

最近有個需求,要把機器a上的一個數據庫遷移到機器b上,這個資料庫的資料有100多個G。所以,果斷拋棄用mysqldump的方法來遷移。這時候想到的就是直接複製檔案來做遷移。 
於是我按照網上的說法,步驟如下: 
一、把機器b的mysql停掉。 
二、把機器a上要遷移的庫的整個目錄複製到機器b的mysql data目錄下。 
三、修改目錄許可權為700,修改檔案許可權為660,並修改他們的所屬使用者和所屬組為mysql。 
四、再啟動機器b的mysql。 
操作完成後,我進入機器b的mysql,此時,執行show databases可以看到要遷移的資料庫。然後執行use databasename,再執行show tables,也可以看到所有的表。但是問題來了,我執行select * from table limit 10,這時候卻報錯了,提示表不存在。 


所以,我們大致可以指定mysql的工作機制,show databases和show tables時,mysql其實是去目錄下掃描,但執行select這些操作的時候,mysql優化器會去information_schema.TABLES 這個表裡面獲取資訊。由於我們是直接複製檔案過去,所以,這個表裡面是沒有資訊的,所以就會提示表不存在。 
知道了這點之後,我修改了上述步驟: 
一、在機器b上,建立需要的database 
二、在該database建好所有的表。 
三、把機器b的mysql停掉。 
四、到機器b上,剛才建的那個資料庫的目錄下,把所有的(.ibd)檔案刪除掉。 
五、把機器a上,對應資料庫目錄下所有的(.ibd)檔案複製到機器b上,修改檔案的許可權。 

六、啟動機器b的mysql。 
這時候再連線上b的mysql,就可以看到所有的資料了。