Re: How to change the compression of one existing collection?

From: "'Matthieu Rigal' via mongodb-user" <mongodb-user@xxxxxxxxxxxxxxxx>
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Wed, 11 May 2016 09:03:23 -0700 (PDT)
Why ads?
Thanks for the detailed answer Kevin !

On Monday, May 2, 2016 at 9:11:34 AM UTC+2, Kevin Adistambha wrote:

Hi Matthieu,

I have a DB with several (quite big) collections, on Mongo 3.2.5 and 
WiredTiger with snappy compression on. 

I would like to change the compression setting on one small collection I 
have to test it uncompressed. Is there a possibility to do that on a 
secondary without having to resync the whole DB?

It is not possible to change the block_compressor option of an existing 
collection.

However, you can create a new collection with the required options and 
replace the old collection:

   1. Create a new collection with the parameters you need, as described 
   in the Specify Storage Engine Options 
   <https://docs.mongodb.org/manual/reference/method/db.createCollection/#specify-storage-engine-options
   page. E.g.: db.createCollection( "uncompressed", { storageEngine: { 
   wiredTiger: { configString: 'block_compressor=none' }}}) 
   2. Copy all data from the existing collection into the new collection. 
   *Note:* Please refrain from adding new data into the old collection 
   during this stage. 
   3. Drop the old collection and rename the new collection using 
   db.collection.renameCollection() 
   <https://docs.mongodb.org/manual/reference/method/db.collection.renameCollection/>, 
   so that the new collection replaces the old collection. 

Please note that by setting a custom field in the collection’s 
block_compressor setting, this setting will be permanently set on the 
collection and cannot be overridden.

Is there a possibility to do that on a secondary without having to resync 
the whole DB?

It is possible to mix different storage engines in a replica set, but it 
is currently not possible (as of MongoDB 3.2) to set different storage 
engine *options* for a collection in a replica set. I.e., if you 
custom-specify a collection to use no compressor, the collection will not 
be using compression across all secondaries as well (since collection 
creation options are replicated to the secondaries, and cannot be changed 
once the collection is created).

Best regards,
Kevin



-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/2dd6d5df-b1d0-42d6-a83a-f85bcd83f9fe%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?