BBahmni 한국어 매뉴얼검색
한국어 번역 완료
한국어English

데이터 백업 및 복원 명령(Docker)

CentOS의 Bahmni에서 Docker의 Bahmni로 이전하려면 이 Wiki 페이지를 참조하십시오.관련 문서: CentOS의 Bahmni에서 Docker 기반 Bahmni Standard 또는 Lite로 업그레이드

Bahmni Lite ?? Bahmni Standard ??

Docker에서 실행 중인 서비스의 백업을 자동화하기 위해 데이터베이스, 환자 이미지, 문서 이미지, 업로드된 결과 등의 아티팩트를 백업하는 Bash 스크립트가 작성되었습니다. 공통 백업 유틸리티 스크립트는 bahmni-docker/backup_restore/backup_utils.sh에 있습니다.

?? ?? ??

백업 스크립트를 실행하기 전에 bahmni-lite 또는 bahmni-standard 하위 디렉터리의 해당 백업 스크립트에서 다음 항목을 수정하십시오.

1. BAHMNI_DOCKER_ENV_FILE

이 변수는 데이터베이스 이름, 자격 증명 등의 변수를 불러올 환경 파일을 지정하며 기본값은 .env입니다. .env가 아닌 다른 환경 파일을 사용하려면 bahmni-docker/bahmni-lite/backup_bahmni_lite.sh 또는 bahmni-docker/bahmni-standard/backup_bahmni_standard.sh를 열어 스크립트의 BAHMNI_DOCKER_ENV_FILE 값을 수정하십시오.

2. BACKUP_ROOT_FOLDER

이 변수는 백업 아티팩트를 저장할 위치를 지정하며 기본값은 ./backup-artifacts입니다. 다른 디렉터리를 백업 아티팩트의 루트 폴더로 사용하려면 bahmni-docker/bahmni-lite/backup_bahmni_lite.sh 또는 bahmni-docker/bahmni-standard/backup_bahmni_standard.sh를 열어 BACKUP_ROOT_FOLDER 값을 수정하십시오. 참고: 상대 경로보다 절대 경로 사용을 권장합니다.

스크립트가 생성하는 백업 아티팩트의 디렉터리 구조

백업 스크립트는 기본적으로 루트 폴더 안에 YYYY-MM-DD_HH-MM-SS 형식의 하위 폴더를 만들고 개별 서비스의 데이터베이스 백업 파일을 저장합니다. 파일 아티팩트는 루트 폴더 자체의 patient_images, document_images, uploaded_results, configuration_checksums 같은 하위 디렉터리에 저장됩니다. 파일 아티팩트도 개별 백업별로 분리하려면 파일 시스템 백업 명령에서 변수 이름을 BACKUP_ROOT_FOLDER에서 backup_subfolder_path로 변경하십시오.

백업 스크립트의 작동 방식

  1. 백업 스크립트는 먼저 docker compose exec 명령으로 컨테이너 내부에서 mysqldump 또는 pg_dump를 실행해 데이터베이스를 백업합니다.
  2. 그다음 docker compose cp를 실행하여 파일 시스템을 백업합니다.
  3. 기본적으로 선택한 배포판(lite 또는 standard)의 모든 아티팩트를 백업합니다. 실행 중이 아닌 컨테이너에는 오류 메시지를 표시하고 다음 백업 항목으로 진행합니다. 특정 서비스를 사용하지 않는다면 해당 백업 스크립트의 관련 줄을 주석 처리할 수도 있습니다.
  4. 스크립트는 백업을 시작하기 전에 컨테이너가 실행 중인지 확인합니다.
  5. 사용자 지정 서비스가 있거나 새 서비스의 추가 파일 시스템 또는 데이터베이스를 백업하려면 bahmni-docker/backup_restore/backup_utils.sh의 유틸리티 함수를 사용할 수 있습니다.

백업 스크립트 실행

  1. Bahmni를 실행하는 디렉터리로 이동합니다.
  2. cd bahmni-standard 또는 cd bahmni-lite
  3. 위 설명에 따라 스크립트의 변수를 수정합니다.
  4. 다음 명령으로 스크립트를 실행합니다.
  5. ./backup_bahmni_lite.sh (또는) ./backup_bahmni_standard.sh
  6. 이제 구성된 BACKUP_ROOT_FOLDER에 백업 아티팩트가 생성되는 것을 확인할 수 있습니다.

Bahmni Lite ?? Bahmni Standard ??

?? ?? ??

기본 bahmni-docker 저장소 또는 구현별 docker-compose 저장소를 복제합니다.

복원 스크립트를 실행하기 전에 bahmni-lite 또는 bahmni-standard 하위 디렉터리의 해당 복원 스크립트에서 다음 항목을 수정하십시오.

