Есть ли простой способ экспортировать данные из приложения, развернутого в метеоре?

Есть ли простой способ экспортировать данные из приложения, развернутого в метеоре?

Так, например, если бы я развернул приложение с именем test.meteor.com ...

Как я могу легко загрузить данные, собранные этим приложением, чтобы я мог запускать их локально с данными из развернутого приложения?

 Nishchit Dhanani26 июл. 2015 г., 19:04
Получите прямой доступ к метеорной базе данных .. посмотрите этоstackoverflow.com/a/31639624/2837412

Ответы на вопрос(12)

Я создал инструмент,mmongo, который оборачивает все команды оболочки клиента Mongo DB для удобного использования в базе данных Meteor. Если вы используетеnpm (Node Package Manager), вы можете установить его с помощью:

npm install -g mmongo

В противном случае, см.ПРОЧТИ МЕНЯ.

Чтобы создать резервную копию базы данных Meteor, теперь вы можете сделать:

mmongo test.meteor.com dump 

Чтобы загрузить его в ваш местный метеорологический проект, необходимо:

mmongo restore dump/test_meteor_com

И если вы случайно удалили свою производственную базу данных:

mmongo test.meteor.com --eval 'db.dropDatabase()'   # whoops!

Вы можете легко восстановить это:

mmongo test.meteor.com restore dump/test_meteor_com 

Если вы предпочитаете экспортировать коллекцию (скажем,tasks) чтобы что-то читалось

mmongo test.meteor.com export -c tasks -o tasks.json

Тогда вы можете открытьtasks.json в текстовом редакторе внесите некоторые изменения и вставьте изменения с помощью:

mmongo test.meteor.com import tasks.json -c tasks --upsert

Github, NPM

 06 мар. 2016 г., 16:56
Я просто хотел добавить это, чтобы избежать“system.users: not authorized” error Вы также можете сделать это:mmongo test.meteor.com dump --excludeCollection=system.users

используйте команду (вам может потребоваться указать пароль вашего сайта, если вы его защищали паролем):

meteor mongo --url YOURSITE.meteor.com

Который вернет что-то вроде:

mongodb://client:[email protected]:27017/YOURSITE_meteor_com

Который вы можете дать такой программе, какmongodump

mongodump -u client -h sky.member1.mongolayer.com:27017 -d YOURSITE_meteor_com\
          -p PASSWORD

Пароль действителен только на одну минуту. Для использования:

$ meteor --help mongo
 19 дек. 2012 г., 11:41
Спасибо, я действительно искал это. В качестве дополнительного примечания, имя хоста для моего метеорного проекта было skybreak.member1.mongolayer.com вместо sky.member1.mongolayer.com
 17 сент. 2015 г., 06:44
Не работает для меня После того как я вхожуmeteor mongo --url YOURSITE.meteor.com, Спросил меняusername & password, Я пробую имя пользователя & amp; пароль, который я использую для входа в свою учетную запись в метеоре, но не повезло.
 22 февр. 2015 г., 00:26
Да, важно отметить, что \ в конце имени базы данных позволяет вам продолжить выполнение команды на следующей строке в вашем терминале. Он не является частью имени базы данных, и вы увидите ошибку, если вы напишете свою команду в одной строке.
 04 окт. 2012 г., 23:37
Спасибо! Это было очень полезно, за исключением того, что я бы добавил, что -d должен быть yoursite_meteor_com.
# How to upload local db to meteor:

# -h = host, -d = database name, -o = dump folder name
mongodump -h 127.0.0.1:3001 -d meteor -o meteor

# get meteor db url, username, and password
meteor mongo --url myapp.meteor.com

# -h = host, -d = database name (app domain), -p = password, folder = the path to the dumped db
mongorestore -u client -h http://production-db-a2.meteor.io:27017 -d myapp_meteor_com -p 'password' folder/

с исключением утверждения

