mongodump and restore with docker
덤프
./script phase databasename dump
리스토어
./script phase databasename restore
[me@server001 scripts]$ cat db-backup.sh
#!/bin/bash
#by catherine.lee
MONGO_HOME=/usr/local/mongodb-linux-x86_64-3.4.7
DATE_NOW=`date +"%Y-%m-%d_%H_%M"`
BK_HOME=/home/server/backup
BK_TAR_NAME=mongo-dump-$DATE_NOW.tar.gz
dumpDB() {
PHASE=${1}
DATABASE=${2}
DB_DUMP_DIR=${3}
DB_HOST="server-hostname"
DB_PORT="27017"
DB_USER="user"
DB_PWD="pwd"
AUTH_CMD=""
if [ $PHASE == "sandbox" ];then
DB_HOST="sandbox-server-hostname"
fi
if [ $PHASE == "stage" ];then
DB_HOST="server-stage-hostname"
DB_PWD="password"
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}"
}
getDockerContainerId() {
DOCKER_MONGO_ID=`sudo docker ps -a | grep mongo | awk -F" " '{print $1}'`
echo "${DOCKER_MONGO_ID}"
}
runDocker() {
sudo docker stop mongo; sleep 2 ; sudo docker rm mongo; sleep 2
sudo docker run -it --name mongo --net host -v /home/server/backup/:/db_backup -d mongo:3.6.11
sleep 2
DOCKER_MONGO_ID=`sudo docker ps -a | grep mongo | awk -F" " '{print $1}'`
echo "${DOCKER_MONGO_ID}"
}
restoreDB() {
#$ sudo docker exec mongo /bin/bash -c 'mongorestore -d bla /db_backup/stage/foo/foo'
PHASE=${1}
DATABASE=${2}
DB_DUMP_DIR=${3}
COMMAND="mongorestore -d ${DATABASE} /db_backup/${PHASE}/${DATABASE}/${DATABASE}/"
DOCKER_MONGO_ID=`runDocker`
sudo docker exec mongo /bin/bash -c "${COMMAND}"
}
main(){
EXEC_COMMAND=${3}
if [ $EXEC_COMMAND == "dump" ];then
echo "---- command : ${3}, phase : ${1}, database : ${2}"
makeDir ${BK_HOME}/${1}/${2}
dumpDB ${1} ${2} ${BK_HOME}/${1}/${2}
else
echo "---- command : ${3}, phase : ${1}, database : ${2}"
restoreDB ${1} ${2} ${BK_HOME}/${1}/${2}
fi
}
#sys.arg=1 phase arg=2 arg=3 dump/restore databasename bla/foo
main ${1} ${2} ${3}
'데이터베이스' 카테고리의 다른 글
docker mongodump and mongorestore (0) | 2019.08.19 |
---|---|
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 |