백업 및 복구

데이터 손실을 방지하려면 SUSE Manager 설치를 정기적으로 백업해야 합니다. SUSE Manager는 설치된 프로그램 및 구성뿐만 아니라 데이터베이스를 활용하기 때문에 설치의 모든 구성 요소를 백업하는 것이 중요합니다. 이 장에서는 백업해야 하는 파일에 대해 설명하고 데이터베이스 백업을 관리하는 smdba 도구를 소개합니다. 또한, 시스템 오류가 발생한 경우 백업에서 복원하는 방법에 대한 정보도 포함되어 있습니다.

백업 방법과 관계없이 현재 설치 작업 중 사용하는 공간의 세 배 이상을 사용할 수 있어야 합니다. 공간이 부족하면 백업이 실패할 수 있으므로 수시로 확인하십시오.

1. SUSE Manager 백업

SUSE Manager 설치를 백업하는 가장 포괄적인 방법은 관련 파일 및 디렉토리를 백업하는 것입니다. 이 방법을 사용하면 백업 관리 시간을 절약할 수 있으며 오류가 발생한 경우 더 빠르게 다시 설치 및 동기화할 수 있습니다. 그러나 이 방법은 상당히 큰 규모의 디스크 공간이 필요하고 백업을 수행하는 데 시간이 오래 걸릴 수 있습니다.

필수 파일과 디렉토리만 백업하려면 다음 목록을 사용하십시오. 이 프로세스를 더 간단하지만 더 포괄적으로 수행하려면 여기 언급된 디렉토리뿐만 아니라 /etc/root 디렉토리를 통째로 백업하는 것이 좋습니다. 일부 파일은 관련 SUSE Manager 기능이 실제 사용될 때만 존재합니다.

  • /etc/cobbler/

  • /etc/dhcp.conf

  • /etc/fstab 및 필요한 모든 ISO 마운트 포인트.

    UUID가 변경된 경우 그에 따라 fstab 항목을 업데이트했는지 확인하십시오.

  • /etc/rhn/

  • /etc/salt

  • /etc/sudoers

  • /etc/sysconfig/rhn/

  • /root/.gnupg/

  • /root/.ssh

    SSH 터널 또는 SSH push를 사용하는 경우 이 파일이 존재합니다. 또한, id-susemanager 키의 사본도 저장해야 합니다.

  • /root/ssl-build/

  • /srv/formula_metadata

  • /srv/pillar

  • /srv/salt

  • /srv/susemanager

  • /srv/tftpboot/

  • /srv/www/cobbler

  • /srv/www/htdocs/pub/

  • /srv/www/os-images

  • /var/cache/rhn

  • /var/cache/salt

  • /var/lib/cobbler/

  • /var/lib/cobbler/templates/ (버전 4.0 이전에는 /var/lib/rhn/kickstarts/)

  • /var/lib/Kiwi

  • /var/lib/rhn/

  • /var/run/pgsql/

  • /var/lib/salt/

  • /var/run/salt/

  • /var/spacewalk/

  • 스크립트, 킥스타트 또는 AutoYaST 프로파일, 사용자 정의 RPM과 같은 사용자 정의 데이터가 포함된 모든 디렉토리입니다.

또한, 데이터베이스도 백업해야 하며, 이 작업은 smdba 도구를 사용하여 수행할 수 있습니다.

절차: 수동 백업에서 복원
  1. SUSE Manager 서버를 다시 설치하십시오. 자세한 내용은 SUSE Manager 4.3 서버 설치에서 확인할 수 있습니다.

  2. yast2 susemanager_setup으로 SUSE Manager 서버를 설정합니다. 자세한 내용은 SUSE Manager 서버 설정에서 확인할 수 있습니다.

  3. SUSE Manager Web UI를 사용하거나 명령 프롬프트에서 mgr-sync 도구를 사용하여 SUSE Manager 리포지토리를 다시 동기화하십시오. 제품을 다시 등록하거나 등록 및 SSL 인증서 생성 섹션을 건너뛸 수 있습니다.

  4. /root/ssl-build/rhn-org-httpd-ssl-key-pair-MACHINE_NAME-VER-REL.noarch.rpm 패키지를 다시 설치하십시오.

  5. rhn-search 서비스가 다음에 시작될 때 검색 인덱스의 재생성을 예약하십시오. 이 명령은 디버그 메시지만 생성하고 오류 메시지는 생성하지 않습니다.

    rhn-search cleanindex
  6. /var/spacewalk/packages/를 복원해야 하는지 확인합니다. /var/spacewalk/packages/가 백업에 없으면 복원해야 합니다. 소스 리포지토리를 사용할 수 있는 경우 전체 채널 동기화로 /var/spacewalk/packages/를 복원할 수 있습니다.

    mgr-sync refresh --refresh-channels

