Skip to main content

DB Setup

Which db to setup on which node​

As we've outlined here, we have a dedicated server for storing eSamwad backend data due to its resource-intensive nature. Similarly, the databases for the rest of the cross-cutting services are hosted on a separate server, as mentioned here, since they are lightweight services and can be accommodated onto a single server.

Backup & Restore existing prod schema & db​

Since backing up and restoring databases is a routine task applicable to various database systems, we have provided comprehensive steps for performing these operations.

eSamwad Backend Database​

The eSamwad backend database resides on the db1 server, requiring an SSH connection to perform backup or restore operations.

Backup:

# Backup to a .sql file
docker-compose -f /home/samarth-devops/docker-compose/db-compose-esamwad-be.yml exec postgres-esamwad-be pg_dump -U postgres -d postgres > backup_2023_08_07_17_00_00.sql

# Compress the backup file (Optional)
tar -cvzf backup_2023_08_07_17_00_00.sql.tar.gz backup_2023_08_07_17_00_00.sql

Restore:

If the sql file is zipped, unzip it before passing it to the psql utility.

cat backup_2023_08_07_17_00_00.sql | docker-compose -f /home/samarth-devops/docker-compose/db-compose-esamwad-be.yml exec -T postgres-esamwad-be psql -U postgres -d postgres

Other Services​

The databases for the following services are deployed on the db2 server, requiring SSH access for backup or restore operations.

ODK UCI Adapter​

Backup:

docker-compose -f /home/samarth-devops/docker-compose/db-compose.yml exec postgres-odk-adapter pg_dump -U postgres -d postgres > backup_2023_08_07_17_00_00.sql

Restore:

cat backup_2023_08_07_17_00_00.sql | docker-compose -f /home/samarth-devops/docker-compose/db-compose.yml exec -T postgres-odk-adapter psql -U postgres -d postgres
Doc-generator​

Backup:

docker-compose -f /home/samarth-devops/docker-compose/db-compose.yml exec postgres-doc-gen pg_dump -U postgres -d postgres > backup_2023_08_07_17_00_00.sql

Restore:

cat backup_2023_08_07_17_00_00.sql | docker-compose -f /home/samarth-devops/docker-compose/db-compose.yml exec -T postgres-doc-gen psql -U postgres -d postgres
Yaus​

Backup:

docker-compose -f /home/samarth-devops/docker-compose/db-compose.yml exec postgres-yaus pg_dump -U postgres -d postgres > backup_2023_08_07_17_00_00.sql

Restore:

cat backup_2023_08_07_17_00_00.sql | docker-compose -f /home/samarth-devops/docker-compose/db-compose.yml exec -T postgres-yaus psql -U postgres -d postgres
Templater​

Backup:

docker-compose -f /home/samarth-devops/docker-compose/db-compose.yml exec postgres-templater pg_dump -U postgres -d postgres > backup_2023_08_07_17_00_00.sql

Restore:

cat backup_2023_08_07_17_00_00.sql | docker-compose -f /home/samarth-devops/docker-compose/db-compose.yml exec -T postgres-templater psql -U postgres -d postgres

Remember to replace the timestamps in the file names and other variables with your specific details.

Hasura Metadata​

Install Hasura CLI: https://hasura.io/docs/latest/hasura-cli/install-hasura-cli/

Doc Generator​

As we have already imported/restored the existing DB; we don't have to apply migrations again. We'll just have to apply metadata.

  • cd hasura/doc-generator
  • Create .env using sample.env as a reference & configure the credentials.
  • Mark the initial migration as present: hasura migrate apply --skip-execution --version 1692688379356.
  • Run hasura metadata apply to sync the metadata.

ODK UCI Adapter​

As we have already imported/restored the existing DB; we don't have to apply migrations again. We'll just have to apply metadata.

  • cd hasura/odk-uci-adapter
  • Create .env using sample.env as a reference & configure the credentials.
  • Mark the initial migration as present: hasura migrate apply --skip-execution --version 1692701191239.
  • Run hasura metadata apply to sync the metadata.

Esamwad Backend​

As we have already imported/restored the existing DB; we don't have to apply migrations again. We'll just have to apply metadata.

  • cd hasura/esamwad-backend
  • Create .env using sample.env as a reference & configure the credentials.
  • Mark the initial migration as present: hasura migrate apply --skip-execution --version 1692692627467.
  • Run hasura metadata apply to sync the metadata.