Last active
May 29, 2016 02:18
-
-
Save olizilla/5209369 to your computer and use it in GitHub Desktop.
Dump a mongo db from a live meteor app to a local dump dir.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# __ | |
# _____ ____ _/ |_ ____ ____ _______ | |
# / \ _/ __ \ \ __\_/ __ \ / _ \ \_ __ \ | |
# | Y Y \\ ___/ | | \ ___/ ( <_> ) | | \/ | |
# |__|_| / \___ > |__| \___ > \____/ |__| | |
# \/ \/ \/ | |
# | |
# .___ | |
# __| _/ __ __ _____ ______ | |
# / __ | | | \ / \ \____ \ | |
# / /_/ | | | /| Y Y \| |_> > | |
# \____ | |____/ |__|_| /| __/ | |
# \/ \/ |__| | |
# | |
# The meteor.com Hot Dump 2-step | |
# Dump a mongo db from a live meteor app to a local dump dir. | |
# | |
# Splits up the output of: | |
# meteor mongo $METEOR_DOMAIN --url | |
# and pushes it into | |
# mongodump -u $MONGO_USER -h $MONGO_DOMAIN -d $MONGO_DB -p "${MONGO_PASSWORD}" | |
# | |
# Doing so by hand is tedious as the password in the url is only valid for 60 seconds. | |
# | |
# Requires | |
# - meteor (tested on 0.5.9) | |
# - mongodb (tested in 2.4.0) | |
# | |
# Usage | |
# ./meteor-dump.sh goto | |
# | |
# If all goes well it'll create a dump folder in the current working directory. | |
# | |
# By @olizilla | |
# On 2013-03-20. Using this script after it's sell by date may void your warranty. | |
# | |
METEOR_DOMAIN="$1" | |
if [[ "$METEOR_DOMAIN" == "" ]] | |
then | |
echo "You need to supply your meteor app name" | |
echo "e.g. ./meteor-dump.sh app" | |
exit 1 | |
fi | |
# REGEX ALL THE THINGS. | |
# Chomps the goodness flakes out of urls like "mongodb://client:[email protected]:27017/goto_meteor_com" | |
MONGO_URL_REGEX="mongodb:\/\/(.*):(.*)@(.*)\/(.*)" | |
# stupid tmp file as meteor may want to prompt for a password | |
TMP_FILE="/tmp/meteor-dump.tmp" | |
# Get the mongo url for your meteor app | |
meteor mongo $METEOR_DOMAIN --url | tee "${TMP_FILE}" | |
MONGO_URL=$(sed '/Password:/d' "${TMP_FILE}") | |
# clean up the temp file | |
if [[ -f "${TMP_FILE}" ]] | |
then | |
rm "${TMP_FILE}" | |
fi | |
if [[ $MONGO_URL =~ $MONGO_URL_REGEX ]] | |
then | |
MONGO_USER="${BASH_REMATCH[1]}" | |
MONGO_PASSWORD="${BASH_REMATCH[2]}" | |
MONGO_DOMAIN="${BASH_REMATCH[3]}" | |
MONGO_DB="${BASH_REMATCH[4]}" | |
#e.g mongodump -u client -h skybreak.member0.mongolayer.com:27017 -d goto_meteor_com -p "guid-style-password" | |
mongodump -u $MONGO_USER -h $MONGO_DOMAIN -d $MONGO_DB -p "${MONGO_PASSWORD}" | |
else | |
echo "Sorry, no dump for you. Couldn't extract your details from the url: ${MONGO_URL}" | |
exit 1 | |
fi |
Tested and works on meteor 0.8.0.1
Does this work on meteor 0.8.3 ?
This actually works on Meteor 0.8.3
In order to load the data in this dump we have to use "mongorestore" instead of mongoimport (Just saying)
Thanks!!!
@rodciscal Thanks for adding your findings!
This has been upgraded to a full fat github repo for any useful meteor / mongo db tools
https://github.com/meteor-london/db-tools/blob/master/meteor-dump.sh
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
To get the dump imported into your local dev mongodb, you can:
where
dump
is the name of the dir containing the dumped data that should have been created by running the script.You can then take a peak around your local mongos with the finely crafted: http://genghisapp.com/