8장. 데이터베이스 마이그레이션

8.1. 셀프 호스트 엔진 데이터 베이스를 원격 서버 데이터 베이스로 마이그레이션

Red Hat Virtualization Manager를 처음으로 설정한 후 셀프 호스트 엔진의 engine 데이터 베이스를 원격 데이터 베이스 서버로 마이그레이션 할 수 있습니다.
이 작업은 두 가지 절차로 나누어져 있습니다. 첫 번째 절차는 원격 PostgreSQL 데이터베이스를 준비하는 것으로 마이그레이션 자체에 대해 필수 구성 요소이며 서버에 Red Hat Enterprise Linux가 설치되어 있고 적절한 서브스크립션을 사용하여 설정 완료되어 있다는 것을 전제로 합니다.
두 번째 절차는 데이터베이스를 마이그레이션하는 것으로 데이터베이스 백업 및 복구를 처리하기 위해 PostgreSQL pg_dumppg_restore 명령을 사용합니다. 이러한 경우 업데이트된 정보로 /etc/ovirt-engine/engine.conf.d/10-setup-database.conf 파일을 편집해야 합니다. 최소한 새로운 데이터 베이스 서버의 위치를 업데이트해야 합니다. 새로운 데이터 베이스의 데이터 베이스 이름, 역할 이름, 암호가 수정된 경우에도 이러한 값이 있는 10-setup-database.conf 파일을 업데이트해야 합니다. 이 절차는 기본 engine 데이터베이스 설정을 사용하여 파일 변경을 최소화합니다.

절차 8.1. Red Hat Virtualization Manager에서 사용할 원격 PostgreSQL 데이터 베이스 준비

  1. 원격 데이터베이스 서버에 로그인하여 PostgreSQL 서버 패키지를 설치합니다:
    # yum install postgresql-server
  2. PostgreSQL 데이터베이스를 초기화하고 postgresql 서비스를 시작합니다. 부팅 시 해당 서비스가 시작되는지 확인합니다:
    # service postgresql initdb
    # service postgresql start
    # chkconfig postgresql on
  3. postgres 사용자로 psql 명령행 인터페이스에 연결합니다:
    # su - postgres
    $ psql
  4. Manager가 데이터베이스에서 읽기/쓰기 시 사용할 사용자를 생성합니다. Manager의 기본 사용자 이름은 engine입니다:
    postgres=# create role user_name with login encrypted password 'password';

    참고

    engine 사용자 암호는 /etc/ovirt-engine/engine.conf.d/10-setup-database.conf에 일반 텍스트 형식으로 저장되어 있습니다. 새로운 서버의 역할을 생성할 때 아무 암호나 사용할 수 있지만 다른 암호를 사용할 경우 새로운 암호에 대한 정보를 이 파일에 업데이트해야 합니다.
  5. Red Hat Virtualization 환경에 대한 데이터를 저장할 데이터 베이스를 생성합니다. Manager에서 기본 데이터베이스 이름은 engine이고 기본 사용자 이름도 engine입니다:
    postgres=# create database database_name owner user_name template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
  6. md5 클라이언트 인증을 활성화하여 원격으로 데이터베이스에 액세스할 수 있습니다. /var/lib/pgsql/data/pg_hba.conf 파일을 편집하고 다음 행을 파일 아래에 있는 local로 시작하는 행 바로 아래에 추가합니다. 여기서 X.X.X.X는 Manager의 IP 주소로 변경합니다:
    host    database_name    user_name    X.X.X.X/32   md5
  7. 데이터베이스에 TCP/IP 연결을 허용합니다. /var/lib/pgsql/data/postgresql.conf 파일을 편집하고 다음 행을 추가합니다:
    listen_addresses='*'
    위의 예시에서는 모든 인터페이스에서의 연결을 수신하도록 postgresql 서비스를 설정하고 있습니다. IP 주소로 인터페이스를 지정할 수 있습니다.
  8. PostgreSQL 데이터베이스 연결에 사용할 기본 포트를 열고 업데이트된 방화벽 규칙을 저장합니다:
    # iptables -I INPUT 5 -p tcp --dport 5432 -j ACCEPT
    # service iptables save
  9. postgresql 서비스를 다시 시작합니다:
    # service postgresql restart
옵션으로 http://www.postgresql.org/docs/8.4/static/ssl-tcp.html#SSL-FILE-USAGE에 있는 지시 사항에 따라 데이터 베이스 보안 연결을 위해 SSL을 설정합니다.

절차 8.2. 데이터베이스 마이그레이션

  1. 호스트 엔진 (hosted-engine) 호스트 중 하나에 로그인하여 해당 환경을 글로벌 유지관리 모드로 변경합니다. 이를 통해 고가용성 에이전트를 비활성화하고 이 절차 도중 Manager 가상 머신이 마이그레이션되는 것을 방지할 수 있습니다:
    # hosted-engine --set-maintenance --mode=global
  2. Manager 가상 머신에 로그인하고 ovirt-engine 서비스를 중지하여 engine 백업을 방해하지 않도록 합니다:
    # service ovirt-engine stop
  3. PostgreSQL pg_dump 명령을 사용하여 engine 데이터베이스 백업을 생성합니다:
    # su - postgres -c 'pg_dump -F c engine -f /tmp/engine.dump'
  4. 백업 파일을 새로운 데이터 베이스 서버에 복사합니다. 대상 디렉토리는 postgres 사용자에게 쓰기 권한을 허용해야 합니다:
    # scp /tmp/engine.dump root@new.database.server.com:/tmp/engine.dump
  5. 새로운 데이터 베이스 서버에 로그인하고 PostgreSQL pg_restore 명령을 사용하여 데이터베이스를 복원합니다:
    # su - postgres -c 'pg_restore -d engine /tmp/engine.dump'
  6. Manager 가상 머신에 로그인하고 /etc/ovirt-engine/engine.conf.d/10-setup-database.conf 파일을 업데이트한 후 ENGINE_DB_HOSTlocalhost 값을 새로운 데이터 베이스 서버의 IP 주소로 변경합니다. 새로운 데이터 베이스 서버의 engine 이름, 역할 이름, 암호가 다를 경우 이 파일에 이러한 값을 업데이트합니다.
  7. 이제 데이터베이스가 마이그레이션되었습니다. ovirt-engine 서비스를 시작합니다:
    # service ovirt-engine start
  8. 호스트 엔진 (hosted-engine) 호스트에 로그인하여 유지관리 모드를 해제해서 고가용성 에이전트를 활성화합니다:
    # hosted-engine --set-maintenance --mode=none