백업 Gitlab을 확장하는 방법?


13

온-프레미스 Gitlab에서 3TB 백업을 수행하는 방법에 대해 Gitlab 지원을 요청할 때 tarball을 생성하는 을 사용하여 응답합니다 .

이것은 모든 수준에서 나에게 잘못 솔기됩니다. 이 tarball에는 postgres 덤프, 도커 이미지, 저장소 데이터, GIT LFS 등 구성 등이 포함됩니다. KB의 매우 동적 인 데이터와 함께 TB의 정적 데이터를 백업하는 것은 적합하지 않습니다. 그리고 우리는 매시간마다 백업을하고 싶습니다.

질문

일관된 백업을 얻기 위해 다른 사람들이 어떻게하는지 알고 싶습니다.

Linux의 ZFS는 솔루션의 일부라면 저에게 좋을 것입니다.


3
왜 이것이 잘못 되었습니까? Gitlab을 완전히 백업하여 완전히 복원합니다. 나는 이것이 잘못이라고 생각하지 않습니다. 물론 그것은 증분 백업보다 훨씬 더 많은 공간을 사용하지만 백업 크기는 신경 쓰지 않습니다.
Lenniey

3
1 시간마다 백업을하는 것은 들어 본 적이 없지만, 3 시간 이내에 3TB를 만드는 것은 불가능합니다. 그리고 하루 동안 만 백업하면 ~ 100TB가되며, 여기서 데이터에 10MB 만 변경 될 수 있습니다.
Sandra

이것은 일반적인 백업이 아니라 빈번한 백업에 대한 다른 질문입니다.
Lenniey

5
자신의에서 공식 문서 그들은 심지어 느리다는 것을 자신의 방법을 언급하고 대안을 제시 : If your GitLab server contains a lot of Git repository data you may find the GitLab backup script to be too slow. In this case you can consider using filesystem snapshots as part of your backup strategy.나는 비록 경험을 말할 수 없다. 하지만 곧 이와 같은 내용을 포함시켜야 할 수도 있습니다.
Lenniey

Gitlab은 설정 파일과 백업 플래그에 옵션을 제공하여 섹션을 제외하거나 객체 저장소에 이미지와 아티팩트를 저장할 수 있습니다
ssube

답변:


10

백업 사이의 짧은 시간 (1 시간) 동안 가장 좋은 방법은 파일 시스템 수준 스냅 샷 send/recv 지원 에 의존 하는 것입니다.

ZoL 을 사용하는 것이 환경에서 문제가되지 않으면 사용 하는 것이 좋습니다. ZFS는 매우 강력한 파일 시스템이며 제공하는 모든 추가 기능 (예 : 압축)을 정말 좋아합니다. 와 결합 sanoid/syncoid하면 매우 강력한 백업 전략을 제공 할 수 있습니다. 주요 단점은 메인 라인 커널에 포함되어 있지 않으므로 별도로 설치 / 업데이트해야한다는 것입니다.

또는 실제로 기본 제공 항목으로 제한해야하는 경우 BTRFS를 사용할 수 있습니다. 그러나 (많은) 단점과 피타 를 이해해야합니다 .

마지막으로, 대안 솔루션을 사용하는 것입니다 lvmthin: (에 예를 들어, 정기적으로 백업을 수행하는 snapper(예를 들어, 타사 도구에 의존) bdsync, blocksync/ 선박 델타 만 복사 등).

다른 방법은을 통해 독립 스냅 샷을 생성하는 두 개의 복제 된 시스템 (통해 DRBD) 을 갖는 것 lvmthin입니다.


postgres는 어떻습니까? gitlab과 postgres를 잠시 중단하여 일관된 shapshot을 만들 수 있습니까? 스냅 샷을 만드는 동안 postgres를 읽기 전용 모드로 전환 할 수 있다면 이상적입니다.
산드라

4
파일 시스템 스냅 샷에서 복원하는 @Sandra는 일반적인 "호스트 충돌"시나리오로 postgresql (및 기타 올바르게 작성된 데이터베이스)으로 나타나 자체 복구 절차를 트리거합니다 (예 : 부분적으로 작성된 페이지를 주 데이터베이스에 커밋). 즉, 스냅 샷을 만들 때 postgres를 읽기 전용 모드로 전환 할 필요가 없습니다.
shodanshok

14

백업중인 내용을 검토하고 "다중 경로"접근 방식을 사용합니다. 예를 들어 백업 서버에서 Git pull을 통해 지속적으로 실행하여 Git 리포지토리를 백업 할 수 있습니다. 그것은 diff 만 복사하고 모든 Git 저장소의 두 번째 사본을 남깁니다. 아마도 API로 새로운 저장소를 감지 할 수있을 것입니다.

그리고 "내장"백업 절차를 사용하여 문제 등을 백업하십시오. 3TB가이 부분에서 제공되어 의심 할 여지없이 아주 적은 비용으로 백업을 수행 할 수 있습니다. 복제와 함께 웜 대기 모드로 PostgreSQL 데이터베이스를 설정할 수도 있습니다.

3TB는 Docker 레지스트리의 컨테이너 이미지에서 비롯된 것일 수 있습니다. 그것들을 백업해야합니까? 그렇다면 더 나은 접근 방식이있을 수 있습니다.

기본적으로 백업을 구성하고 다양한 부분에서 데이터를 백업하는 것이 무엇인지 실제로 확인하는 것이 좋습니다.

GitLab의 백업 도구조차도 Docker Registry와 같은 시스템의 특정 부분을 포함 / 제외하는 옵션이 있습니다.


1
git pulls는 완벽한 증분 백업이 아닙니다. git push --force구현 방법에 따라 백업을 중단하거나 기록을 지 웁니다.
user371366

@ dn3s이므로 메인 저장소에서 항상 git push --force를 비활성화하십시오. 누군가 역사를 바꾸고 싶다면 자신의 포크를 만들고 그로 인한 모든 위험을 감수해야합니다.
charlie_pl

2
그 괜찮 수 있습니다 복제 ,하지만 당신은 백업의 무결성 올바른 응용 프로그램 동작에 의존하고 싶지 않아요. 응용 프로그램에 버그가 있거나 잘못 구성되어 있으면 어떻게됩니까? 악의적 인 사용자가 서버를 손상 시키면 어떻게됩니까? 응용 프로그램에 백업 호스트에서 컨텐츠를 제거 할 수있는 기능이 있으면 증분 원격 백업의 많은 값이 손실됩니다.
user371366
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.