Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CBRD-25469] 운영환경에서 백업본을 기반으로 신규 DB명으로 복구하는 스크립트(restore_to_newdb.sh)추가 #5591

Open
wants to merge 15 commits into
base: develop
Choose a base branch
from

Conversation

bagus-kim
Copy link

http://jira.cubrid.org/browse/CBRD-25469

[Describe]
사용자 실수 및 시스템 오류로 인해 데이터 복구가 필요한 경우, "백업본"을 가지고 운영 중인 서버에 복구하기 위해서는 추가계정, 추가 엔진 설치등의 번거로운 작업이 선행되어야 한다. 이에 번거로운 선행 작업없이 CUBRID 설치된 계정(운영 계정)에서 백업본을 가지고 복구 후 신규 DB명으로 변경할 수 있는 스크립트를 제공한다.

[Usage]
restore_to_newdb.sh : rename the database name after restoring the database
usage : sh restore_to_newdb.sh [OPTION] backuped-database-name new-database-name

OPTIONS:
-F path directory for new database (default: current directory)
-B path directory for backup volumes (default: current directory)
-d date restore to specific date (dd-mm-yyyy:hh:mm:ss or 'backuptime')
-l level backup level (0, 1, 2); default: 0 (full backup)
-p partial recovery if any log archive is absent
-k path path of key file (_keys) for tde (default: current)

EXAMPLES
restore_to_newdb.sh backupdb newdb

[Test Scenario]

  1. 인자가 없는 경우 usage출력
  2. 1개의 인자만 입력한 경우, usage출력
  3. 2개를 초과한 입력값이 들어온 경우, usage출력
  4. fullbackup파일이 존재, 기존에 없는 DB명으로 복구하는 경우 : 정상수행
  5. 옵션이 뒤에 입력된 경우 : 정상수행
  6. 스크립트 현 경로에 백업파일이 존재하지 않은 경우 : 에러 출력으로 정상
  7. -F의 옵션을 현 디렉토리로 수행한 경우 : 정상수행
  8. -F옵션이 없는 경우 : 정상수행
  9. -d 30-10-2024:19:20:00 인 경우 : 정상수행
  10. -l의 0이 기본값, -l 1로 옵션을 준 경우 : 완료
  11. -p 를 준 경우
  12. -k에서 key파일명이 누락된 경우 : 에러 출력으로 정상
  13. -k에 정상적인 디렉토리와 파일명이 기입된 경우 : 정상수행
  14. key를 백업파일과 다르게 기입한 경우 : 정상수행
  15. 명령어 수행 수 db_date.log가 남겨져 있는가 : 정상
  16. 작업 디렉토리내에 databases.txt 백업 되어져 있는가 : 정상
  17. 작업 디렉토리내에 중복될 경우 databases.txt.bak이 존재하는가 : 정상

[Request]
코드 리뷰 및 다른 case의 테스트가 필요하다면 리뷰 요청 드립니다.

@kisoo-han
Copy link
Contributor

  • 3개의 commit comment가 동일하네요. 각 commit의 comment는 전체 PR에 대한 것보다 각 commit의 수정을 잘 표현하는 것이 좋겠습니다 (다음 commit부터 한번 고려해보세요)
    예:
[CBRD-25469] code style
[CBRD-25469] add license
  • 오른쪽 reviewer 밑의 'assignee'는 'assign yourself'로 선택해주세요.

@bagus-kim bagus-kim self-assigned this Nov 1, 2024
@kisoo-han
Copy link
Contributor

(fd70432) commit을 보면 2개의 수정을 1개의 commit으로 하셨는데, 리뷰어와의 원할한 interaction을 위해서는 이를 2개의 commit으로 분리해서 하는게 좋을듯 합니다. 그러면 각 commit에 대한 수정 사항이 확 들어올듯요. 몰아서 하는 것 보다는 각 commit이 단일 주제의 수정을 다루었으면 합니다.

  1. show_usage 수정
  2. shell 변수명 수정

너무 사소한 것까지 예기해서 좀 그렇긴합니다만, 그냥 느끼는 거 comment 하니 판단은 알아서 하십시요.

2. 작업파일 존재 확인을 위한 check_files() 추가
3. check_volpath()를 추가하여 databases.txt의 등록된 경로를 -F인자값으로 설정한 경우 Error
4. check_dbname_uniqueness() 추가하여 databases.txt에 등록된 db-name를 tobe_dbname으로 설정한 경우 Error
5. parse_options() 수정
	1) key파일 검색 부분 수정
	2) asis_dbname과tobe_dbname 필수 인자값 확인
	3) asis_dbname과tobe_dbname이 동일한 경우 Error발생하도록 수정
	4) check_volpath로 -F의 인자값인 newdb_path를 점검
	5) check_dbname_uniqueness로 tobe_dbname의 유일성을 점검
6. verify_files()추가 : 파일 존재여부 확인
7. verify_backup_files
8. main수정
Copy link
Contributor

@kisoo-han kisoo-han left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!
Congratulations on your successful 1st PR.

Copy link
Contributor

@mhoh3963 mhoh3963 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다.
머지하고 버그가 발견되면 수정하는 것으로 하시지요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants