I have a 200gb data base on a sharded four node cluster and and I would like to drop the databse and delet all the files associated to it from the node. I am connecting to my mongos and call dropDatabase on it. The system comes back with ok but if call show dbs, it will show the database again and shows that it is still occupying the 200gb. What I am doing wrong?
Share
I think you are running into this issue:
https://jira.mongodb.org/browse/SERVER-4804
In most cases it seems like the database is in fact removed but the mongos still reports it as being there. You can verify it is gone by either trying to use the DB and getting an error or by logging into the shards directly and checking.
The bug refers to issues with dropping databases while a migration is happening. You can workaround the cause of the issue by doing something like this (sub in your own dbname):
You may want to run the flushRouterConfig on the mongoses to refresh the config info:
Of course, the real fix will only come along when the fix is committed – looks like it is targeted for 2.1
If you are in a broken state, you can try this, but it is tricky:
To “reset” the sharding metadata to recover from this issue, please try to do the following
First, stop the balancer (as above) and wait for migrations to finish (also as above)
Next, ensure there is no activity from the app servers on the database in question
Now, ensure that there are no collection entries in config.collections for namespaces beginning with “TestCollection.” If so, remove those entries through a mongos:
Next up, ensure there is no database entry in config.databases for “TestCollection”, and if so, remove it through mongos:
Now, ensure there are no entries in config.chunks for any namespaces in the database (like the default test namespace). If there are any, remove through mongos:
Then, flushRouterConfig on all mongoses:
Finally, manually connect to each shard primary, and drop the database on the shards (not all shards may have the database, but it’s best to be thorough and issue the dropDatabase() call on all
Regarding in-progress migrations, you can use this snippet:
When done, don’t forget to reenable the balancer: