mysql數據庫遷移

分享一個處理mysql數據量大的話遷移的方法mysql

一天晚上,生產環境下,一個用戶分析數據庫掛掉了,緣由是服務器磁盤只讀了,可是又不敢重啓只好遷移了。sql

找到datadir目錄下du -sh * 看了一下嚇死了。240G大!數據庫

通常咱們都會作一個主從數據庫,就是爲了備份數據方便宕機的時候快速切換過來,但是這臺機器很早就有,如今沒有從庫備份,這就麻煩了。服務器

如今腦子裏兩種方案:測試

  1. 數據庫直接導出,拷貝文件到新服務器,在新服務器上導入。
  2. 數據文件和庫表結構文件直接拷貝到新服務器,掛載到一樣配置的MySQL服務下。spa

第一種方案時間太長240G啊什麼概念,那要導到何時,雖說第二種方案也是很是耗時的,可是想不第一種還較爲快點。猶豫了一會採用第二種方案。blog

操做步驟

服務器只讀了,並不表明不能夠傳文件。因此找了一臺磁盤容量大點的能夠存放的下這240G大量數據的服務器。內存

  1. 兩臺服務器保證Mysql版本一致,安裝配置一致
  2. 中止兩邊的Mysql服務
  3. 刪除B服務器Mysql的datadir(my.cnf裏面設置的datadir參數)目錄下全部文件
  4. 用rsync服務開始傳datadir下面的文件(A服務器--遷移-->B服務器)
  5. 啓動B服務器的Mysql服務,測試

遷過去後有個報錯:innodb

這時候纔想起來用rsync傳的時候目錄使用的nobody權限,啓動是要MySQL用戶權限的。查了查資料也是說要修改目錄權限。修改完以後,啓動沒有問題了。配置

 若是遇到啓動不起來而後報錯是與ibdata1有關的,建議把my.cnf裏面的innodb_buffer_pool_size         = 2G參數改下,這個是要根據服務器內存考慮的。或者把他刪了重建也行。

相關文章
相關標籤/搜索