最近遇到一個狀況是有個資料量極大的資料庫
把資料備份出來簡單
不過要把資料灌回去就沒這麼容易了
更何況還遇到這個資料庫裏面有上萬個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到此就算成功了
沒有留言:
張貼留言