oVirt のengine-backup script

全バックアップのスクリプト

oVirt engineの databese とDWH の databaseを万が一のために毎日フルバックアップする。フルバックアップといってもデータ量はさほど大きくない。

#!/usr/bin/bash
#
# oVirt engine database & DWH database all backup
# /mnt/PublicはNAS上のnfs
#
/usr/bin/engine-backup --mode=backup --scope=all --file="/mnt/Public/ovirt/backups/engine-backup-$(hostname)-$(date +%F).tar.bz2" --log=/mnt/Public/ovirt/backups/ovirt-engine-backups.log

# 1週間以上前のバックアップファイルは削除する。ログは残す
find /mnt/Public/ovirt/backups/ -name "*.bz2" -mtime +7 -exec rm -rf -- {} \;

crontabに登録して毎日実行

スクリプトは毎日深夜に実行。うちのNASは夜1:00から別ファイルサーバーにrsyncしているのでその前に実施することとする。0:30くらいかな。

#crontab -e

# ovirt backup run daily at 0:30
30 0 * * * /root/tools/backupovirt.sh >/dev/null 2>&1

生成されると、バックアップファイルのアーカイブとログが残る。アーカイブはスクリプトによって1週間分のみ残る。ログは追記されるようだ。

-rw-r--r-- 1 root root 2151512 10月 27 13:39 engine-backup-green.team-boss.com-2018-10-27.tar.bz2
-rw-r--r-- 1 root root    3653 10月 27 13:39 ovirt-engine-backups.log

万が一に復元するときは

当然、バックアップしたのだから復元方法も記す。復元はDWHも復元するので少しパラメーターが増える。また、ドキュメントでは復元時にはDBの内容が入っていない状態でやるようにと記載されていた。ということはengine-setup前っていうことである。

# engine-backup --mode=restore --file=/mnt/Public/ovirt/backups/engine-backup-green.team-boss.com-2018-10-27.tar.bz2 --log=/mnt/Public/ovirt/backups/ovirt-engine-backups.log --provision-db --no-restore-permissions --provision-db --provision-dwh-db --provision-reports-db
Preparing to restore:
- Unpacking file '/mnt/Public/ovirt/backups/engine-backup-green.team-boss.com-2018-10-27.tar.bz2'
Restoring:
- Files
Provisioning PostgreSQL users/databases:
- user 'engine', database 'engine'
- user 'ovirt_engine_history', database 'ovirt_engine_history'
Restoring:
- Engine database 'engine'
  - Cleaning up temporary tables in engine database 'engine'
  - Updating DbJustRestored VdcOption in engine database
  - Resetting DwhCurrentlyRunning in dwh_history_timekeeping in engine database
  - Resetting HA VM status
------------------------------------------------------------------------------
Please note:

The engine database was backed up at 2018-10-27 00:30:03.000000000 +0900 .

Objects that were added, removed or changed after this date, such as virtual
machines, disks, etc., are missing in the engine, and will probably require
recovery or recreation.
------------------------------------------------------------------------------
- DWH database 'ovirt_engine_history'
You should now run engine-setup.
Done.

このバックアップはDBのみの退避であるため、DWHにあるドメインの各種イメージなどは退避されない。これは別の方法で実施することになる。

ovirt-engineとファイルが同じサーバーになるように構成して、なんらかの要因でストレージを飛ばしてしまったとき、イメージファイルも復元できないと何の効果もないので、くれぐれもバックアップは確実にとるように。

うちはファイルサーバーとovirt-engineが同じサーバーで構成されていて、イメージのあるLVを飛ばしてしまったときに泣いたよ。こんなときはDBを復元してもだめで、エクスポートドメインからのインポートでなんとか復活できた。