Cara Melakukan Proses Backup Database EJBCA

Buat kalian yang sudah melakukan instalasi EJBCA, pastinya backup database EJBCA secara rutin sangat diperlukan. Entah itu nantinya untuk proses restore saat terjadi kesalahan atau pindah server, sebagai salah satu syarat pengolaan server, atau apapun itu.

Untuk mempermudah proses back database EJBCA tersebut, berikut ini sebuah script yang bisa kalian ekskusi untuk mempermudah proses backup yang kalian lakukan. Script ini merupakan buatan Bastian Fredriksson (Realiserad) yang saya dapatkan melalui git-nya (sudah saya uji).

*Database yang digunakan adalah MariaDB Server.

#!/bin/bash

#################################################################
###                                                           ###
###              EJBCA Backup Script for MariaDB              ###
###                                                           ###
#################################################################


# Location of the MariaDB configuration file with the username
# and passphrase for the backup user. This file should have the
# following contents:
# [client]
user=backup
password=foo123
#
# [mysqld]
# datadir=/var/lib/mysql
MYSQL_CNF='/opt/jboss/backup/mysql_backup.cnf'

# Backup directory, will be created if it does not exist. Can be
# mapped to e.g. an NFS share.
BACKUP_DIR='/nfs'

# The passphrase used to protect the backup, clear this variable
# to make the script ask for the passphrase.
BACKUP_PWD="foo123"

################################################################

# This will create XtraBackup files directory in /var/lib/mysql instead of
# cluttering the user's current working directory.
cd /var/lib/mysql

if [ ! -f "$MYSQL_CNF" ]; then
  echo "The MySQL configuration file $MYSQL_CNF does not exist."
  exit 1
fi

# The user running this script must be in the wheel group, unless
# the script is running as root
if [ "$UID" -ne 0 ]; then
  exec sudo bash "$0" "$@"
fi

if [ "$(id -u)" != "0" ]; then
  echo "Root access denied."
  exit 1
fi

# The MariaDB database files are only readable by the mysql user
# by default, make sure everyone in the mysql group can read them
chmod -R g=u /var/lib/mysql

if [ -z "$BACKUP_PWD" ]; then
  read -s -p 'Backup password: ' PWD
  echo ""
  read -s -p 'Repeat backup password: ' PWD2
  echo ""
  if [ "$BACKUP_PWD" != "$BACKUP_PWD2"  ]; then
    echo "Passwords do not match."
    exit 1
  fi
fi

# Create the backup directory if it does not already exist
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
fi

DATE=$(date '+%Y%m%d%H%M%S')
HOSTNAME=$(hostname)
BACKUP_NAME="mb_ejbca_${HOSTNAME}_${DATE}"

# Create the backup in the backup directory e.g.
# /var/opt/backups/mb_ejbca_hostname_20180101133700.xb.gpg
echo 'Compressing and encrypting backup... (this may take some time)'
mariabackup --defaults-extra-file="$MYSQL_CNF" \
  --host=127.0.0.1 \
  --backup \
  --stream=xbstream | \
openssl enc -e -aes-256-cbc -md sha256 -pass "pass:$BACKUP_PWD" -out "${BACKUP_DIR}/${BACKUP_NAME}.xb.enc"

Penjelasan untuk script backup database EJBCA di atas:

  1. Untuk bisa menjalankan script di atas, terlebih dahulu kalian harus melakukan instalasi mariadb-backup. Mariadb-backup merupakan sebuah utilitas yang disediakan oleh mariadb sebagai solusi untuk mendukung proses backup. Fitur ini sudah ada sejak rilisnya MariaDB Server 10.1 dan backup-nya terenkripsi dengan GPG Utility.
    Berikut ini cara instalasinya:

    sudo apt install mariadb-backup-10.2

    10.2 merupakan versi dari MariaDB Server yang saya gunakan. Silakan disesuaikan sendiri dengan versi MariaDB Server yang kalian gunakan.

    Instalasi mariadb-backup
  2. Jika script di atas dieksekusi dengan user selain root, pastikan user tersebut berada di dalam grup mysql. Kalian harus mempersiapkan sebuah user untuk backup data only. Cara membuat user-nya adalah seperti berikut:
    *silakan login terlebih dahulu ke dalam mariadb server milik kalian

    CREATE USER '<user_backup>'@'localhost' IDENTIFIED BY '<password>';
    GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO '<user_backup>'@'localhost';
    FlISH PRIVILEGES;

    Membuat user untuk backup
  3. Masukkan user dan password ke dalam bagian [client] yang ada di script di atas. Pastikan user-nya sama seperti yang kalian buat pada nomor 3.
  4. BACKUP_DIR merupakan direktori backup yang akan digunakan untuk menyimpan hasil backup. Silakan tentukan sendiri lokasinya. Apabila belum ada, maka script ini akan secara otomatis membuatkan direktori tersebut untuk kalian setelah dieksekusi.
  5. BACKUP_PWD merupakan password yang digunakan untuk memproteksi hasil backup yang berhasil dibuat. Jikalau kalian tidak menyertakan variabel ini di dalam script, maka kalian akan mengisinya secara manual ketika script ini dieksekusi.
  6. Selanjutnya, script akan membuat Xtrabackup dari direktori /var/lib/mysql. Xtrabackup merupakan full backup yang dibuat oleh Percona.
  7. Jalankan script dengan user root

Bila dieksekusi secara benar, maka tampilannya kurang lebih seperti berikut:

Proses backup database ejbca sedang berjalan
Proses Backup Database EJBCA selesai

dan ketika muncul tulisan “completed OK” , coba periksa hasilnya pada folder yang sudah kalian tentukan. Pada contoh di atas, saya menyimpan hasil backup dalam direktori /nfs

hasil backup yang terenkripsi. Besarnya mencapai 403M

Apabila proses backup tidak berjalan, misalnya karena user dan password-nya tidak sesuai, maka hasil yang muncul kurang lebih seperti berikut:

script gagal dieksekusi

*****

Itu tadi sedikit tips mengenai cara melakukan backup database EJBCA. Semoga informasi di atas bisa berguna ya.

Sampai jumpa pada tutorial selanjutnya 🙂

Facebook Comments Box

Comments are closed.