BioHPC Database

Where is the DB hosted

Our BioHPC database is hosted on cbsujohnson.biohpc.cornell.edu. Once you created a BioHPC account, you can ssh to the machine using

ssh <your NetID>@cbsujohnson.biohpc.cornell.edu

Then, if you run docker1 ps, you can see the Docker container of our database

This container is created and run by Zack, one of our previous team members, and the script he used is located at /workdir/ztb5/mongo/.

How to backup/restore the DB

Currently, the backup is done by a Cron job that executes the script /home/ts864/mongoDbBackup/dumpJob.sh at 4:00 AM every day. The content of the script is provided below

# Scheduled to run daily at 4am.
# Captures and stores the current state of the database.
mongodump --uri="mongodb://mongodbuser:2TQFTnrQYb2yQFhYqnCUGxesurPISnXwhsFHyfP2cr4ILQeUk1@cbsujohnson.biohpc.cornell.edu:8001/?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&ssl=false" \
          -o=/home/ts864/mongoDbBackup/dumpData/dump-$(date +%Y-%m-%d)

# Deletes backups created more than and including 7 days ago.
find /home/ts864/mongoDbBackup/dumpData/dump-* -mtime +7 -delete

It is scheduled using command crontab -e. The backups are stored in a /home directory because BioHPC automatically backups home directories nightly.


To restore the backups to a target DB, run the following command

mongorestore --uri=<target DB URI> --drop path-to-backup-folder/

AWS

Lambda

For every Lambda, make sure to do the following configuration in the Configuration tab.

  • In Configuration - VPC, use cu-cals-johnson-lab-vpc for VPC and use both cu-cals-johnson-lab-subnet-private-1 and cu-cals-johnson-lab-subnet-private-2 for subnets. This enables the Lambda to access public Internet.
  • In Configuration - Permissions, use lambda-ex as the Execution Role.

EC2

The EC2 instances used for deploying backend services are created following the procedure starting from step 3 of this tutorial (https://medium.com/@umairnadeem/deploy-to-aws-using-docker-compose-simple-210d71f43e67) with the following modifications.

  1. When creating an instance, we reuse existing key pairs instead of creating new ones.
  2. We retrieve our codebase using git instead of scp.
  • No labels