68 lines
1.6 KiB
JavaScript
Executable File
68 lines
1.6 KiB
JavaScript
Executable File
// Move db between replica set shards -Tony
|
|
|
|
load('jstests/libs/grid.js')
|
|
|
|
function go() {
|
|
|
|
var N = 10000
|
|
|
|
// Create replica set of one server
|
|
var repset1 = new ReplicaSet('repset1', 1) .begin()
|
|
var conn1a = repset1.getMaster()
|
|
var db1a = conn1a.getDB('test')
|
|
|
|
// Add data to it
|
|
for (var i = 1; i <= N; i++) db1a['foo'].insert({x: i})
|
|
|
|
// Add another server to replica set
|
|
var conn1b = repset1.addServer()
|
|
conn1b.setSlaveOk()
|
|
var db1b = conn1b.getDB('test')
|
|
|
|
// Check that new server received replicated data
|
|
assert (db1b['foo'].count() == N, 'data did not replicate')
|
|
|
|
// Create sharding config servers
|
|
var configset = new ConfigSet(3)
|
|
configset.begin()
|
|
|
|
// Create sharding router (mongos)
|
|
var router = new Router(configset)
|
|
var routerConn = router.begin()
|
|
var db = routerConn.getDB('test')
|
|
|
|
// Add repset1 as only shard
|
|
addShard (routerConn, repset1.getURL())
|
|
|
|
// Add data via router and check it
|
|
db['foo'].update({}, {$set: {y: 'hello'}}, false, true)
|
|
assert (db['foo'].count({y: 'hello'}) == N,
|
|
'updating and counting docs via router (mongos) failed')
|
|
|
|
// Create another replica set
|
|
var repset2 = new ReplicaSet('repset2', 2) .begin()
|
|
var conn2a = repset2.getMaster()
|
|
|
|
// Add repset2 as second shard
|
|
addShard (routerConn, repset2.getURL())
|
|
|
|
routerConn.getDB('admin').printShardingStatus()
|
|
printjson (conn2a.getDBs())
|
|
|
|
// Move test db from repset1 to repset2
|
|
moveDB (routerConn, 'test', repset2.getURL())
|
|
|
|
routerConn.getDB('admin').printShardingStatus()
|
|
printjson (conn2a.getDBs())
|
|
|
|
//Done
|
|
router.end()
|
|
configset.end()
|
|
repset2.stopSet()
|
|
repset1.stopSet()
|
|
|
|
print('moveprimary-replset.js SUCCESS')
|
|
}
|
|
|
|
go()
|