2. smdba로 데이터베이스 관리

smdba 도구는 로컬 PostgreSQL 데이터베이스를 관리하기 위한 용도로 사용됩니다. 이 도구를 사용하면 데이터베이스를 백업 및 복원하고 백업을 관리할 수 있습니다. 또한, 데이터베이스 상태를 확인하고 다시 시작과 같은 관리 작업을 수행하기 위해서도 사용할 수 있습니다.

smdba 도구는 로컬 PostgreSQL 데이터베이스에서만 작동하며, 원격으로 액세스되는 데이터베이스 또는 Oracle 데이터베이스에서는 작동하지 않습니다.

smdba 도구는 시스템 변경을 실행하기 위해 sudo 액세스 권한이 필요합니다. 시작하기 전에 다음 행에 대한 /etc/sudoers 파일을 확인하여 admin 사용자에 대해 sudo 액세스를 활성화했는지 확인합니다.

admin   ALL=(postgres) /usr/bin/smdba

다음을 사용하여 데이터베이스의 런타임 상태를 확인합니다.

smdba db-status

이 명령은 online 또는 offline을 반환합니다. 예는 다음과 같습니다.

Checking database core...       online

데이터베이스 시작 및 중지는 다음을 사용하여 수행할 수 있습니다.

smdba db-start

smdba db-stop

3. smdba를 사용한 데이터베이스 백업

smdba 도구는 연속 아카이브 백업을 수행합니다. 이 백업 방법은 현재 세션 동안 데이터베이스에 적용된 모든 변경 사항에 대한 로그와 일련의 기존 백업 파일을 결합합니다. 충돌이 발생하면 먼저 디스크의 가장 최근 백업 파일에서 데이터베이스 상태를 복원한 다음 현재 세션의 로그를 정확하게 재생하여 데이터베이스를 현재 상태로 되돌립니다. smdba를 사용한 연속 아카이브 백업은 데이터베이스가 실행 중인 상태에서 수행되므로 작동 중지 시간이 필요하지 않습니다.

이 백업 방법은 안정적이고 일반적으로 일관된 스냅샷을 생성하지만 많은 저장 공간을 차지할 수 있습니다. 백업에 사용할 수 있는 현재 데이터베이스 크기의 세 배 이상인 공간이 있는지 확인하십시오. 현재 데이터베이스의 크기는 /var/lib/pgsql/로 이동하고 df -h를 실행하여 확인할 수 있습니다.

smdba 도구는 아카이브를 관리하여 가장 최근 백업과 로그의 현재 아카이브만 유지합니다. 로그 파일의 최대 파일 크기는 16 MB이므로 파일이 이 크기에 도달하면 새 로그 파일이 생성됩니다. 새 백업을 생성할 때마다 디스크 공간을 확보하기 위해 이전 백업이 제거됩니다. 스토리지가 효율적으로 관리되도록 cron을 사용하여 smdba 백업을 예약하고 실패할 때를 대비하여 항상 백업을 준비하는 것이 좋습니다.

3.1. 수동 데이터베이스 백업 수행

smdba 도구는 명령줄에서 직접 실행할 수 있습니다. 설치 직후 또는 구성을 크게 변경한 경우 수동 데이터베이스 백업을 실행하는 것이 좋습니다.

smdba를 처음 실행하거나 백업 위치를 변경한 경우 아카이브를 수행하기 전에 데이터베이스를 재시작해야 합니다. 이에 따라 약간의 작동 중지 시간이 발생합니다. 정기 데이터베이스 백업에는 작동 중지 시간이 필요하지 않습니다.

절차: 수동 데이터베이스 백업 수행
  1. 백업을 위한 영구 저장 공간을 할당합니다. 이 예에서는 /var/spacewalk/에 있는 디렉토리를 사용합니다. 이 작업은 백업의 영구적인 대상이 되므로 서버에서 항상 액세스할 수 있는지 확인하십시오.

  2. 백업 위치에서 백업을 위한 디렉토리를 생성합니다.

    루트로 다음을 수행합니다.

    install -d -o postgres -g postgres -m 700 /var/spacewalk/db-backup
  3. 올바른 백업 위치 권한이 설정되어 있는지 확인합니다.

    chown postgres:postgres /var/spacewalk/db-backup
  4. 처음으로 백업을 생성하려면 enable 옵션을 설정하고 smdba backup-hot 명령을 실행합니다. 이렇게 하면 지정된 디렉토리에 백업이 생성되고 필요한 경우 데이터베이스를 재시작합니다.

    smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup

    이 명령은 디버그 메시지를 생성하고 출력하여 완료됩니다.

    INFO: Finished
  5. 백업 파일이 /var/spacewalk/db-backup 디렉토리에 있는지 확인하여 백업 성공 여부를 확인합니다.

3.2. 자동 백업 일정 예약하기

smdba를 사용하면 데이터베이스 백업을 수행하기 위해 시스템을 종료할 필요가 없습니다. 그러나 대규모 작업이기 때문에 백업이 실행되는 동안 데이터베이스 성능이 저하될 수 있습니다. 중단을 최소화하기 위해 트래픽이 적은 시간에 정기 데이터베이스 백업을 예약하는 것이 좋습니다.

현재 데이터베이스 크기의 세 배 이상의 공간을 백업에 사용할 수 있는지 확인합니다. 현재 데이터베이스의 크기는 /var/lib/pgsql/로 이동하고 df -h를 실행하여 확인할 수 있습니다.

절차: 자동 백업 일정 예약하기
  1. 백업을 위한 디렉토리를 생성하고 루트로 적절한 권한을 설정합니다.

    install -d -m 700 -o postgres -g postgres /var/spacewalk/db-backup
  2. /etc/cron.d/db-backup-mgr을 열거나 존재하지 않는 경우 생성하고 다음 라인을 추가하여 cron 작업 생성:

    0 2 * * * root /usr/bin/smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup
  3. 백업 디렉토리를 정기적으로 확인하여 백업이 올바르게 작동하는지 확인합니다.

4. 백업에서 복원

mdba 도구를 사용하여 실패 시 백업에서 복원할 수 있습니다.

절차: 백업에서 복원
  1. 데이터베이스를 종료합니다.

    smdba db-stop
  2. 복원 프로세스를 시작하고 완료될 때까지 대기합니다.

    smdba backup-restore start
  3. 데이터베이스를 재시작합니다.

    smdba db-start
  4. RPM과 데이터베이스에 차이가 있는지 확인합니다.

    spacewalk-data-fsck

5. 아카이브 로그 설정

아카이브 로깅을 사용하면 데이터베이스 관리 도구 smdba를 사용하여 핫 백업을 수행할 수 있습니다. 기본으로 제공되는 데이터베이스가 있는 SUSE Manager에서는 아카이브 로깅이 기본적으로 활성화되어 있습니다.

PostgreSQL은 제한된 수의 아카이브 로그를 유지 관리합니다. 기본 구성을 사용하면 크기가 16MiB인 파일이 약 64개 저장됩니다.

사용자를 생성하고 채널을 동기화합니다.

  • SLES12-SP2-Pool-x86_64

  • SLES12-SP2-Updates-x86_64

  • SLE-Manager-Tools12-Pool-x86_64-SP2

  • SLE-Manager-Tools12-Updates-x86_64-SP2

PostgreSQL은 약 1GB의 추가 데이터를 생성합니다. 그러므로 백업 전략을 수립하고 백업을 정기적으로 생성하는 것이 중요합니다.

아카이브 로그는 /var/lib/pgsql/data/pg_xlog/(postgresql)에 저장됩니다.

6. 이미 사용 중인 데이터베이스 공간의 개요 검색

데이터베이스 관리자는 space-overview 하위 명령을 사용하여 이미 사용 중인 테이블 공간에 대한 보고서를 확인할 수 있습니다. 예는 다음과 같습니다.

smdba space-overview

다음과 같이 출력됩니다.

SUSE Manager Database Control. Version 1.5.2
Copyright (c) 2012 by SUSE Linux Products GmbH

Tablespace  | Size (Mb) | Avail (Mb) | Use %
------------+-----------+------------+------
postgres    | 7         | 49168      | 0.013
susemanager | 776       | 48399      | 1.602

PostgreSQL에서는 smdba 명령을 사용할 수 있습니다. 더 자세한 보고서를 확인하려면 space-tables 하위 명령을 사용하십시오. 그러면 테이블과 해당 크기가 제공됩니다. 예는 다음과 같습니다.

smdba space-tables

다음과 같이 출력됩니다.

SUSE Manager Database Control. Version 1.5.2
Copyright (c) 2012 by SUSE Linux Products GmbH

테이블                                 | 크기
--------------------------------------+-----------
public.all_primary_keys               | 0바이트
public.all_tab_columns                | 0바이트
public.allserverkeywordsincereboot    | 0바이트
public.dblink_pkey_results            | 0바이트
public.dual                           | 8192바이트
public.evr_t                          | 0바이트
public.log                            | 32kB
...

7. 데이터베이스 이동

데이터베이스를 다른 위치로 이동할 수 있습니다. 예를 들어, 데이터베이스 저장 공간이 부족한 경우가 이에 해당합니다.

절차: 데이터베이스 이동
  1. SUSE Manager의 기본 저장 위치는 /var/lib/pgsql/입니다. 예를 들어, /storage/postgres/로 이동하려면 다음을 수행합니다.

  2. 명령 프롬프트에서 루트 권한으로 실행 중인 데이터베이스를 중지합니다.

    rcpostgresql stop

    실행 중인 Spacewalk 서비스를 종료합니다.

    spacewalk-service stop
  3. -a, --archive 옵션을 사용하여 cp 명령으로 현재 작업 디렉토리 구조를 복사합니다. 예는 다음과 같습니다.

    cp --archive /var/lib/pgsql/ /storage/postgres/

    이 명령은 /var/lib/pgsql/의 내용을 /storage/postgres/pgsql/로 복사합니다.

    /var/lib/pgsql 디렉토리의 내용을 동일하게 유지해야 합니다. 그러지 않으면 SUSE Manager 데이터베이스가 오작동할 수 있습니다. 또한, 사용 가능한 디스크 공간도 충분한지 확인해야 합니다.
  4. 다음의 새 데이터베이스 디렉토리를 마운트합니다.

    mount /storage/postgres/pgsql
  5. 새 디렉토리로 변경하고 다음 명령을 실행하여 소유권이 root:root가 아닌 postgres:postgres인지 확인합니다.

    cd /storage/postgres/pgsql/
    ls -l

    다음과 같이 출력됩니다.

    total 8
    drwxr-x---  4 postgres postgres   47 Jun  2 14:35 ./
  6. etc/fstab을 편집하여 서버 fstab에 새 데이터베이스 마운트 포인트를 추가합니다.

  7. 다음 명령으로 데이터베이스를 시작합니다.

    rcpostgresql start
  8. Spacewalk 서비스를 시작합니다.

    spacewalk-service start

8. 손상된 루트 파티션에서 복구

루트 파티션이 충돌하는 경우 몇 가지 추가 단계를 통해 SUSE Manager 서버를 재시작할 수 있습니다. 이 섹션에서는 /var/lib/pgsql/var/spacewalk/에 마운트된 데이터베이스 및 채널에 대해 별도의 파티션을 사용하여 서버를 설정한 상황을 가정합니다.

시스템을 새로 설치한 후 대부분의 사용자 및 그룹은 다른 ID를 갖습니다. 대부분의 백업 시스템은 ID 대신 이름을 저장하고 올바른 소유권과 권한으로 파일을 복원합니다. 그러나 기존 파티션을 마운트하는 경우에는 소유권을 새 시스템에 맞춰야 합니다.

절차: 손상된 루트 파티션에서 복구
  1. SUSE Manager를 설치합니다. /var/spacewalk/var/lib/pgsql 파티션을 마운트하지 마십시오. 설치가 완료될 때까지 기다린 후 다음 단계로 진행하십시오.

  2. 데이터베이스를 종료합니다.

    rcpostgresql stop
  3. 서비스를 종료합니다.

    spacewalk-service stop
  4. /var/spacewalk/var/lib/pgsql 파티션을 마운트합니다.

  5. SUSE Manager 백업에 나열된 디렉토리를 복원합니다.

  6. 데이터베이스를 시작합니다.

    rcpostgresql start
  7. Spacewalk 서비스를 시작합니다.

    spacewalk-service start

이제 SUSE Manager가 데이터베이스 또는 동기화된 채널의 손실 없이 정상적으로 작동해야 합니다.

9. 데이터베이스 연결 정보

/etc/rhn/rhn.conf에서 다음 변수를 추가하거나 편집하여 SUSE Manager 데이터베이스에 연결하기 위한 정보를 설정합니다.

db_backend = postgresql
db_user = susemanager
db_password = susemanager
db_name = susemanager
db_host = localhost
db_port = 5432
db_ssl_enabled =