1. BAHMNI_DOCKER_ENV_FILE

이 변수는 데이터베이스 이름, 자격 증명 등의 변수를 불러올 환경 파일을 지정하며 기본값은 .env입니다. .env가 아닌 다른 환경 파일을 사용했다면 bahmni-docker/bahmni-lite/restore_bahmni_lite.sh 또는 bahmni-docker/bahmni-standard/restore_bahmni_standard.sh를 열어 BAHMNI_DOCKER_ENV_FILE 값을 수정하십시오.

환경 구성 파일의 변수 업데이트

기본 구성에는 데모 데이터베이스 이미지가 포함되므로 .env 파일에서 데이터베이스 구성 관련 변수 일부를 수정해야 합니다. 아래 표에 따라 값을 변경하십시오.

Variable NameValue to be updated
1TZThe time zone where your previous instance was running. Example: Asia/Kolkata
2OPENMRS_DB_IMAGE_NAMEmysql:5.6 (or) mysql:5.7 (Use based on what your previous installation has been running with)
3OPENELIS_DB_IMAGE_NAMEpostgres:9.6
4ODOO_DB_IMAGE_NAMEpostgres:9.6
5OPENELIS_DB_NAMEclinlims
6OPENELIS_DB_USERclinlims
7OPENELIS_DB_PASSWORDclinlims

복원에 필요한 디렉터리 구조

위 백업 스크립트의 기본 구성으로 백업했다면, 복원할 최신 데이터베이스 백업 파일을 타임스탬프 하위 디렉터리에서 backup-artifacts 루트 폴더로 복사하면 됩니다. 백업 아티팩트가 있는 전체 경로도 준비하십시오.

복원 스크립트의 작동 방식

  1. 복원 스크립트는 백업 파일이 있는 데이터베이스를 해당 데이터베이스 컨테이너에 먼저 복원합니다. docker compose exec 명령을 실행하여 파일 내용을 컨테이너 내부의 mysql 또는 psql 명령에 직접 입력합니다.
  2. 환자 이미지, 문서 이미지, 업로드된 결과 등의 파일 시스템 파일은 작은 Bash 컨테이너를 만들어 해당 볼륨 마운트로 복사합니다.
  3. 새 데이터베이스 복원을 추가하려면 복원 스크립트의 기존 restore_db 명령을 복사하고 함수에 전달되는 변수를 변경하십시오.
  4. 새 파일 시스템 복원을 추가하려면 다음을 수행합니다.
  5. - docker-compose 파일에 볼륨 마운트를 추가하고 필요한 서비스에 마운트합니다.
  6. - docker compose 파일의 restore_volumes 서비스에도 동일한 볼륨 마운트를 추가합니다.
  7. - bahmni-docker/backup_restore/restore_docker_volumes.sh를 열어 복원 아티팩트에서 볼륨 마운트로 내용을 복사하는 copy_from_restore_to_mount 함수 호출 항목을 추가합니다.

복원 스크립트 실행

  1. Bahmni를 실행하는 디렉터리로 이동합니다.
  2. cd bahmni-standard 또는 cd bahmni-lite
  3. 위 설명에 따라 스크립트의 BAHMNI_DOCKER_ENV_FILE 변수를 수정합니다.
  4. 아래 명령으로 스크립트를 실행합니다.
    ./restore_bahmni_lite.sh <restore-artifacts-folder-path>
    
    Example: ./restore_bahmni_lite.sh /bahmni-backup   --> Assuming you have backup-artifacts copied into /bahmni-backup directory
  5. <restore-artifacts-folder-path>는 디렉터리 구조에 맞게 백업 데이터가 배치된 위치입니다. 참고: 디렉터리의 절대 경로를 입력하십시오.
    ./restore_bahmni_standard.sh <restore-artifacts-folder-path>
    
    Example: ./restore_bahmni_standard.sh /bahmni-backup   --> Assuming you have backup-artifacts copied into /bahmni-backup directory
  6. Bahmni-Lite:
  7. 예: ./restore_bahmni_lite.sh /bahmni-backup --> backup-artifacts가 /bahmni-backup 디렉터리에 복사되어 있다고 가정]]>
  8. Bahmni-Standard:
  9. 예: ./restore_bahmni_standard.sh /bahmni-backup --> backup-artifacts가 /bahmni-backup 디렉터리에 복사되어 있다고 가정]]>

복원 스크립트는 전달된 restore-artifacts-folder-path 디렉터리에 있는 DB 백업 파일을 기준으로 데이터베이스 컨테이너를 하나씩 초기화합니다. 예를 들어 openmrsdb_backup.sql만 추가했다면 openmrsdb 컨테이너만 시작되고 해당 데이터베이스가 복원됩니다.

