aybInstance/docs/backups.md

1.9 KiB

Backup Methodology

ayb is working on improving persistence and database streaming, which means that this methodology will change in the future.

The current backup system has two parts:

  • Daily automatic backups of the hosted databases.
  • Monthly manual off-site backups of the ayb database and the hosted databases.

Automatic backups

A shell script (TODO(sofia): release script) is executed five times a day, this shell script does the following:

  • Attempt to recursively backup hosted databases using a command like this: sqlite3 username/database.db ".timeout 1000" ".backup bak/username/database-$(date +%s).db.bak".
  • Delete backups older than 7 days.
  • Delete backups older than 1 day and whose file size is bigger than 500MB.

Off-site backups

Off-site backups include all of the hosted databases and the ayb database, which means that ayb needs to be taken down in order to close all of the connections. A notice will be up three days prior at:

This notice will contain:

  • The reason of the downtime (off-site backup).
  • The expected downtime (1 to 2 hours).
  • The time of the downtime in UTC.

When the time comes, the following is done:

  • The instance is taken down.
  • The ayb_data folder is tar-gzip-ed.
  • The ayb_data.tar.gz file is encrypted using a public key.
  • The encrypted backup is sent to my local machine.
  • The encrypted backup is stored inside an external hard-drive.
    • This hard-drive is stored inside a safe.
    • The private key is stored inside another hard-drive located at another physical location.
  • The encrypted backup in my local machine is deleted.
  • The encrypted backup in the server is deleted.
  • The tar-gzip-ed backup in the server is deleted.
  • The instance is started.
  • When everything is up and running, the notices are removed.

This will be partially automated in the future, right now this process is completely manual.