PVDI DB Backup

U-VDI에서는 구성에 필요한 데이터를 DB(mysql)에 저장하고 있어, 정기적으로 DB 백업을 진행하여 데이터 소실을 예방하고 있습니다.

구성도

Master-VM의 daily cronjob에 등록되어 매일 일정한 시각에 DB Backup이 진행됩니다.

  1. DB Dump : Active된 Master-VM에서 운영중인 DB를 Dump하여 OS디스크 영역에 저장합니다.
  2. 1차 백업 : Dump된 데이터를 Standby Master-VM의 OS디스크 영역에 추가로 저장합니다. 데이터의 복사는 authorized key 인증방식의 ssh protocol을 사용한 rsync를 이용합니다.
  3. 2차 백업 : 2차 백업을 위해 dump 데이터를 Master-VM이 구동중이지 않은 Node의 LocalDisk (OS영역)으로 복사합니다. 1차백업과 마찬가지로 rsync over ssh protocol을 이용합니다.
  4. Active Master-VM이 다운 될 경우 Standby Master-VM에서 위 1번, 3번 과정으로 백업을 진행합니다.

백업된 데이터는 총 2주간(14개) 저장되어집니다.

백업 설정

script 설정

Master-VM의 ~orchard/pvdi/scripts/db_backup.sh 파일을 열어 아래의 부분을 환경에 맞게 설정합니다.

#!/bin/bash
MASTER="192.168.0.2"
SLAVE="192.168.0.3"
NODE="192.168.0.7"
PORT="22"
USERNAME="pvdi"
  • MASTER : 첫번째 Master-VM의 관리 IP 주소
  • SLAVE : 두번째 Master-VM의 관리 IP 주소
  • NODE : 2차 백업이 진행될 Node의 관리 IP 주소
  • PORT : 데이터 복사가 진행될 ssh port
  • USERNAME : 데이터 복사가 진행될 ssh os user

SSH Key 인증

Dump된 데이터는 SSH Protocol를 이용한 rsync로 1,2차 백업을 진행합니다. 이때 SSH Key로 인증으로 진행되므로 Active Master-VM과 Standby Master-VM, Node간의 SSH Key를 복사가 필요합니다.

SSH Key 생성

Master-VM 2대에서 SSH Key를 생성합니다. ssh os user는 위 script에서 설정한 user를 이용합니다.

# su - orchard
$ ssh-keygen

SSH Key 복사

생성된 SSH Key를 복사가 진행될 Master-VM과 Node에 복사합니다.

[Active Master-VM]
# ssh-copy-id pvdi@[MASTERVM_IP]
# ssh-copy-id pvdi@[NODE_IP]
[Standby Master-VM]
# ssh-copy-id pvdi@[NODE_IP]

SSH 접속 확인

비밀번호 입력없이 SSH 접속이 이뤄지는 확인합니다.

[Active Master-VM]
# ssh pvdi@[MASTERVM_IP]
# ssh pvdi@[NODE_IP]
[Standby Master-VM]
# ssh pvdi@[NODE_IP]

cronjob 등록

Master-VM 2곳의 crontab에 backup script를 등록합니다. 아래의 경우는 매일 01:00로 등록한 예입니다. 데이터의 변동이 많지 않은 새벽 시간대에 진행하는것이 좋습니다.

# crontab -e
0 1 * * * /home/orchard/pvdi/scripts/db_backup.sh

백업 확인

백업된 데이터는 ~orchard/db_backup이라는 directory에 pvdi_YYYYMMDD.sql 파일로 저장됩니다. 총 2주(14개)간의 데이터가 저장되며 2주가 넘은 데이터를 자동으로 삭제됩니다. 백업된 데이터의 크기는 구성의 규모(노드, GVM, VM, User의 수)와 운영 기간(VDI 로그)에 따라 비례하지만, 일반적으로 수백KB에서 몇MB 정도내의 크기입니다.

백업 로그

DB 백업 script는 작업시 로그를 기록합니다. 백업이 실패할 경우 로그를 확인하여 원인을 파악할 수 있습니다. 로그는 Master-VM의 ~orchard/pvdi/var/log/db_backup_YYYYMMDD.log로 저장됩니다.

복구

데이터가 유실되어 복구가 필요하다면 아래의 명령으로 복구를 진행할수 있습니다. 백업된 기존 데이터를 덮어씌우는 작업이므로 신중하게 진행되어야하며, 복구 작업동의 데이터 변경을 위해 UVDI Daemon(pvdi_was)을 모두 내린뒤 작업해야합니다.

# sudo -u orchard /home/orchard/pvdi/scripts/pvdi_was stop
# mysql -h [HOST] -u [USERNAME] -p < BACKUPDATA.sql