Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

remoteSecure를 사용하여 자가 관리형 ClickHouse와 ClickHouse Cloud 간에 마이그레이션하기

자가 관리형 ClickHouse 마이그레이션

이 가이드에서는 자가 관리형 ClickHouse 서버에서 ClickHouse Cloud로 마이그레이션하는 방법과 ClickHouse Cloud 서비스 간에 마이그레이션하는 방법을 설명합니다. remoteSecure 함수는 원격 ClickHouse 서버에 액세스할 수 있도록 SELECTINSERT 쿼리에서 사용됩니다. 이를 통해 SELECT가 포함된 INSERT INTO 쿼리만 작성하면 테이블을 간단히 마이그레이션할 수 있습니다.

자가 관리형 ClickHouse에서 ClickHouse Cloud로 마이그레이션하기

자가 관리형 ClickHouse 마이그레이션

원본 테이블이 세그먼트로 나뉘어 있거나 복제되어 있는지와 관계없이, ClickHouse Cloud에서는 대상 테이블만 생성하면 됩니다(이 테이블의 Engine 매개변수는 생략할 수 있으며, SharedMergeTree가 테이블 엔진으로 자동 선택됩니다). 또한 ClickHouse Cloud가 수직 및 수평 스케일링을 자동으로 처리합니다. 테이블을 어떻게 복제하고 세그먼트로 나눌지 따로 고민할 필요가 없습니다.

이 예시에서 자가 관리형 ClickHouse 서버는 source이고 ClickHouse Cloud 서비스는 destination입니다.

개요

절차는 다음과 같습니다:

  1. 원본 서비스에 읽기 전용 사용자를 추가합니다
  2. 대상 서비스에 원본 테이블 구조를 동일하게 생성합니다
  3. 원본의 네트워크 연결 가능 여부에 따라 원본에서 대상으로 데이터를 Pull하거나, 원본에서 데이터를 Push합니다
  4. 대상의 IP 액세스 목록에서 원본 server를 제거합니다(해당하는 경우)
  5. 원본 서비스에서 읽기 전용 사용자를 제거합니다

한 시스템에서 다른 시스템으로 테이블 마이그레이션:

이 예시에서는 자가 관리형 ClickHouse 서버의 테이블 1개를 ClickHouse Cloud로 마이그레이션합니다.

원본 ClickHouse 시스템에서(현재 데이터가 호스팅되는 시스템)

  • 원본 테이블(이 예시에서는 db.table)을 읽을 수 있는 읽기 전용 사용자를 추가합니다.
CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;
GRANT SELECT ON db.table TO exporter;
  • 테이블 정의를 복사하세요
SELECT create_table_query
FROM system.tables
WHERE database = 'db' AND table = 'table'

대상 ClickHouse Cloud 시스템에서는:

  • 대상 데이터베이스를 생성하십시오:
CREATE DATABASE db
  • 원본의 CREATE TABLE 문을 사용해 대상을 생성합니다.
CREATE TABLE db.table ...
  • remoteSecure 함수를 사용해 자가 관리형 소스에서 데이터를 가져옵니다
자가 관리형 ClickHouse 마이그레이션
INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
  • remoteSecure 함수를 사용하여 데이터를 ClickHouse Cloud 서비스로 push합니다
자가 관리형 ClickHouse 마이그레이션
IP 액세스 목록 관리

ClickHouse Cloud 서비스 목록에서 작업할 서비스를 선택한 다음 설정으로 이동합니다. IP 액세스 목록에 ClickHouse Cloud 서비스에 연결해야 하는 원격 시스템의 IP 주소 또는 IP 주소 범위가 포함되어 있지 않으면 Add IPs로 이 문제를 해결할 수 있습니다.

IP 액세스 목록에서 서비스가 해당 IP 주소의 트래픽을 허용하는지 확인

