자체 관리형 업그레이드

자체 관리형 업그레이드 (Self-managed Upgrade)

ClickHouse 자체 관리형 배포에서 서버를 업그레이드하는 방법을 안내해요. 일반 지침, 권장 계획, 바이너리 업그레이드 절차를 다뤄요.

출처: 문서

본문

ClickHouse 업그레이드 개요

이 문서에는 다음이 포함돼요:

  • 일반 지침
  • 권장 계획
  • 시스템의 바이너리 업그레이드에 대한 구체사항

일반 지침

다음 노트는 계획을 세우고, 문서 후반부에서 우리가 드리는 권고 사항의 이유를 이해하는 데 도움이 될 거예요.

ClickHouse 서버를 ClickHouse Keeper 또는 ZooKeeper와 별도로 업그레이드하기

ClickHouse Keeper나 Apache ZooKeeper에 필요한 보안 수정이 없는 한, ClickHouse 서버를 업그레이드할 때 Keeper를 업그레이드할 필요는 없어요. 업그레이드 과정에서 Keeper 안정성이 요구되므로, Keeper 업그레이드를 고려하기 전에 ClickHouse 서버 업그레이드를 먼저 완료하세요.

마이너 버전 업그레이드는 자주 적용하기

항상 가장 최신 마이너 버전이 출시되자마자 업그레이드하는 것을 강력히 권장해요. 마이너 릴리스에는 호환성이 깨지는 변경이 없지만 중요한 버그 수정(그리고 보안 수정도 있을 수 있음)이 포함돼 있거든요.

실험적 기능은 대상 버전이 설치된 별도 서버에서 테스트하기

실험적 기능의 호환성은 어떤 방식으로든 언제든 깨질 수 있어요. 실험적 기능을 사용 중이라면 변경 로그를 확인하고, 대상 버전이 설치된 별도 ClickHouse 서버를 구성해서 거기서 실험적 기능 사용을 테스트하는 것을 고려하세요.

다운그레이드 (Downgrades)

업그레이드한 후 새 버전이 의존하는 어떤 기능과 호환되지 않는다는 것을 알게 되면, 새 기능을 사용하기 시작하지 않았다면 비교적 최근(1년 미만) 버전으로 다운그레이드할 수 있을지도 몰라요. 새 기능을 사용하기 시작하면 다운그레이드는 작동하지 않아요.

클러스터의 여러 ClickHouse 서버 버전

우리는 1년 호환성 창(2개의 LTS 버전 포함)을 유지하려고 노력해요. 즉, 두 버전 사이의 차이가 1년 미만(또는 두 버전 사이 LTS 버전이 2개 미만)이라면 두 버전은 클러스터에서 함께 작동해야 해요. 그러나 분산 쿼리 속도 저하, ReplicatedMergeTree의 일부 백그라운드 작업의 재시도 가능한 오류 같은 사소한 문제가 발생할 수 있으므로, 클러스터의 모든 멤버를 가능한 한 빨리 같은 버전으로 업그레이드하는 것이 권장돼요. 릴리스 날짜 차이가 1년을 넘는 서로 다른 버전을 같은 클러스터에서 실행하는 것은 절대 권장하지 않아요. 데이터 손실을 기대하지는 않지만, 클러스터가 사용 불가능해질 수 있어요. 버전 차이가 1년을 넘는 경우 기대해야 하는 문제는 다음과 같아요:

  • 클러스터가 작동하지 않을 수 있어요
  • 일부(또는 전부) 쿼리가 임의의 오류로 실패할 수 있어요
  • 로그에 임의의 오류/경고가 나타날 수 있어요
  • 다운그레이드가 불가능할 수 있어요

점진적 업그레이드 (Incremental upgrades)

현재 버전과 대상 버전의 차이가 1년을 넘는 경우 다음 중 하나를 권장해요:

  • 다운타임을 가진 업그레이드(모든 서버 중지, 모든 서버 업그레이드, 모든 서버 실행)
  • 또는 중간 버전(현재 버전보다 1년 미만 최신인 버전)을 통한 업그레이드

권장 계획

다음은 제로 다운타임 ClickHouse 업그레이드를 위한 권장 단계예요:

  1. 설정 변경이 기본 /etc/clickhouse-server/config.xml 파일이 아니라 /etc/clickhouse-server/config.d/에 있는지 확인하세요. /etc/clickhouse-server/config.xml은 업그레이드 중 덮어써질 수 있기 때문이에요.
  2. 변경 로그에서 주요 변경 사항을 읽어보세요(대상 릴리스에서 현재 릴리스로 거슬러 올라가며).
  3. 업그레이드 전에 할 수 있는 주요 변경 사항의 업데이트와, 업그레이드 후에 해야 할 변경 사항 목록을 만드세요.
  4. 각 샤드에서 업그레이드하는 동안 살려둘 레플리카 하나 이상을 식별하세요.
  5. 업그레이드할 레플리카에서 한 번에 하나씩:
    • ClickHouse 서버 종료
    • 서버를 대상 버전으로 업그레이드
    • ClickHouse 서버 기동
    • Keeper 메시지가 시스템 안정을 나타낼 때까지 대기
    • 다음 레플리카로 진행
  6. Keeper 로그와 ClickHouse 로그에서 오류를 확인하세요.
  7. 4단계에서 식별한 레플리카를 새 버전으로 업그레이드하세요.
  8. 1~3단계에서 만든 변경 목록을 참고해 업그레이드 후 해야 할 변경을 적용하세요.

복제 환경에서 여러 버전의 ClickHouse를 실행할 때 이 오류 메시지가 나타나는 것은 정상이에요. 모든 레플리카가 같은 버전으로 업그레이드되면 더 이상 보이지 않을 거예요.

MergeFromLogEntryTask: Code: 40. DB::Exception: Checksums of parts don't match:
hash of uncompressed files doesn't match. (CHECKSUM_DOESNT_MATCH)  Data after merge is not
byte-identical to data on another replicas.

ClickHouse 서버 바이너리 업그레이드 절차

ClickHouse를 deb 패키지에서 설치했다면 서버에서 다음 명령을 실행하세요:

$ sudo apt-get update
$ sudo apt-get install clickhouse-client clickhouse-server
$ sudo service clickhouse-server restart

권장 deb 패키지 이외의 방법으로 ClickHouse를 설치했다면 적절한 업데이트 방법을 사용하세요.

한 샤드의 모든 레플리카가 오프라인이 되는 순간이 없는 한, 여러 서버를 한 번에 업데이트할 수 있어요.

이전 버전의 ClickHouse를 특정 버전으로 업그레이드하기: 예를 들어 xx.yy.a.b가 현재 안정 버전이에요. 최신 안정 버전은 여기에서 찾을 수 있어요.

$ sudo apt-get update
$ sudo apt-get install clickhouse-server=xx.yy.a.b clickhouse-client=xx.yy.a.b clickhouse-common-static=xx.yy.a.b
$ sudo service clickhouse-server restart

더 알아보기 (Learn more)