Re: MongoDB: Change block_compressor for existing collection

From: Tobias Kempkensteffen <tobias.kempkensteffen@xxxxxxxxx>
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Thu, 21 Apr 2016 08:12:56 -0700 (PDT)
Why ads?
Hey Kevin,

thanks for your reply!
I already thought about creating a new (compressed) collection and to simpy 
copy the data, but the collection is about 400GB in size. This would lead 
to some days of offline time, which is not possible for us.
My new plan is to add a new replica set member with enabled snappy 
compression and instead of copying the big collection, I would copy all 
other collections (which are much smaller) to new collections with disabled 
compression. Not perfect, since I have to disable compression for every new 
collection, but may be a way to handle the problem.

What do you think about this way?

Best regards,
Tobias


Am Montag, 18. April 2016 09:43:48 UTC+2 schrieb Kevin Adistambha:

Hi Tobias,

Now I want to change the “block_compressor” option for a single collection 
to use “snappy”.

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( "coll_snappy", { storageEngine: { 
   wiredTiger: { configString: 'block_compressor=snappy' }}}) 
   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. 

Since initial sync between non-wiredTiger and wiredTiger members in a 
replica set is performed on a per-document level (and not by copying the 
files), this should be possible…

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 specify 
a collection to use the snappy compressor, the collection will be using 
snappy across all secondaries as well (since collection creation options 
are replicated to the secondaries).

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/89d99a55-483a-461c-8ff7-f03570aa8d17%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?