그다음 복원 스크립트는 환자 이미지, 문서 이미지 등의 Bahmni 파일 시스템 백업을 필요한 볼륨 마운트에 불러옵니다.

DB backup file for $db_name not found at ${db_backup_file_path}. Skipping restore 또는 Source directory for $artifact_name does not exist or is empty. So skipping restore for $artifact_name. 같은 오류 로그가 표시될 수 있습니다. 내용을 주의 깊게 확인하십시오. 해당 구성 요소를 사용하지 않거나 특정 디렉터리를 복원하지 않으려는 경우에는 이 로그를 무시해도 됩니다.

복원 스크립트가 완료되면 docker ps -a로 실행 중인 컨테이너 목록을, docker volume ls로 생성된 볼륨 목록을 확인할 수 있습니다. 데이터베이스가 올바르게 복원되었는지 검증하려면 컨테이너에 exec로 접속한 뒤 데이터베이스에 연결해 확인하십시오.

Bahmni 애플리케이션 구성 요소 시작

위 단계가 완료되면 데이터베이스와 Bahmni 파일이 복사되어 지정 위치에 볼륨으로 마운트됩니다. 다음 단계는 애플리케이션 컨테이너를 시작하는 것입니다. 단계적으로 진행하는 것을 권장합니다.

Bahmni Lite 애플리케이션 서비스 시작

EMR 구성 요소 시작:

Docker 기반 Bahmni 업그레이드를 처음 테스트할 때는 Bahmni 모듈을 포함한 OpenMRS, Bahmni Web, Appointments, Implementer Interface 등의 Bahmni EMR 구성 요소부터 시작합니다. docker compose --profile emr up -d 또는 docker compose --profile emr --env-file <you env file name> up -d를 실행해 서비스를 시작할 수 있습니다.

컨테이너가 부팅되고 필요한 마이그레이션이 실행될 때까지 기다립니다. docker compose logs -f openmrs 또는 ./run-bahmni.sh 유틸리티 스크립트로 개별 컨테이너 로그를 확인할 수도 있습니다.

애플리케이션은 https://localhost 또는 https://<machine-ip/public-ip>에서 접속할 수 있습니다. 구현별 구성에 따라 EMR 흐름을 검증하십시오.

EMR 흐름에 문제가 없으면 필요에 따라 다른 서비스를 시작합니다.

환자 문서 접근 문제

환자 문서, uploaded-results 또는 uploaded-files에 접근할 때 403 Forbidden 또는 404 Not found 오류가 발생한다면 복원된 파일의 권한 문제일 가능성이 큽니다. openmrs 컨테이너에서 아래 명령을 실행하여 해결할 수 있습니다.

docker compose exec -it openmrs bash
setfacl -R -d -m o::rx -m g::rx /home/bahmni/document_images
setfacl -R -d -m o::rx -m g::rx /home/bahmni/uploaded_results
setfacl -R -d -m o::rx -m g::rx /home/bahmni/uploaded-files
chmod -R 755 /home/bahmni/document_images
chmod -R 755 /home/bahmni/uploaded_results
chmod -R 755 /home/bahmni/uploaded-files

Reports ?? ?? ??

다음 명령을 실행하여 Reports 서비스를 시작할 수 있습니다.

docker compose --profile reports up -d ?? docker compose --profile reports --env-file <you env file name> up -d.

애플리케이션은 https://localhost 또는 https://<machine-ip/public-ip>에서 접속할 수 있습니다. 이전 시스템과 새 시스템의 보고서 데이터를 비교해 검증하십시오.

Crater ?? ?? ??

다음 명령을 실행하여 Crater와 crater-atomfeed 서비스(EMR과 Crater 간 통합 서비스)를 시작할 수 있습니다.

docker compose --profile crater up -d ?? docker compose --profile crater --env-file <you env file name> up -d.

애플리케이션은 https://localhost:444 또는 https://<machine-ip/public-ip>:444에서 접속할 수 있습니다. Atom Feed를 통해 환자가 올바르게 동기화되는지 검증하십시오.

AWS EKS/Kubernetes 버전의 Bahmni를 로컬 Docker 버전으로 백업하려면 Running Bahmni Lite with DB backup from cloud (Docker)를 참조하십시오.관련 문서: 클라우드 DB 백업으로 Bahmni Lite 실행(Docker)

로컬, 테스트 또는 사전 운영 환경용 팁(운영 환경에서는 사용 금지)

예상대로 작동하지 않거나 처음부터 다시 시작하려면 docker compose --profile bahmni-lite down -v 또는 docker compose --profile bahmni-standard down -v를 실행해 환경을 정리한 다음 복원 절차를 처음부터 다시 시작할 수 있습니다.

1관련 문서: Docker에서 Bahmni 실행

원문 정보

Bahmni Wiki · CC BY-SA 4.0

원문 보기 ↗