Commit 7808f6
2026-04-13 06:54:51 Anonymous: Initial commit| /dev/null .. backup and restore from prod to other environments.md | |
| @@ 0,0 1,54 @@ | |
| + | # Backup and restore from prod to other environments |
| + | |
| + | Run these commands wherever production is running. |
| + | |
| + | ```bash |
| + | export WHERE="/" |
| + | export DB_NAME="visna_db_new" |
| + | export BACKUP="${DB_NAME}_backup.tar.gz" |
| + | export SSH_USER="marco" |
| + | export TARGET="192.168.40.60" |
| + | export RETRIEVERS="retrievers_20250730014908.pkl" |
| + | |
| + | # Backup MongoDB |
| + | mongodump --db "$DB_NAME" --out . |
| + | tar -czf "$BACKUP" "$DB_NAME/" |
| + | scp "$BACKUP" ${SSH_USER}@${TARGET}:/ |
| + | |
| + | # Send retrievers file |
| + | scp "$RETRIEVERS" ${SSH_USER}@${TARGET}:/ |
| + | ``` |
| + | |
| + | Then run these wherever the container with the target environment is running. |
| + | |
| + | ```bash |
| + | |
| + | export ENVIRONMENT="sandbox" # sandbox, staging or production |
| + | export MONGO_CONTAINER="visna-$ENVIRONMENT-mongodb-1" |
| + | export VISNA_CONTAINER="visna-$ENVIRONMENT-visna-1" |
| + | export DB_NAME="visna_db_new" |
| + | export BACKUP="${DB_NAME}_backup.tar.gz" |
| + | export RETRIEVERS="retrievers_20250730014908.pkl" |
| + | export USER="mtamassia@isn.edu.au" |
| + | |
| + | # Restore backup |
| + | sudo docker cp "$BACKUP" $MONGO_CONTAINER:/ |
| + | sudo docker exec -it -w / $MONGO_CONTAINER tar -xzf "$BACKUP" |
| + | sudo docker exec -it -w / $MONGO_CONTAINER mongorestore --db $DB_NAME --username admin --password password --authenticationDatabase admin "$DB_NAME/" |
| + | rm $BACKUP |
| + | rm -rf "${DB_NAME}/" |
| + | |
| + | # Restore retrievers file |
| + | sudo docker cp "$RETRIEVERS" $VISNA_CONTAINER:/app |
| + | |
| + | # Create user / make admin |
| + | sudo docker exec -it -w / $MONGO_CONTAINER mongosh --username admin --password password --authenticationDatabase admin --eval ' |
| + | db.user.insertOne({ |
| + | "userid": "$USER", |
| + | "user_name": "$USER", |
| + | "is_admin": true, |
| + | "tnc_accepted": true |
| + | }); |
| + | ' $DB_NAME |
| + | sudo docker exec -it -w / $MONGO_CONTAINER mongosh --username admin --password password --authenticationDatabase admin --eval 'db.user.updateOne({user_name: "$USER"}, {$set: {is_admin: true}})' $DB_NAME |
| + | ``` |
