덤프 하고 리스토어 해보자.
bla라는 데이터베이스를 덤프 한다.
/usr/local/mongodb-linux-x86_64-3.4.7/bin/mongodump -d bla -h alpha-mong-server-host --port 27017
user / password가 있다면 아래처럼 덤프 할수있다.
/usr/local/mongodb-linux-x86_64-3.4.7/bin/mongodump -d databasename -h mongodb-server-hostname -u username -p 'password' --authenticationDatabase=admin
덤프시, -o 옵션을 이용해 특정디렉터리에 넣을수있다.
아래는 phase별 데이터베이스를 덤프 와 tar.gz 으로 압축하는 스크립트다.
bla라는 데이터베이스를 덤프해보자.
./script alpha bla(=dataasename 을 넣는다)
#!/bin/bash
#by catherine
MONGO_HOME=/usr/local/mongodb-linux-x86_64-3.4.7
date_str=`date +"%Y-%m-%d_%H_%M"`
BK_HOME=/backup
BK_TAR_NAME=foo-mongo-dump-$date_str.tar.gz
dumpDb() {
PHASE=${1}
DATABASE=${2}
DB_DUMP_DIR=${3}
DB_HOST="alpha-catherine-db.server-hostname"
DB_PORT="27017"
DB_USER="foo"
DB_PWD="password"
AUTH_CMD=""
if [ $PHASE == "alpha" ];then
DB_HOST="alpha-catherine-db.server-hostname"
fi
if [ $PHASE == "stage" ];then
DB_HOST="catherine-stage1.server-hostname"
DB_PWD="password2"
AUTH_CMD=" -u ${DB_USER} -p ${DB_PWD} --authenticationDatabase=admin"
fi
echo "---- dump start : ${DB_DUMP_DIR}"
echo "${MONGO_HOME}/bin/mongodump -d $DATABASE -h $DB_HOST --port $DB_PORT ${AUTH_CMD} -o ${DB_DUMP_DIR}"
$MONGO_HOME/bin/mongodump -d $DATABASE -h $DB_HOST --port $DB_PORT ${AUTH_CMD} -o ${DB_DUMP_DIR}
echo "---- dump done : ${DB_DUMP_DIR}"
echo "---- tar.gz start : ${DB_DUMP_DIR} tar_name: ${BK_TAR_NAME}"
cd ${DB_DUMP_DIR}
tar cvfz ${DB_DUMP_DIR}/${BK_TAR_NAME} ${DATABASE}
echo "---- tar.gz done: ${DB_DUMP_DIR}"
deleteLog ${DB_DUMP_DIR}
}
makeDir() {
echo "---- madir dump start : ${1}"
if ! [ -d ${1} ];then
sudo mkdir -p -m 777 ${1}
fi
echo "---- madir dump done"
}
deleteLog() {
echo "---- start to delete old tar.gz : ${1}"
find ${1} -name "*.tar.gz" -type f -ctime +3 -exec rm -rf {} \;
echo "---- finish to delete old tar.gz : ${1}"
}
main(){
makeDir ${BK_HOME}/${1}/${2}
dumpDb ${1} ${2} ${BK_HOME}/${1}/${2}
}
#sys.arg=1 phase arg=2 databasename
main ${1} ${2}
리스토어 해보자.
bla데이터베이스를 위에서 받은 덤프파일로 리스토어 해보자.
$ /usr/local/mongodb-linux-x86_64-3.4.7/bin/mongorestore -d bla /backup/alpha/bla/
제대로 리스토어 되었는지 로컬몽고에 접속해보자
$ /usr/local/mongodb-linux-x86_64-3.4.7/bin/mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.11
WARNING: shell and server versions do not match
Server has startup warnings:
2019-08-19T06:46:04.912+0000 I CONTROL [initandlisten]
2019-08-19T06:46:04.912+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-08-19T06:46:04.912+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-08-19T06:46:04.912+0000 I CONTROL [initandlisten]
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
bla 0.146GB
> use bla
switched to db bla
> show tables;
action
users
contents
> use bla
switched to db bla
> db.users.findOne();
{
"_id" : ObjectId("69891bdb4dd7d2a36fda824b"),
"email" : "a.a@gmail.com",
"name" : "aaaaa,
}
끝~
'데이터베이스' 카테고리의 다른 글
mongodump and restore with docker (0) | 2019.08.21 |
---|---|
docker mongodump and mongorestore (0) | 2019.08.19 |
mongo array map 에 엘리먼트 제거하기 (0) | 2018.07.04 |
mongo mongo_slave_server_host:port database < file.js > dump_users_`date +%Y%m%d`.log (0) | 2018.07.03 |
mongo run javascript file (0) | 2018.05.24 |