ClickHouse Cloud 서비스에 연결해야 하는 개별 IP 주소 또는 IP 주소 범위를 추가합니다. 필요에 맞게 양식을 수정한 다음 Save를 클릭하십시오.

ClickHouse Cloud의 IP 액세스 목록에 현재 IP 주소 추가
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
'default', 'PASS') SELECT * FROM db.table

ClickHouse Cloud 서비스 간 마이그레이션

자가 관리형 ClickHouse 마이그레이션

ClickHouse Cloud 서비스 간에 데이터를 마이그레이션하는 일반적인 예시는 다음과 같습니다:

  • 복원된 백업에서 데이터 마이그레이션
  • 개발 서비스에서 스테이징 서비스로 데이터 복사(또는 스테이징에서 운영으로 복사)

이 예시에서는 2개의 ClickHouse Cloud 서비스가 있으며, 이를 각각 sourcedestination이라고 합니다. 데이터는 source에서 destination으로 Pull됩니다. 원하는 경우 Push 방식도 사용할 수 있지만, 여기서는 읽기 전용 사용자를 사용하는 Pull 방식을 보여줍니다.

자가 관리형 ClickHouse 마이그레이션

마이그레이션은 다음 단계로 진행됩니다:

  1. 하나의 ClickHouse Cloud 서비스를 source로, 다른 하나를 destination으로 지정합니다
  2. 원본 서비스에 읽기 전용 사용자를 추가합니다
  3. 대상 서비스에 source 테이블 구조를 복제합니다
  4. 원본 서비스에 대한 IP 액세스를 일시적으로 허용합니다
  5. source에서 destination으로 데이터를 복사합니다
  6. 대상 서비스의 IP 액세스 목록(IP 액세스 목록)을 다시 설정합니다
  7. 원본 서비스에서 읽기 전용 사용자를 제거합니다

소스 서비스에 읽기 전용 사용자를 추가합니다

  • 소스 테이블(이 예시에서는 db.table)을 읽을 수 있는 읽기 전용 사용자를 추가합니다

    CREATE USER exporter
    IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
    SETTINGS readonly = 1;
    GRANT SELECT ON db.table TO exporter;
  • 테이블 정의를 복사합니다

    select create_table_query
    from system.tables
    where database = 'db' and table = 'table'

대상 서비스에 테이블 구조 복제하기

대상에 데이터베이스가 아직 없으면 생성합니다:

  • 대상 데이터베이스를 생성합니다:

    CREATE DATABASE db
  • 소스의 CREATE TABLE 문을 사용해 대상에 테이블을 생성합니다.

    대상에서는 소스의 select create_table_query... 출력 결과를 사용해 테이블을 생성합니다:

    CREATE TABLE db.table ...

원본 서비스에 원격 액세스 허용

원본에서 대상으로 데이터를 가져오려면 원본 서비스에서 연결을 허용해야 합니다. 원본 서비스의 "IP 액세스 목록" 기능을 일시적으로 비활성화하십시오.

허용 목록을 수정하여 Anywhere 에서의 액세스를 일시적으로 허용하십시오. 자세한 내용은 IP 액세스 목록 문서를 참조하십시오.

소스에서 대상으로 데이터를 복사합니다

  • remoteSecure 함수를 사용하여 소스 ClickHouse Cloud 서비스에서 데이터를 가져옵니다. 대상에 연결합니다. 대상 ClickHouse Cloud 서비스에서 이 명령을 실행하세요:

    INSERT INTO db.table SELECT * FROM
    remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
  • 대상 서비스의 데이터를 확인합니다

소스에서 IP 액세스 목록 다시 설정

이전에 액세스 목록을 내보냈다면 Share를 사용해 다시 가져올 수 있으며, 그렇지 않다면 IP 액세스 목록에 항목을 다시 추가하십시오.

읽기 전용 exporter 사용자 삭제

DROP USER exporter
  • 액세스를 제한하도록 서비스의 IP 액세스 목록을 변경합니다
Navigation