Blame
| 7808f6 | Anonymous | 2026-04-13 06:54:51 | 1 | # Backup and restore from prod to other environments |
| 2 | ||||
| 3 | Run these commands wherever production is running. |
|||
| 4 | ||||
| 5 | ```bash |
|||
| 6 | export WHERE="/" |
|||
| 7 | export DB_NAME="visna_db_new" |
|||
| 8 | export BACKUP="${DB_NAME}_backup.tar.gz" |
|||
| 9 | export SSH_USER="marco" |
|||
| 10 | export TARGET="192.168.40.60" |
|||
| 11 | export RETRIEVERS="retrievers_20250730014908.pkl" |
|||
| 12 | ||||
| 13 | # Backup MongoDB |
|||
| 14 | mongodump --db "$DB_NAME" --out . |
|||
| 15 | tar -czf "$BACKUP" "$DB_NAME/" |
|||
| 16 | scp "$BACKUP" ${SSH_USER}@${TARGET}:/ |
|||
| 17 | ||||
| 18 | # Send retrievers file |
|||
| 19 | scp "$RETRIEVERS" ${SSH_USER}@${TARGET}:/ |
|||
| 20 | ``` |
|||
| 21 | ||||
| 22 | Then run these wherever the container with the target environment is running. |
|||
| 23 | ||||
| 24 | ```bash |
|||
| 25 | ||||
| 26 | export ENVIRONMENT="sandbox" # sandbox, staging or production |
|||
| 27 | export MONGO_CONTAINER="visna-$ENVIRONMENT-mongodb-1" |
|||
| 28 | export VISNA_CONTAINER="visna-$ENVIRONMENT-visna-1" |
|||
| 29 | export DB_NAME="visna_db_new" |
|||
| 30 | export BACKUP="${DB_NAME}_backup.tar.gz" |
|||
| 31 | export RETRIEVERS="retrievers_20250730014908.pkl" |
|||
| 32 | export USER="mtamassia@isn.edu.au" |
|||
| 33 | ||||
| 34 | # Restore backup |
|||
| 35 | sudo docker cp "$BACKUP" $MONGO_CONTAINER:/ |
|||
| 36 | sudo docker exec -it -w / $MONGO_CONTAINER tar -xzf "$BACKUP" |
|||
| 37 | sudo docker exec -it -w / $MONGO_CONTAINER mongorestore --db $DB_NAME --username admin --password password --authenticationDatabase admin "$DB_NAME/" |
|||
| 38 | rm $BACKUP |
|||
| 39 | rm -rf "${DB_NAME}/" |
|||
| 40 | ||||
| 41 | # Restore retrievers file |
|||
| 42 | sudo docker cp "$RETRIEVERS" $VISNA_CONTAINER:/app |
|||
| 43 | ||||
| 44 | # Create user / make admin |
|||
| 45 | sudo docker exec -it -w / $MONGO_CONTAINER mongosh --username admin --password password --authenticationDatabase admin --eval ' |
|||
| 46 | db.user.insertOne({ |
|||
| 47 | "userid": "$USER", |
|||
| 48 | "user_name": "$USER", |
|||
| 49 | "is_admin": true, |
|||
| 50 | "tnc_accepted": true |
|||
| 51 | }); |
|||
| 52 | ' $DB_NAME |
|||
| 53 | 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 |
|||
| 54 | ``` |
