Skip to main content

Disaster Recovery Guide

Docker guide: https://docs.docker.com/engine/install/ubuntu/

Restore Application Server

Requirements & Prereqs

  • Ubuntu 22.04 LTS or Ubuntu 24.04 LTS
  • Docker
  • nfs
  • nginx

Install NFS and nginx

apt install nfs-common nginx

Mount NFS

mkdir -p /mnt/backups/appbackup

fstab >>
192.168.0.31:/mnt/backups/appbackup /mnt/backups/appbackup nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

mount -a

Extract backup

tar -xvzpf /mnt/backups/appbackup/backup-file-name.tar.gz -C /

Setup directories

mkdir -p /var/opt/zm/DataDumps/
mkdir -p /var/log/nginx/

Setup services

  • Tailscale
  • node_exporter

Restart nginx

systemctl restart nginx

Start SEIR services

cd /opt/apps
docker compose up -d

cd /opt/apps/zm/unfepi
docker compose up -d

Reboot OS

reboot

Verify

Check the following for maintenance scripts and scheduled jobs

  • /root/scripts/
  • crontab

Restore Database Servers

Requirements & Prereqs

  • Ubuntu 22.04 LTS
  • MySQL 5.6 community edition
  • Percona xtrabackup
  • nfs

Install NFS

apt install nfs-common

Mount NFS

mkdir -p /mnt/backups/database

fstab >>
192.168.0.31:/mnt/backups/database /mnt/backups/database nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

mount -a

Extract backup

mkdir -p /tmp/mysql
tar -xvzpf /mnt/backups/database/xtrabackups/backup-file-name.tar.gz -C /tmp/mysql/

Install MySQL & Percona Xtrabackup

  • Refer to the Deployment guides

Stop MySQL

systemctl stop mysql

Setup directories

mkdir -p /var/log/mysql
chown mysql:adm /var/log/mysql
chmod 750 /var/log/mysql

rm -rf /var/lib/mysql/*
mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

mkdir -p /tmp/xtrabackup_backupfiles
chmod 755 /tmp/xtrabackup_backupfiles

chown -R mysql:mysql /tmp/mysql/

Prepare Backup & Restore

xtrabackup --prepare --target-dir=/tmp/mysql/backup-file-directory
xtrabackup --copy-back --target-dir=/tmp/mysql/backup-file-directory --datadir=/var/lib/mysql

Fix directory permissions

chown -R mysql:mysql /var/lib/mysql

find /var/lib/mysql -type d -exec chmod 750 {} \;
find /var/lib/mysql-type f -exec chmod 640 {} \;

Start MySQL

systemctl start mysql

Setup services

  • Tailscale
  • node_exporter
  • PMM node setup

Verify & Test

  • Check mysql logs
  • Test mysql connection

Replica setup

  • Repeat the same steps for replica servers using the same backup file.
  • Use the replica cnf file provided in the deployment guide.