[email protected]:$ mongorestore -u client -h http://production-db-a2.meteor.io:27017 -d myapp_meteor_com -p my_password local/
2015-04-22T16:37:38.504+0530 Assertion failure _setName.size() src/mongo/client/dbclientinterface.h 219
2015-04-22T16:37:38.506+0530 0xdcc299 0xd6c7c8 0xd4bfd2 0x663468 0x65d82e 0x605f98 0x606442 0x7f5d102f8ec5 0x60af41 
 mongorestore(_ZN5mongo15printStackTraceERSo+0x39) [0xdcc299]
 mongorestore(_ZN5mongo10logContextEPKc+0x198) [0xd6c7c8]
 mongorestore(_ZN5mongo12verifyFailedEPKcS1_j+0x102) [0xd4bfd2]
 mongorestore(_ZN5mongo16ConnectionStringC2ENS0_14ConnectionTypeERKSsS3_+0x1c8) [0x663468]
 mongorestore(_ZN5mongo16ConnectionString5parseERKSsRSs+0x1ce) [0x65d82e]
 mongorestore(_ZN5mongo4Tool4mainEiPPcS2_+0x2c8) [0x605f98]
 mongorestore(main+0x42) [0x606442]
 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f5d102f8ec5]
 mongorestore() [0x60af41]
terminate called after throwing an instance of 'mongo::AssertionException'
  what():  assertion src/mongo/client/dbclientinterface.h:219
Aborted (core dumped)

local База данных Mongodb на вашемmeteor deploy myAppName сайт, нужно сбросить, потом восстановить mongodb.

Следуйте инструкциям выше, чтобыmongodump (запомните путь), а затем выполните следующую команду, чтобы создать & & apos;mongorestore& APOS; (заменяет второй шаг и копирует / вставляет):

CMD=meteor mongo -U myAppName.meteor.com | tail -1 | sed 's_mongodb://\([a-z0-9\-]*\):\([a-f0-9\-]*\)@\(.*\)/\(.*\)_mongorestore -u \1 -p \2 -h \3 -d \4_'

затем

$CMD /path/to/dump 

ОтМожет ли mongorestore принимать один аргумент url вместо отдельных аргументов?

метеор резервного копирования безусловно, самый простой способ сделать это.

meteor-backup [domain] [collection...]

По состоянию на март 2015 года вам все еще нужно указать все коллекции, которые вы хотите получить (доЭта проблема решено).

Stuff from the past below

Я делаю

mongodump $(meteor mongo -U example.meteor.com | coffee url2args.cfee)

вместе с этим маленьким кофейным текстом, с искаженным расширением, чтобы не перепутать Метеор,url2args.cfee:

stdin = process.openStdin()
stdin.setEncoding 'utf8'
stdin.on 'data', (input) ->
  m = input.match /mongodb:\/\/(\w+):((\w+-)+\w+)@((\w+\.)+\w+):27017\/(\w+)/
  console.log "-u #{m[1]} -h #{m[4]} -p #{m[2]} -d #{m[6]}"

