이전 포스팅에서 AWS Linux 로 Gitlab CE를 구축하는 방법을 알아봤다.
(구축 방법 링크: https://nulls.co.kr/project/450)
하지만 필자는 구축뿐만 아니라 기존에 있는 데이터들도 전부 백업 및 복구해야 했다.
백업 및 복구하는 방법은 Gitlab CE에 기본적으로 기능을 제공하고 있어 하기 편했다.
- 백업 및 복구하려면 새롭게 생성한 Gitlab Community Edition 버전은 백업할 Gitlab Community Edition 버전과 같아야 한다.
버전을 알고 싶다면 아래 명령어를 입력하면 된다.
sudo gitlab-rake gitlab:env:info
명령어를 치고 좀 오래 기다려야 한다. (바로 안 나오는 경우가 있다)
아래 사진을 보면 Version이 뜬다.
예) 특정 버전 다운로드 방법
gitlab-ce와 버전을 같이 입력하는데, 구분은 "-"로 한다.
필자는 12.7.5가 필요해서 gitlab-ce-12.7.5를 했다.
sudo yum install gitlab-ce-12.7.5
gitlab 버전 12.2 이상
sudo gitlab-backup create
gitlab 버전 12.1 이하
sudo gitlab-rake gitlab:backup:create
백업된 파일은 /var/opt/gitlab/backups 경로에 타임 스탬프값_버전_gitlab_backup.tar 형태로 백업파일이 생성된다.
또한 gitlab-secrets.json, gitlab.rb 나중에 이전되는 Amazon Linux 2 서버에 옮겨야 하니 따로 보관해 놓자.
이 2개 파일은 /etc/gitlab 폴더 안에 있다.
i. 새롭게 생성한 Amazon Linux 2 서버에 순정상태의 gitlab을 한번 기동하여 동작시켜준다.
(참고 링크: https://nulls.co.kr/project/450)
ii. 별도로 저장해 놓은 gitlab-secrets.json, gitlab.rb 파일을 새롭게 생성한 Amazon Linux 2 서버 /etc/gitlab 폴더에 기존에 있는 파일을 덮어쓴다.
iii. 백업한 Gitlab CE .tar 압축 파일을 새로운 Amazon Linux 2 서버 /var/opt/gitlab/backups 폴더에 넣어준다.
iv. 데이터베이스와 연결되는 프로세스들을 정지한다.
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
v. 복원을 수행하는 명령어를 실행한다.
백업대상지정 문자열은 예를 들어 1647234996_2022_03_14_12.7.5_gitlab_backup.tar 라면
1647234996_2022_03_14_12.7.5 까지만 입력해줘도 된다.
gitlab 버전 12.2 이상
sudo gitlab-backup restore BACKUP=백업대상지정
# 예
# sudo gitlab-backup restore BACKUP=1647234996_2022_03_14_12.7.5
gitlab 버전 12.1 이하
sudo gitlab-rake gitlab:backup:restore BACKUP=백업대상지정
# 예
# sudo gitlab-rake gitlab:backup:restore BACKUP=1647234996_2022_03_14_12.7.5
vi. 중간에 데이터베이스 초기화가 필요하다 ~~ 이야기가 나오는데, 적절히 yes 로 응답하자.
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
각 프로젝트에 .git 폴더에 config 파일을 텍스트 편집기로 실행하여 url 부분 @ 뒤쪽 혹은 https 면 주소를 새로운 DNS 주소로 바꾼다.
또한 만약 ssh 방식으로 clone 을 받았다면 안되는 경우가 있는데 이럴 때는 ssh 이후 주소 쳐서 실행 한번 해 주면 잘 된다.
ssh git@새로운서버주소
참고 링크: