백업 및 복구
데이터 손실을 방지하려면 SUSE Multi-Linux Manager 설치를 정기적으로 백업해야 합니다. SUSE Multi-Linux Manager는 설치된 프로그램 및 구성뿐만 아니라 데이터베이스를 활용하기 때문에 설치의 모든 구성 요소를 백업하는 것이 중요합니다. 이 장에서는 백업해야 하는 파일에 대해 설명하고 데이터베이스 백업을 관리하는 smdba
도구를 소개합니다. 또한, 시스템 오류가 발생한 경우 백업에서 복원하는 방법에 대한 정보도 포함되어 있습니다.
백업 방법과 관계없이 현재 설치 작업 중 사용하는 공간의 세 배 이상을 사용할 수 있어야 합니다. 공간이 부족하면 백업이 실패할 수 있으므로 수시로 확인하십시오. |
다음 섹션에서는 SUSE Multi-Linux Manager 컨테이너 내의 데이터 백업에 대해 설명합니다.
1. SUSE Multi-Linux Manager 백업
SUSE Multi-Linux 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과 같은 사용자 정의 데이터가 포함된 모든 디렉토리입니다.
또한, 데이터베이스도 백업해야 하며, 이 작업은 |
-
컨테이너 호스트에서 루트 권한으로
mgradm install podman
을 사용하여 SUSE Multi-Linux Manager 서버를 다시 배포합니다. -
SUSE Multi-Linux Manager Web UI를 사용하거나 컨테이너의 명령 프롬프트에서
mgr-sync
도구를 사용하여 SUSE Multi-Linux Manager 리포지토리를 다시 동기화하십시오. 제품을 다시 등록하거나 등록 및 SSL 인증서 생성 섹션을 건너뛸 수 있습니다. -
컨테이너에서
/root/ssl-build/rhn-org-httpd-ssl-key-pair-MACHINE_NAME-VER-REL.noarch.rpm
패키지를 다시 설치하십시오. -
rhn-search
서비스가 다음에 시작될 때 검색 인덱스의 재생성을 예약하십시오. 이 명령은 디버그 메시지만 생성하고 오류 메시지는 생성하지 않습니다. 컨테이너에 다음을 입력하십시오.rhn-search cleanindex
-
컨테이너 호스트에서
/var/lib/containers/storage/volumes/var-spacewalk/_data/packages/
를 복원해야 하는지 확인합니다./var/lib/containers/storage/volumes/var-spacewalk/_data/packages/
가 백업에 없는 경우, 이를 복원해야 합니다. 소스 리포지토리를 사용할 수 있는 경우, 전체 채널 동기화를 통해/var/lib/containers/storage/volumes/var-spacewalk/_data/packages/
를 복원할 수 있습니다.mgrctl exec -ti -- mgr-sync refresh --refresh-channels
2. smdba로 데이터베이스 관리
The smdba
tool is used for managing a local PostgreSQL database. It allows you to back up and restore your database, and manage backups. It can also be used to check the status of your database, and perform administration tasks, such as restarting. For more information about the smdba
tool, see Database CLI Tool.
smdba
도구는 로컬 PostgreSQL 데이터베이스에서만 작동하며, 원격으로 액세스되는 데이터베이스 또는 Oracle 데이터베이스에서는 작동하지 않습니다.
서버 컨테이너 내부의 셸에 액세스하려면 컨테이너 호스트에서 |
다음을 사용하여 데이터베이스의 런타임 상태를 확인합니다.
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
도구는 아카이브를 관리하여 가장 최근 백업과 로그의 현재 아카이브만 유지합니다. 로그 파일의 최대 파일 크기는 16MB이므로 파일이 이 크기에 도달하면 새 로그 파일이 생성됩니다. 새 백업을 생성할 때마다 디스크 공간을 확보하기 위해 이전 백업이 제거됩니다. 스토리지를 효과적으로 관리하고 실패에 대비하여 항상 백업을 준비할 수 있도록 호스트 시스템에서 systemd 타이머를 사용하여 smdba
백업을 예약하는 것이 좋습니다.
3.1. 수동 데이터베이스 백업 수행
서버 컨테이너 내부의 셸에 액세스하려면 컨테이너 호스트에서 |
smdba
도구는 컨테이너 셸에서 직접 실행할 수 있습니다. 설치 직후 또는 구성을 크게 변경한 경우 수동 데이터베이스 백업을 실행하는 것이 좋습니다.
|
-
백업을 위한 영구 스토리지 공간을 할당하십시오. 이 예제에서는 컨테이너의
/var/spacewalk/
에 있는 디렉토리를 사용합니다. 이 디렉토리는 영구 백업 위치가 되므로 서버에서 항상 액세스할 수 있어야 합니다. 이 디렉토리는 영구 스토리지에 위치하며, 자세한 내용은 Persistent Container Volumes에서 확인할 수 있습니다. -
SUSE Multi-Linux Manager 컨테이너 호스트의 명령 프롬프트에서 루트 권한으로 서버 컨테이너를 입력합니다
mgrctl term
-
컨테이너 내에서 다음 단계를 실행하십시오.
-
백업 위치에서 백업을 위한 디렉토리를 생성합니다.
루트로 다음을 수행합니다.
install -d -o postgres -g postgres -m 700 /var/spacewalk/db-backup
-
처음으로 백업을 생성하려면
enable
옵션을 설정하고smdba backup-hot
명령을 실행합니다. 그러면 지정된 디렉토리에 백업이 생성되고 필요한 경우 데이터베이스가 다시 시작됩니다.smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup
이 명령은 디버그 메시지를 생성하고 출력하여 완료됩니다.
INFO: Finished
-
백업 파일이
/var/spacewalk/db-backup
디렉토리에 있는지 확인하여 백업 성공 여부를 확인합니다.
-
3.2. 자동 백업 일정 예약하기
smdba
를 사용하면 데이터베이스 백업을 수행하기 위해 시스템을 종료할 필요가 없습니다. 그러나 대규모 작업이기 때문에 백업이 실행되는 동안 데이터베이스 성능이 저하될 수 있습니다. 중단을 최소화하기 위해 트래픽이 적은 시간에 정기 데이터베이스 백업을 예약하는 것이 좋습니다.
백업에 사용할 수 있는 공간은 현재 데이터베이스 크기의 3배 이상이어야 합니다. 현재 데이터베이스 크기는 컨테이너 호스트에서 다음을 실행하여 확인할 수 있습니다.
|
-
SUSE Multi-Linux Manager 컨테이너 호스트의 명령 프롬프트에서 루트 권한으로 서버 컨테이너를 입력합니다
mgrctl term
-
컨테이너 내에서 다음 단계를 실행하십시오.
-
백업 위치에서 백업용 디렉토리를 생성합니다. 루트 권한으로 다음을 입력합니다.
install -d -o postgres -g postgres -m 700 /var/spacewalk/db-backup
-
-
컨테이너 호스트에서 루트 권한으로
/etc/systemd/system/server-db-backup.service
에 시스템 단위 파일을 생성하고 내용을 입력합니다.[Unit] Description="Server backup service" [Service] ExecStart=mgrctl exec "smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup"
-
다음 내용으로
/etc/systemd/system/server-db-backup.timer
에 systemd 타이머 파일을 생성합니다.[Unit] Description="Run server database backup relative to activation time" [Timer] OnCalendar=Mon..Sun *-*-* 2:00:00 Unit=server-db-backup.service [Install] WantedBy=multi-user.target
-
모든 구성이 올바른지 확인합니다.
systemd-analyze verify /etc/systemd/system/server-db-backup.*
-
타이머를 활성화합니다.
systemctl enable --now server-db-backup.timer
4. 백업에서 복원
mdba
도구를 사용하여 실패 시 백업에서 복원할 수 있습니다.
-
SUSE Multi-Linux Manager 컨테이너 호스트의 명령 프롬프트에서 루트 권한으로 서버 컨테이너를 입력합니다
mgrctl term
-
컨테이너 내에서 다음 단계를 실행하십시오.
-
데이터베이스를 종료합니다.
smdba db-stop
-
복원 프로세스를 시작하고 완료될 때까지 대기합니다.
smdba backup-restore start
-
데이터베이스를 재시작합니다.
smdba db-start
-
RPM과 데이터베이스에 차이가 있는지 확인합니다.
spacewalk-data-fsck
-
5. 아카이브 로그 설정
아카이브 로깅을 사용하면 데이터베이스 관리 도구 smdba
를 사용하여 핫 백업을 수행할 수 있습니다. 기본으로 제공되는 데이터베이스가 있는 SUSE Multi-Linux 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
하위 명령을 사용하여 이미 사용 중인 테이블 공간에 대한 보고서를 확인할 수 있습니다. 예는 다음과 같습니다.
mgrctl exec 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
하위 명령을 사용하십시오. 그러면 테이블과 해당 크기가 제공됩니다. 예는 다음과 같습니다.
mgrctl exec 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. 데이터베이스 연결 정보
컨테이너 내부의 /etc/rhn/rhn.conf
에서 다음 변수를 추가하거나 편집하여 SUSE Multi-Linux Manager 데이터베이스에 연결하기 위한 정보를 설정할 수 있습니다.
db_backend = postgresql db_user = susemanager db_password = susemanager db_name = susemanager db_host = localhost db_port = 5432 db_ssl_enabled =