(было бы лучше, если бы meteor mongo -U --mongodumpoptions предоставил эти опции, или если mongodump принял URL-адрес mongo: //)

что вы можете использовать удаленно смонтированную файловую систему черезSSHFS а потомRsync я считаю, что для синхронизации самой папки mongodb или всей вашей папки Meteor. Это похоже на инкрементное резервное копирование и потенциально более эффективно. Можно использовать одно и то же решение для отправки изменений вашего кода и т. Д. Так почему бы не вернуть изменения базы данных в то же время ?! (убить 2 зайцев одним выстрелом)

#! /bin/bash
# inspired by http://stackoverflow.com/questions/11353547/bash-string-extraction-manipulation

# http://www.davidpashley.com/articles/writing-robust-shell-scripts/
set -o nounset
set -o errexit
set -o pipefail
set -x

# stackoverflow.com/questions/7216358/date-command-on-os-x-doesnt-have-iso-8601-i-option
function nowString {
    date -u +"%Y-%m-%dT%H:%M:%SZ"
}

NOW=$(nowString)

# prod_url="mongodb://...:[email protected]:.../..."
prod_pattern="mongodb://([^:]+):([^@]+)@([^:]+):([^/]+)/(.*)"
prod_url=$(meteor mongo katapoolt --url | tr -d '\n')
[[ ${prod_url} =~ ${prod_pattern} ]]
PROD_USER="${BASH_REMATCH[1]}"
PROD_PASSWORD="${BASH_REMATCH[2]}"
PROD_HOST="${BASH_REMATCH[3]}"
PROD_PORT="${BASH_REMATCH[4]}"
PROD_DB="${BASH_REMATCH[5]}"
PROD_DUMP_DIR=dumps/${NOW}
mkdir -p dumps

# local_url="mongodb://...:.../..."
local_pattern="mongodb://([^:]+):([^/]+)/(.*)"
local_url=$(meteor mongo --url | tr -d '\n')
[[ ${local_url} =~ ${local_pattern} ]]
LOCAL_HOST="${BASH_REMATCH[1]}"
LOCAL_PORT="${BASH_REMATCH[2]}"
LOCAL_DB="${BASH_REMATCH[3]}"

mongodump --host ${PROD_HOST} --port ${PROD_PORT} --username ${PROD_USER} --password ${PROD_PASSWORD} --db ${PROD_DB} --out ${PROD_DUMP_DIR}
mongorestore --port ${LOCAL_PORT} --host ${LOCAL_HOST} --db ${LOCAL_DB} ${PROD_DUMP_DIR}/${PROD_DB}
 26 мая 2015 г., 13:30
Не работает под Git Shell, так как кажется, что libregex, поставляемый с msysgit, не поддерживает оператор = ~.
 16 февр. 2014 г., 16:24
Было бы убийственно, если бы удаленный URL был argv скрипта bash! Большое спасибо.

который позволяет вам выгружать свою базу данных с сайтов, размещенных на meteor.com.

#!/bin/bash

site="rankz.meteor.com"
name="$(meteor mongo --url $site)"
echo $name

IFS='@' read -a mongoString <<< "$name"

echo "HEAD: ${mongoString[0]}"
echo "TAIL: ${mongoString[1]}"

IFS=':' read -a pwd <<< "${mongoString[0]}"

echo "${pwd[1]}"
echo "${pwd[1]:2}"
echo "${pwd[2]}"


IFS='/' read -a site <<< "${mongoString[1]}"

echo "${site[0]}"
echo "${site[1]}"


mongodump -u ${pwd[1]:2} -h ${site[0]} -d ${site[1]}\
          -p ${pwd[2]}

что ваши данные находятся в базе данных mongodb, поэтому, если это так, вопрос больше связан с mongo, чем с метеоритом. Вы можете взглянуть наинструменты командной строки mongoexport и mongoimport.

Изменить (например):

mongoexport -h flame.mongohq.com:12345 -u my_user -p my_pwd -d my_db -c my_coll

Вам нужно установить mongodb на свой компьютер, чтобы иметь этот инструмент командной строки, и, очевидно, вам нужна информация о mongodb. В приведенном выше примере я подключаюсь к MongoHQ (Flame.mongohq.com - это хост, «12345» - это порт вашего сервера mongo), но я не знаю, какой хост Mongo действительно используется хостом meteor. Если вы попробовали примеры Meteor (TODO, Leaderboard и т. Д.) Локально, скорее всего, вы уже установили Mongo, так как он по умолчанию использует локальный сервер.

 14 июн. 2012 г., 03:55
Я отредактировал ответ, надеюсь, это поможет вам. Команда довольно проста, я показал наиболее полезные / распространенные аргументы, по умолчанию она выводит в стандартный вывод, вы можете перенаправить ее в файл или указать непосредственно в качестве аргумента. mongoexport --help хорошо детализирован.
 Greg Mercer14 июн. 2012 г., 03:41
Не уверен, что смогу запустить командную строку mongo на метеорологическом сервере. Кто-нибудь знает?
 14 июн. 2012 г., 03:45
Фактически вы запускаете его со своего компьютера, но вы указываете информацию о монго, размещенную в облаке (хост, порт, вероятно, пользователь & amp; pwd). Я постараюсь привести вам пример через несколько минут.

Чтобы восстановить живую базу данных на моей локальной машине, я просто делаю ...

rake copy_live_db

замещатьmyapp с названием вашего meteor.com - например,myapp.meteor.com.

require 'rubygems'
require 'open-uri'

desc "Backup the live db to local ./dump folder"
task :backup_live_db do
  uri = `meteor mongo myapp --url`
  pass = uri.match(/client:([^@]+)@/)[1]
  puts "Using live db password: #{pass}"
  `mongodump -h meteor.m0.mongolayer.com:27017 -d myapp_meteor_com -u client -p #{pass}`
end


desc "Copy live database to local"
task :copy_live_db => :backup_live_db do
  server =  `meteor mongo --url`
  uri = URI.parse(server)
  `mongorestore --host #{uri.host} --port #{uri.port} --db meteor --drop dump/myapp_meteor_com/`
end

desc "Restore last backup"
task :restore do
  server =  `meteor mongo --url`
  uri = URI.parse(server)
  `mongorestore --host #{uri.host} --port #{uri.port} --db meteor --drop dump/myapp_meteor_com/`
end

который работает с текущими версиями Meteor, а также работает, когда вы защищаете свое удаленное приложение Meteor паролем.

Пожалуйста, создайте следующий скриптparse-mongo-url.coffee:

spawn = require('child_process').spawn
mongo = spawn 'meteor', ['mongo', '--url', 'YOURPROJECT.meteor.com'], stdio: [process.stdin, 'pipe', process.stderr]

mongo.stdout.on 'data', (data) ->
    data = data.toString()
    m = data.match /mongodb:\/\/([^:]+):([^@]+)@([^:]+):27017\/([^\/]+)/
    if m?
        process.stdout.write "-u #{m[1]} -p #{m[2]} -h #{m[3]} -d #{m[4]}"
    else
        if data == 'Password: '
            process.stderr.write data

Затем выполните это в оболочке * nix:

mongodump `coffee parse-mongo-url.coffee`
 22 февр. 2015 г., 00:24
Это невероятно полезно. Возиться с именем пользователя и паролем в одноминутном таймбоксе, где действительны учетные данные для составления правильной команды mongodump или mongorestore, очень быстро устареет.

(загрузка вашей локальной базы данных monogo в метеорит)

https://gist.github.com/IslamMagdy/5519514

# How to upload local db to meteor:

# -h = host, -d = database name, -o = dump folder name
mongodump -h 127.0.0.1:3002 -d meteor -o meteor

# get meteor db url, username, and password
meteor mongo --url myapp.meteor.com

# -h = host, -d = database name (app domain), -p = password, folder = the path to the dumped db
mongorestore -u client -h c0.meteor.m0.mongolayer.com:27017 -d myapp_meteor_com -p 'password' folder/
 06 янв. 2014 г., 19:15
@almog, будь уверенmongorestore папка указывает на то, где.bson файлы есть. Например, сmongodump -h 127.0.0.1:3002 -d meteorПуть к сброшенной БД дляmongorestore (выполняется из того же каталога, что иmongodump) являетсяdump/meteor/
 17 авг. 2013 г., 21:47
Я получаю следующие ошибки, любые идеи ОШИБКА: ОШИБКА: корневой каталог должен быть дампом одиночной базы данных ОШИБКА: при указании имени БД с помощью --db

Ваш ответ на вопрос