sourcecode

유성 전개 앱에서 데이터를 쉽게 내보낼 수 있는 방법이 있나요?

codebag 2023. 3. 9. 22:02
반응형

유성 전개 앱에서 데이터를 쉽게 내보낼 수 있는 방법이 있나요?

유성 전개 앱에서 데이터를 쉽게 내보낼 수 있는 방법이 있나요?

예를 들어 test.meteor.com이라는 이름의 앱을 도입했다면...

어떻게 하면 해당 앱에서 수집한 데이터를 쉽게 다운로드하여 배포된 앱의 데이터로 로컬에서 실행할 수 있을까요?

meteor.com 에서 전개된 사이트의 URL 을 취득하려면 , 다음의 커맨드를 사용합니다(패스워드로 보호되고 있는 경우는, 사이트 패스워드를 입력할 필요가 있습니다).

meteor mongo --url YOURSITE.meteor.com

그러면 다음과 같은 결과가 반환됩니다.

mongodb://client:PASSWORD@sky.member1.mongolayer.com:27017/YOURSITE_meteor_com

이런 프로그램에 줄 수 있는 건방진 프로그램이에요mongodump

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

비밀번호는 1분 동안만 유효합니다.사용방법:

$ meteor --help mongo

반대되는 방법은 다음과 같습니다. (로컬 모노고 DB를 운석에 업로드합니다.)

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/

Kasper Souren의 솔루션을 기반으로 현재 버전의 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`

,,,,,,,, 도구를 mmongoMeteor 데이터베이스에서 편리하게 사용할 수 있도록 모든 Mongo DB 클라이언트 셸 명령을 래핑합니다.「 」를 사용하고 npm Manager (Node Package Manager), (Node Package Manager), (Node Package Manager), (Node Package Manager), (Node Package Manager), (Node Package Manager)와 함께 설치할 수 있습니다.

npm install -g mmongo

그 이외의 경우는, 「README」를 참조해 주세요.

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

럼럼 up up up 를 열 수 .tasks.json텍스트 편집기에서 몇 가지 변경을 수행한 후 다음과 같이 변경 내용을 삽입합니다.

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

기투브, NPM

당신의 데이터는 mongodb 데이터베이스에 있는 것 같습니다. 그래서 만약 그렇다면, 질문은 유성보다는 mongo와 더 관련이 있습니다.mongo exportmongo import 명령줄 툴을 참조하십시오.

편집(예:):

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 서버의 포트)에 접속하고 있습니다만, 실제로 Metor 호스팅에 의해 어떤 Mongo 호스트가 사용되고 있는지 알 수 없습니다.Meteor의 예(TODO, 리더보드 등)를 로컬에서 사용해 본 경우 기본적으로 로컬서버를 사용하기 때문에 Mongo는 이미 설치되어 있을 가능성이 높습니다.

여기 bash의 다른 솔루션이 있습니다.

#! /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://...:...@...:.../..."
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}

유성 백업이 가장 쉬운 방법입니다.

sudo npm install -g meteor-db-utils
meteor-backup [domain] [collection...]

2015년 3월 현재 이 문제가 해결될 까지 가져올 모든 컬렉션을 지정해야 합니다.


과거의 것

하고 있어요

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

커피스크립트와 Meteor를 하지 않기 , ,,, in in in in in, in in in in together together together together together together together together together, together together together together together together together together together together together together together together together together together together together together together together together together together together together together together.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]}"

(mongo - U --mongodump 옵션에서 이러한 옵션을 제공하거나 mongo:// URL을 허용하는 것이 좋습니다.)

# 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/

로컬 DB를 원격 DB에 업로드하는 동안 아사션 예외가 발생했습니다.

shubham@shubham-PC:$ 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)

라이브 DB를 로컬로 복사하기 위해 간단한 Rake 파일을 만들었습니다.

로컬 머신에 라이브 DB를 복원하려면...

rake copy_live_db

myappcom 등의 합니다(.com).myapp.meteor.com.

'품'을 필요로 하다open-uri를 필요로 하다
desc "라이브 데이터베이스를 로컬 ./dump 폴더에 백업"태스크: backup_live_db douri = 'mongo myapp --url'을 클릭합니다.pass = uri.match(/client:([^@]+)@/)[1]"라이브 DB 비밀번호 사용 중: #{pass}"을 입력합니다.'mongodump -h meteor.m0.mongolayer.com:27017 -d myapp_com -u client -p #{pass}'끝.

desc "라이브 데이터베이스를 로컬로 복사"태스크: copy_live_db =>: backup_live_db doserver = 'syslog mongo --url'uri = URI.parse(서버)'mongorestore --host #{uri.host} --port#{uri.port} --db meteor --drop dump/myapp_drop_com/'끝.
desc "마지막 백업 복원"작업: restore doserver = 'syslog mongo --url'uri = URI.parse(서버)'mongorestore --host #{uri.host} --port#{uri.port} --db meteor --drop dump/myapp_drop_com/'끝.

기존 로컬 mongodb 데이터베이스를 사용하려면meteor deploy myAppName사이트에 가서 몽고드브를 버리고 복원해야 해

에 따라 「」를 해 주세요.mongodump를 한 다음 실행해서 경로 기억하기)'를 합니다.mongorestore두 번째 및 (복사/붙여넣기)

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 

from mongorestore는 개별 인수 대신 단일 url 인수를 사용할 수 있습니까?

sshfs를 통해 원격으로 마운트된 파일 시스템을 사용하여 mongodb 폴더 자체 또는 Meteor 폴더 전체를 동기화할 수 있습니다.이는 증분 백업을 수행하는 것과 같으며 더 효율적일 수 있습니다.코드의 변경등을 송신하는 경우는, 같은 솔루션을 사용할 수 있기 때문에, 동시에 데이타베이스의 변경도 취득하는 것은 어떨까요?(일석이조)

다음은 meteor.com 호스트 사이트에서 데이터베이스를 덤프할 수 있는 간단한 bash 스크립트입니다.

#!/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]}

언급URL : https://stackoverflow.com/questions/11024888/is-there-a-simple-way-to-export-the-data-from-a-meteor-deployed-app

반응형