The $external useSource was somehow created as a database, which doesn't seem to be quite logical. It should be an external artifact I'd have thought.
I discovered this during testing of adding a sharded cluster infrastructure consisting of two already-Kerborised replica sets.
1. Step : added realm4 replica set as a shard
mongos> sh.addShard( "realm4/kserver1a.realm4.10gen.me:27017" ) { "shardAdded" : "realm4", "ok" : 1 }
2. Step : added realm5 set as a shard, however, this is rejected due to the existence of the $external database on both realms. This is logical but it means some reconfiguration if making two Kerberos-enabled replica sets part of a sharded cluster.
mongos> sh.addShard( "realm5/kserver1a.realm5.10gen.me:27017" ) { "ok" : 0, "errmsg" : "can't add shard realm5/kserver1a.realm5.10gen.me:27017 because a local database '$external' exists in another realm4:realm4/kserver1a.realm4.10gen.me:27017,kserver1b.realm4.10gen.me:27017,kserver1c.realm4.10gen.me:27017" }
So as expected, I can drop the $external database below -
realm5:PRIMARY> db.dropDatabase()
{ "dropped" : "$external", "ok" : 1 }
realm5:PRIMARY>
realm5:PRIMARY>
realm5:PRIMARY>
realm5:PRIMARY> show dbs
$SERVER (empty)
admin 0.0625GB
db1 0.0625GB
fred (empty)
local 1.07763671875GB
After removing the $external database, I can now add realm5 as the second shard -
mongos> sh.addShard( "realm5/kserver1a.realm5.10gen.me:27017" ) { "shardAdded" : "realm5", "ok" : 1 }
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 3,
"minCompatibleVersion" : 3,
"currentVersion" : 4,
"clusterId" : ObjectId("511a58f8bc0ae36e0fab6574")
}
shards:
{ "_id" : "realm4", "host" : "realm4/kserver1a.realm4.10gen.me:27017,kserver1b.realm4.10gen.me:27017,kserver1c.realm4.10gen.me:27017" }
{ "_id" : "realm5", "host" : "realm5/kserver1a.realm5.10gen.me:27017,kserver1b.realm5.10gen.me:27017,kserver1c.realm5.10gen.me:27017" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "fred", "partitioned" : false, "primary" : "realm4" }
{ "_id" : "$external", "partitioned" : false, "primary" : "realm4" }
{ "_id" : "db1", "partitioned" : false, "primary" : "realm5" }
Out of curiousity what is the $SERVER database? I never created it.