mongodb分區叢集資料移轉(方案一)
來源:互聯網
上載者:User
將現有mongodb複本集的資料移轉到新的分區叢集中,設計三種遷移方案。
方案一:先同步資料,再建立分區叢集,最後配置分區叢集。
匯出需要遷移的資料;建立第一個複本集;將資料匯入到複本集中;增加另外兩個複本集;啟動config server;啟動mongos server;配置分區叢集。 1. 匯出需要遷移的資料; /usr/local/mongo/bin/mongodump --host 172.16.8.134:29017 -d 201 -o /data/data/mongo/tmp/ --directoryperdb 並且將該資料同步到131的/data/data/mongodb/tmp目錄中 2. 建立第一個複本集 2.1 建立第一個複本集shard1,不帶分區的 server1: /usr/local/mongo/bin/mongod --replSet shard1 --port 29017 --dbpath=/data/data/mongodb/shard11 --logpath=/data/log/shard11.log --logappend --fork server2: /usr/local/mongo/bin/mongod --replSet shard1 --port 29017 --dbpath=/data/data/mongodb/shard12 --logpath=/data/log/shard12.log --logappend --fork server3: /usr/local/mongo/bin/mongod --replSet shard1 --port 29017 --dbpath=/data/data/mongodb/shard13 --logpath=/data/log/shard13.log --logappend --fork 2.2 初始化第一個複本集shard1 ./mongo --port 29017 config={_id : 'shard1',members : [{_id : 0, host : '172.16.8.131:29017'},{_id : 1, host : '172.16.8.132:29017'},{_id : 2, host : '172.16.8.133:29017'}]} rs.initiate(config) rs.status() 3. 將資料匯入到複本集中 需要匯入到PRIMARY節點 ./mongorestore --host 172.16.8.131:29017 -d 201 --directoryperdb /data/data/mongodb/tmp/201/ 4. 增加另外兩個複本集 4.1 啟動剩餘兩個複本集,不帶分區 server1: /usr/local/mongo/bin/mongod --replSet shard2 --port 29018 --dbpath=/data/data/mongodb/shard21 --logpath=/data/log/shard21.log --logappend --fork /usr/local/mongo/bin/mongod --replSet shard3 --port 29019 --dbpath=/data/data/mongodb/shard31 --logpath=/data/log/shard31.log --logappend --fork server2: /usr/local/mongo/bin/mongod --replSet shard2 --port 29018 --dbpath=/data/data/mongodb/shard22 --logpath=/data/log/shard22.log --logappend --fork /usr/local/mongo/bin/mongod --replSet shard3 --port 29019 --dbpath=/data/data/mongodb/shard32 --logpath=/data/log/shard32.log --logappend --fork server3: /usr/local/mongo/bin/mongod --replSet shard2 --port 29018 --dbpath=/data/data/mongodb/shard23 --logpath=/data/log/shard23.log --logappend --fork /usr/local/mongo/bin/mongod --replSet shard3 --port 29019 --dbpath=/data/data/mongodb/shard33 --logpath=/data/log/shard33.log --logappend --fork 4.2 初始化剩餘兩個複本集 ./mongo --port 29018 config={_id : 'shard2',members : [{_id : 0, host : '172.16.8.131:29018'},{_id : 1, host : '172.16.8.132:29018'},{_id : 2, host : '172.16.8.133:29018'}]} rs.initiate(config) rs.status() ./mongo --port 29019 config={_id : 'shard3',members : [{_id : 0, host : '172.16.8.131:29019'},{_id : 1, host : '172.16.8.132:29019'},{_id : 2, host : '172.16.8.133: 29019'}]} rs.initiate(config) rs.status() 5. 啟動config server /usr/local/mongo/bin/mongod --configsvr --dbpath=/data/data/mongodb/config --port 20000 --logpath=/data/log/config.log --logappend --fork /usr/local/mongo/bin/mongod --configsvr --dbpath=/data/data/mongodb/config --port 20000 --logpath=/data/log/config.log --logappend --fork /usr/local/mongo/bin/mongod --configsvr --dbpath=/data/data/mongodb/config --port 20000 --logpath=/data/log/config.log --logappend --fork 6. 啟動mongos server /usr/local/mongo/bin/mongos --configdb 172.16.8.131:20000,172.16.8.132:20000,172.16.8.133:20000 -port 40000 -chunkSize 5 --logpath=/data/log/mongos.log --logappend --fork /usr/local/mongo/bin/mongos --configdb 172.16.8.131:20000,172.16.8.132:20000,172.16.8.133:20000 -port 40000 -chunkSize 5 --logpath=/data/log/mongos.log --logappend --fork /usr/local/mongo/bin/mongos --configdb 172.16.8.131:20000,172.16.8.132:20000,172.16.8.133:20000 -port 40000 -chunkSize 5 --logpath=/data/log/mongos.log --logappend --fork 7. 配置分區叢集 7.1 配置分區 ./mongo 172.16.8.131:40000/admin db 7.2 加入shards db.runCommand({ addshard : "shard1/172.16.8.131:29017,172.16.8.132:29017,172.16.8.133:29017", name:"shard1", maxsize:20480}); db.runCommand({ addshard : "shard2/172.16.8.131:29018,172.16.8.132:29018,172.16.8.133:29018", name:"shard2", maxsize:20480}); db.runCommand({ addshard : "shard3/172.16.8.131:29019,172.16.8.132:29019,172.16.8.133:29019", name:"shard3", maxsize:20480}); 7.3 Listing shards db.runCommand({listshards : 1}) 7.4 啟用分區 db.runCommand({enablesharding : "201"}); 7.5 建立索引 use 201 db.customer_user_mst.ensureIndex({"name":1}) db.user_attr_mst.ensureIndex({"name":1}) 7.6 配置片鍵 use admin db.runCommand({"shardcollection":"201.customer_user_mst", key:{"name":1}}) db.runCommand({"shardcollection":"201.user_attr_mst", key:{"name":1}})