Skip to content

Commit ba04d92

Browse files
Merge pull request #132 from timvaillancourt/mongodump_compression_fixv1
1.0.2: Default backup compression to 'auto' so 'none' can be set explicitly
2 parents f35703e + 08be509 commit ba04d92

File tree

6 files changed

+23
-16
lines changed

6 files changed

+23
-16
lines changed

conf/mongodb-consistent-backup.example.conf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ production:
1010
name: default
1111
location: /var/lib/mongodb-consistent-backup
1212
# mongodump:
13-
# binary: [path] (default: /usr/bin/mongodump)
14-
# compression: [none|gzip] (default: true - if supported)
15-
# threads: [1-16] (default: auto-generated - shards/cpu)
13+
# binary: [path] (default: /usr/bin/mongodump)
14+
# compression: [auto|none|gzip] (default: auto - enable gzip if supported)
15+
# threads: [1-16] (default: auto-generated - shards/cpu)
1616
#replication:
1717
# max_lag_secs: [1+] (default: 5)
1818
# min_priority: [0-999] (default: 0)
@@ -23,14 +23,14 @@ production:
2323
# wait_secs: [1+] (default: 300)
2424
# ping_secs: [1+] (default: 3)
2525
#oplog:
26-
# compression: [none|gzip] (default: true - if used by backup stage)
26+
# compression: [none|gzip] (default: gzip - if gzip is used by backup stage)
2727
# resolver_threads: [1+] (default: 2 per CPU)
2828
# tailer:
2929
# status_interval: 30
3030
archive:
3131
method: tar
3232
# tar:
33-
# compression: [none|gzip] (default: gzip, none if backup is compressed)
33+
# compression: [none|gzip] (default: gzip - none if backup is already compressed)
3434
# threads: [1+] (default: 1 per CPU)
3535
# zbackup:
3636
# binary: [path] (default: /usr/bin/zbackup)

mongodb_consistent_backup/Backup/Mongodump/Mongodump.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def __init__(self, manager, config, timer, base_dir, backup_dir, replsets, shard
2626
self.replsets = replsets
2727
self.sharding = sharding
2828

29-
self.compression_supported = ['none', 'gzip']
29+
self.compression_supported = ['auto', 'none', 'gzip']
3030
self.version = 'unknown'
3131
self.threads_max = 16
3232
self.config_replset = False
@@ -40,10 +40,15 @@ def __init__(self, manager, config, timer, base_dir, backup_dir, replsets, shard
4040
with hide('running', 'warnings'), settings(warn_only=True):
4141
self.version = local("%s --version|awk 'NR >1 {exit}; /version/{print $NF}'" % self.binary, capture=True)
4242

43-
if self.can_gzip() and self.compression() == 'none':
44-
self.compression('gzip')
45-
elif self.compression() == 'gzip':
46-
logging.warning("mongodump gzip compression requested on binary that does not support gzip!")
43+
self.choose_compression()
44+
45+
def choose_compression(self):
46+
if self.can_gzip():
47+
if self.compression() == 'auto':
48+
logging.info("Mongodump binary supports gzip compression, auto-enabling gzip compression")
49+
self.compression('gzip')
50+
elif self.compression() == 'gzip':
51+
raise OperationError("mongodump gzip compression requested on binary that does not support gzip!")
4752

4853
def can_gzip(self):
4954
if os.path.isfile(self.binary) and os.access(self.binary, os.X_OK):

mongodb_consistent_backup/Backup/Mongodump/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ def config(parser):
55
parser.add_argument("--backup.mongodump.binary", dest="backup.mongodump.binary",
66
help="Path to 'mongodump' binary (default: /usr/bin/mongodump)", default='/usr/bin/mongodump')
77
parser.add_argument("--backup.mongodump.compression", dest="backup.mongodump.compression",
8-
help="Compression method to use on backup (default: gzip)", default="gzip",
9-
choices=["none", "gzip"])
8+
help="Compression method to use on backup (default: auto)", default="auto",
9+
choices=["auto", "none", "gzip"])
1010
parser.add_argument("--backup.mongodump.threads", dest="backup.mongodump.threads",
1111
help="Number of threads to use for each mongodump process. There is 1 x mongodump per shard, be careful! (default: shards/CPUs)",
1212
default=0, type=int)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
from Backup import Backup
22

33

4+
def config(parser):
5+
parser.add_argument("-n", "--backup.name", dest="backup.name", help="Name of the backup set (required)", type=str)
6+
parser.add_argument("-l", "--backup.location", dest="backup.location", help="Base path to store the backup data (required)", type=str)
7+
parser.add_argument("-m", "--backup.method", dest="backup.method", help="Method to be used for backup (default: mongodump)", default='mongodump', choices=['mongodump'])
8+
return parser

mongodb_consistent_backup/Common/Config.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@ def makeParser(self):
5454
parser.add_argument("-u", "--username", dest="username", help="MongoDB Authentication Username (for optional auth)", type=str)
5555
parser.add_argument("-p", "--password", dest="password", help="MongoDB Authentication Password (for optional auth)", type=str)
5656
parser.add_argument("-a", "--authdb", dest="authdb", help="MongoDB Auth Database (for optional auth - default: admin)", default='admin', type=str)
57-
parser.add_argument("-n", "--backup.name", dest="backup.name", help="Name of the backup set (required)", type=str)
58-
parser.add_argument("-l", "--backup.location", dest="backup.location", help="Base path to store the backup data (required)", type=str)
59-
parser.add_argument("-m", "--backup.method", dest="backup.method", help="Method to be used for backup (default: mongodump)", default='mongodump', choices=['mongodump'])
6057
parser.add_argument("-L", "--log-dir", dest="log_dir", help="Path to write log files to (default: disabled)", default='', type=str)
6158
parser.add_argument("--lock-file", dest="lock_file", help="Location of lock file (default: /tmp/mongodb-consistent-backup.lock)", default='/tmp/mongodb-consistent-backup.lock', type=str)
6259
parser.add_argument("--sharding.balancer.wait_secs", dest="sharding.balancer.wait_secs", help="Maximum time to wait for balancer to stop, in seconds (default: 300)", default=300, type=int)

scripts/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ if [ -d ${srcdir} ]; then
100100
if [ ! -d ${pexdir} ]; then
101101
mkdir -p ${pexdir}
102102
else
103-
rm -f ${pexdir}/${mod_name}-*.whl
103+
find ${pexdir} -type f -name "${mod_name}-*.whl" -print -delete
104104
fi
105105
[ ! -d ${bindir} ] && mkdir -p ${bindir}
106106
${venvdir}/bin/python2.7 ${venvdir}/bin/pex -o ${output_file} -m ${mod_name} -r ${require_file} --pex-root=${pexdir} ${builddir}

0 commit comments

Comments
 (0)