2017年3月30日 星期四

[mongo] mirror of replica nodes move to another cluster.

最近遇到一個狀況是有個資料量極大的資料庫

把資料備份出來簡單

不過要把資料灌回去就沒這麼容易了

更何況還遇到這個資料庫裏面有上萬個collections

每個collection還有數十個indexes



最好的處理方法就是用鏡像備份

但是靜像備份沒這麼簡單

如果視同一台伺服器其他周遭的IP和port一樣就沒啥問題

但假如要移植到其他cluster中,你就只會看到一推error message

主要是因為每個datanode都已經紀錄所屬configer server address和ports

所以要按步驟來:

1. 複製靜像壓縮檔

2. 解壓縮後指定資料夾後不設auth, keyfile, replSet, shard 加上--master重啟
註:所有replica sets 都要手動刪掉,因手動處理狀態不會同步

3. 連線進去replica node後use admin  (建議加local account)

4. db.system.version.find() 應該可以看到指定configer servers, 我測試時手動更改似乎沒有效果,但全部砍掉是OK的

6. 重啟時用原啟動設定,此時用rs.remove 移除所有replica node, 並重新加入所有的 replica node 註:1. 因為設定一定會不一樣,所以要重新設定
        2. 如果無法正常移除就到local中的system.replset去修改

5. 連進去mongos將新增的replica set新增為sharder
註:如果遇到重複sharder name有兩個方法 1. 用官方推荐的方法runCommand,
        但如果只剩1個sharder就會被打槍  2. 到config資料庫中手動移除shrad settings,
        就可以重新加入

6. 如果成功重新加入那麼鏡像資料搬遷cluster到此就算成功了



沒有留言:

張貼留言