운영 애플리케이션에 분석 데이터에 대한 지연 시간이 짧은 트랜잭션 액세스를 제공하려면 BigQuery의 테이블을 PostgreSQL용 AlloyDB 인스턴스에 동기화합니다. BigQuery에서 데이터를 쿼리하는 외부 데이터 래퍼 (FDW)와 달리 동기화 기능은 데이터를 AlloyDB 스토리지에 복사하므로 쿼리가 로컬 테이블에서 읽어 성능을 향상시킵니다.
AlloyDB는 BigQuery 데이터를 인스턴스로 이동하는 다음과 같은 방법을 제공합니다.
일회성 동기화: BigQuery 테이블의 쓰기 가능한 독립적인 사본을 만듭니다.
정기 동기화 또는 미러링: 일정에 따라(예: 6시간마다 또는 매일) 자동으로 새로고침되는 읽기 전용 로컬 테이블을 만듭니다.
성능 및 운영 고려사항
BigQuery 동기화 테이블을 사용할 때는 다음 사항을 고려하세요.
- 리소스 사용량: 데이터 이동은 CPU와 메모리를 사용합니다. 매우 큰 테이블의 경우 기본 트랜잭션 워크로드에 영향을 주지 않도록 사용량이 적은 시간대에 동기화를 예약하는 것이 좋습니다.
- 데이터 공개 상태: 바꾸기 작업 중에 기존 대상 테이블이 삭제되고 미리 다시 생성됩니다. 가져오기 중 쿼리는 처음에 빈 테이블을 표시한 후 일괄 트랜잭션이 커밋될 때 새로 가져온 데이터가 점진적으로 표시됩니다.
시작하기 전에
- AlloyDB 인스턴스에서
alloydb_sync.enabled=on데이터베이스 플래그를 설정합니다. 자세한 내용은 인스턴스의 데이터베이스 플래그 구성을 참조하세요. alloydb_sync확장 프로그램은bigquery_fdw를 사용하여 BigQuery에 연결하므로bigquery_fdw가 BigQuery 데이터 유형 및 열 매핑을 처리하는 방법을 숙지합니다.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
AlloyDB를 만들고 여기에 연결하는 데 필요한 Cloud API를 사용 설정합니다.
-
변경할 프로젝트의 이름을 확인하려면 프로젝트 확인 단계에서 다음을 클릭합니다.
-
API 사용 설정 단계에서 사용 설정을 클릭하여 다음을 사용 설정합니다.
- AlloyDB API
- Compute Engine API
- Cloud Resource Manager API
- Service Networking API
- BigQuery Storage API
AlloyDB와 동일한 Google Cloud 프로젝트에 있는 VPC 네트워크를 사용하여 AlloyDB에 대한 네트워크 연결을 구성하려면 Service Networking API가 필요합니다.
다른 Google Cloud 프로젝트에 있는 VPC 네트워크를 사용하여 AlloyDB에 대한 네트워크 연결을 구성하려면 Compute Engine API와 Cloud Resource Manager API가 필요합니다.
-
- 데이터를 동기화할 기존 BigQuery 테이블이 있는지 확인합니다. 자세한 내용은 BigQuery 테이블 만들기 및 사용을 참조하세요.
필요한 역할
AlloyDB 클러스터 서비스 계정에 BigQuery 데이터 세트 액세스 권한을 부여하려면 다음 권한이 필요합니다.
- BigQuery 데이터 뷰어(
roles/bigquery.dataViewer) 또는bigquery.tables.get및bigquery.tables.getData권한아 있는 커스텀 역할. 서비스 계정에 부여되면 이 역할은 테이블 또는 뷰에서 데이터와 메타데이터를 읽을 수 있는 권한을 제공합니다. - BigQuery 읽기 세션 사용자(
roles/bigquery.readSessionUser) 또는bigquery.readsessions.create및bigquery.readsessions.getData권한이 있는 커스텀 역할. 읽기 세션을 만들고 사용할 수 있는 기능을 제공합니다. - BigQuery 작업 사용자(
roles/bigquery.jobUser) 또는bigquery.jobs.create권한이 있는 커스텀 역할. 쿼리 작업을 포함한 작업을 만들고 실행할 수 있는 기능을 제공합니다. 별도의 런타임 프로젝트를 제공하면 작업이 데이터 프로젝트가 아닌 해당 프로젝트에서 실행됩니다. 즉, 런타임 프로젝트에 작업 사용자 역할을 부여해야 합니다.
확장 프로그램 구성
BigQuery에서 테이블을 동기화하기 전에 필요한 확장 프로그램을 사용 설정하고 BigQuery에 대한 연결을 구성합니다. Google Cloud 콘솔을 사용하는 경우 AlloyDB는 이러한 단계를 자동으로 수행합니다.
확장 프로그램을 만듭니다.
- 인스턴스에 psql 클라이언트 연결의 안내에 따라 psql 클라이언트를 사용하여 AlloyDB 인스턴스에 연결합니다.
다음 명령어를 실행합니다.
CREATE EXTENSION IF NOT EXISTS alloydb_sync;
AlloyDB가 BigQuery로 인증할 수 있도록 외부 서버 및 사용자 매핑을 만듭니다.
CREATE EXTENSION IF NOT EXISTS bigquery_fdw; CREATE SERVER IF NOT EXISTS bigquery_server FOREIGN DATA WRAPPER bigquery_fdw OPTIONS (runtime_project 'RUNTIME_PROJECT_ID'); CREATE USER MAPPING IF NOT EXISTS FOR USER SERVER bigquery_server;다음을 바꿉니다.
RUNTIME_PROJECT_ID: 선택사항입니다. 쿼리를 처리하고 컴퓨팅 비용이 발생하는Google Cloud 프로젝트의 ID입니다. 생략하면 데이터를 저장하는 프로젝트에 쿼리 비용이 청구됩니다.USER: BigQuery 테이블에 액세스하는 데이터베이스 사용자 이름 또는 IAM 사용자입니다.
일회성 내보내기를 위해 BigQuery 테이블 동기화
Google Cloud 콘솔을 사용하거나 psql을 사용하여 일회성 내보내기를 위해 BigQuery 테이블을 동기화할 수 있습니다.
Google Cloud 콘솔 사용
Google Cloud 콘솔을 사용하여 BigQuery 테이블을 AlloyDB에 동기화하려면 다음을 수행합니다.
Google Cloud 콘솔에서 BigQuery 페이지를 엽니다.
왼쪽 창에서 탐색기를 클릭합니다.
왼쪽 창이 표시되지 않으면 왼쪽 창 펼치기를 클릭하여 창을 엽니다.
탐색기 창에서 프로젝트를 펼치고 데이터 세트를 클릭한 후 데이터 세트를 클릭합니다.
개요 > 테이블을 클릭한 다음 테이블을 선택합니다.
세부정보 창에서 더보기 > AlloyDB로 내보내기 또는 동기화를 클릭합니다.
프로젝트 선택에서 AlloyDB 클러스터의 프로젝트를 선택합니다. 필요한 권한이 있으면 현재 BigQuery 프로젝트 이외의 프로젝트를 선택할 수 있습니다.
대상 클러스터 선택에서 다음 옵션 중 하나를 선택합니다.
기존 클러스터 사용을 선택하여 BigQuery 테이블을 기존 AlloyDB 클러스터로 내보냅니다. 그런 후 다음 작업을 수행합니다.
기본 AlloyDB 클러스터를 선택합니다.
대상 AlloyDB 데이터베이스를 선택합니다.
대상 AlloyDB 테이블의 스키마를 선택합니다.
대상 AlloyDB 테이블의 이름을 지정합니다.
동기화 빈도에서 한 번만을 선택하여 BigQuery 테이블의 사본을 만듭니다.
내보내기 설정을 클릭합니다.
동기화 설정이 완료되면 제공된 SQL 문을 사용하여 가져오기 작업을 추적하고 가져온 테이블을 쿼리할 수 있습니다. 쿼리를 클릭하여 AlloyDB Studio에서 가져온 테이블로 이동합니다.
새 클러스터 만들기를 선택하여 BigQuery 테이블을 새 AlloyDB 클러스터로 내보냅니다. 그런 후 다음 작업을 수행합니다.
내보내기 설정을 클릭합니다.
AlloyDB로 리디렉션 대화상자에서 리디렉션을 선택합니다.
클러스터 유형으로 프로비저닝된 클러스터를 선택합니다.
계속을 클릭합니다.
동기화 구성에서 기본
postgres대상 AlloyDB 데이터베이스, 대상 AlloyDB 테이블의 기본public스키마를 선택하고 대상 AlloyDB 테이블의 이름을 지정합니다.동기화 빈도에서 한 번만을 선택하여 BigQuery 테이블의 사본을 만듭니다.
계속을 클릭합니다.
클러스터를 구성하세요. 각 필드에 대한 자세한 내용은 새 클러스터 및 기본 인스턴스 만들기를 참조하세요.
클러스터 만들기를 클릭합니다.
동기화 설정이 완료되면 AlloyDB Studio로 이동하여 가져온 테이블을 쿼리합니다.
psql을 사용하여 BigQuery 테이블을 한 번 동기화
BigQuery 데이터의 수정 가능한 사본을 만들려면 psql을 사용하여 alloydb_sync.import_bq_table 함수를 실행합니다.
SELECT alloydb_sync.import_bq_table(
'PROJECT_ID.DATASET_ID.TABLE_ID',
'ALLOYDB_DESTINATION_TABLE_NAME',
'ON_EXISTS',
ARRAY['PRIMARY_KEY_COLUMN']
);
다음을 바꿉니다.
PROJECT_ID: BigQuery 데이터 세트가 있는 프로젝트의 ID입니다.DATASET_ID: 테이블의 BigQuery 데이터 세트 이름 4부분으로 구성된 이름이 있는 Iceberg 테이블의 경우Catalog.Namespace입니다.TABLE_ID: BigQuery 테이블 또는 뷰의 이름입니다.ALLOYDB_DESTINATION_TABLE_NAME: 데이터를 만들고 가져올 AlloyDB 데이터베이스의 로컬 테이블 이름입니다. 스키마 이름을 포함할 수 있습니다(예:public.local_sales).ON_EXISTS: 대상 테이블이 이미 있는 경우 사용할 전략입니다.PRIMARY_KEY_COLUMN: 기본 키로 사용할 열 이름의 선택적 목록입니다.
예
다음 예시에서는 BigQuery 데이터 세트에서 transactions라는 테이블을 public.local_sales라는 새 AlloyDB 테이블에 동기화하는 방법을 보여줍니다.
SELECT alloydb_sync.import_bq_table(
'my-gcp-project.sales_data.transactions',
'public.local_sales',
'replace'
);
on_exists 매개변수
on_exists 매개변수는 대상 테이블이 AlloyDB에 이미 있는 경우 함수가 동기화를 처리하는 방법을 결정합니다.
error: 기본 옵션입니다. 대상 테이블이 이미 있으면 동기화를 중지합니다.skip: 대상 테이블이 이미 있으면 동기화를 건너뜁니다.replace: 기존 로컬 테이블을 BigQuery의 새 데이터로 바꿉니다.
기본 키 지원
선택사항인 primary_key 매개변수를 텍스트 배열로 제공하면 AlloyDB는 지정된 열을 기본 키로 사용하여 테이블을 만듭니다.
SELECT alloydb_sync.import_bq_table(
'my-gcp-project.sales_data.transactions',
'public.local_sales',
ARRAY['transaction_id']
);
정기 내보내기를 위해 BigQuery 테이블 동기화
Google Cloud 콘솔을 사용하거나 psql을 사용하여 정기 내보내기를 위해 BigQuery 테이블을 동기화할 수 있습니다.
Google Cloud 콘솔 사용
Google Cloud 콘솔을 사용하여 BigQuery 테이블을 AlloyDB에 동기화하려면 다음을 수행합니다.
Google Cloud 콘솔에서 BigQuery 페이지를 엽니다.
왼쪽 창에서 탐색기를 클릭합니다.

왼쪽 창이 표시되지 않으면 왼쪽 창 펼치기를 클릭하여 창을 엽니다.
탐색기 창에서 프로젝트를 펼치고 데이터 세트를 클릭한 후 데이터 세트를 클릭합니다.
개요 > 테이블을 클릭한 다음 테이블을 선택합니다.
세부정보 창에서 더보기 > AlloyDB로 내보내기 또는 동기화를 클릭합니다.
프로젝트 선택에서 AlloyDB 클러스터의 프로젝트를 선택합니다. 필요한 권한이 있으면 현재 BigQuery 프로젝트 이외의 프로젝트를 선택할 수 있습니다.
대상 클러스터 선택에서 다음 옵션 중 하나를 선택합니다.
기존 클러스터 사용을 선택하여 BigQuery 테이블을 기존 AlloyDB 클러스터로 내보냅니다. 그런 후 다음 작업을 수행합니다.
기본 AlloyDB 클러스터를 선택합니다.
대상 AlloyDB 데이터베이스를 선택합니다.
대상 AlloyDB 테이블의 스키마를 선택합니다.
대상 AlloyDB 테이블의 이름을 지정합니다.
동기화 빈도에서 BigQuery 테이블의 주기적 동기화를 만들 기간을 선택합니다(예: 매시간, 6시간마다).
내보내기 설정을 클릭합니다.
동기화 설정이 완료되면 제공된 SQL 문을 사용하여 가져오기 작업을 추적하고 가져온 테이블을 쿼리할 수 있습니다. 쿼리를 클릭하여 AlloyDB Studio에서 가져온 테이블로 이동합니다.
새 클러스터 만들기를 선택하여 BigQuery 테이블을 새 AlloyDB 클러스터로 내보냅니다. 그런 후 다음 작업을 수행합니다.
내보내기 설정을 클릭합니다.
AlloyDB로 리디렉션 대화상자에서 리디렉션을 선택합니다.
클러스터 유형으로 프로비저닝된 클러스터를 선택합니다.
계속을 클릭합니다.
동기화 구성에서 기본
postgres대상 AlloyDB 데이터베이스, 대상 AlloyDB 테이블의 기본public스키마를 선택하고 대상 AlloyDB 테이블의 이름을 지정합니다.동기화 빈도에서 한 번만을 선택하여 BigQuery 테이블의 사본을 만듭니다.
계속을 클릭합니다.
클러스터를 구성하세요. 각 필드에 대한 자세한 내용은 새 클러스터 및 기본 인스턴스 만들기를 참조하세요.
클러스터 만들기를 클릭합니다.
동기화 설정이 완료되면 AlloyDB Studio로 이동하여 가져온 테이블을 쿼리합니다.
주기적인 동기화 만들기
BigQuery 데이터와 동기화된 상태로 유지되는 읽기 전용 테이블을 유지하려면 psql을 사용하여 alloydb_sync.create_bq_sync_table 함수를 실행합니다.
SELECT alloydb_sync.create_bq_sync_table(
'PROJECT_ID.DATASET_ID.TABLE_ID',
'ALLOYDB_DESTINATION_TABLE_NAME',
'REFRESH_INTERVAL',
'ON_EXISTS',
ARRAY['PRIMARY_KEY_COLUMN']
);
다음을 바꿉니다.
PROJECT_ID.DATASET_ID.TABLE_ID: 프로젝트 ID, 데이터 세트 ID, 테이블 ID를 포함하여 마침표로 구분된 BigQuery 테이블 또는 뷰의 정규화된 이름입니다. 4부분으로 구성된 이름이 있는 Iceberg 테이블의 경우DATASET_ID는Catalog.Namespace로 표시됩니다. 예를 들면my-gcp-project.sales_data.transactions입니다.ALLOYDB_DESTINATION_TABLE_NAME: 데이터를 만들고 동기화할 AlloyDB 데이터베이스의 로컬 테이블 이름입니다.REFRESH_INTERVAL: AlloyDB가 BigQuery에서 데이터를 주기적으로 새로고침하는 간격입니다(예:12 hours).ON_EXISTS: 대상 테이블이 이미 있는 경우 사용할 전략입니다.PRIMARY_KEY_COLUMN: 기본 키로 사용할 열 이름의 선택적 목록입니다.
예
다음 예시에서는 12시간마다 새로고침되는 고객 프로필 미러를 만드는 방법을 보여줍니다.
SELECT alloydb_sync.create_bq_sync_table(
'my-gcp-project.crm_data.profiles',
'public.customer_mirror',
'12 hours',
'replace'
);
작업 모니터링 및 관리
동기화를 시작한 후 진행 상황을 모니터링하고 작업을 관리할 수 있습니다.
작업 상태 확인
대규모 동기화에는 시간이 걸릴 수 있습니다. job_status 뷰를 쿼리하여 처리된 레코드 및 예상 완료 시간을 포함한 진행 상황을 모니터링할 수 있습니다.
SELECT
import_id,
status,
records_processed,
total_records,
error_message
FROM alloydb_sync.job_status;
예를 들어 작업을 취소하려면 다음 명령어를 실행합니다.
SELECT alloydb_sync.cancel_import_job('85bb5dfa-dfb9-4017-9153-738f55abe4b1');
동기화 작업 중지 및 삭제하기
BigQuery 테이블 미러링을 중지하고 로컬 테이블을 삭제하려면 alloydb_sync.delete_bq_sync_table 함수를 사용합니다.
SELECT alloydb_sync.delete_bq_sync_table('public.customer_mirror');
데이터 유형 매핑
alloydb_sync 확장 프로그램을 사용하여 BigQuery에서 AlloyDB로 데이터를 동기화하거나 가져올 때 AlloyDB는 BigQuery 데이터 유형을 대상 테이블의 해당 PostgreSQL 데이터 유형에 매핑합니다.
소스 BigQuery 테이블 열이 다음 표에 나열된 지원되는 데이터 유형을 사용하는지 확인합니다.
| BigQuery 테이블 데이터 유형 | PostgreSQL 데이터 유형 |
|---|---|
BOOLEAN |
BOOLEAN |
INTEGER (INT64) |
BIGINT |
FLOAT (FLOAT64) |
DOUBLE PRECISION |
STRING |
TEXT |
NUMERIC |
NUMERIC |
BIGNUMERIC |
NUMERIC |
DATE |
DATE |
TIMESTAMP |
TIMESTAMPTZ |
TIME |
TIME |
DATETIME |
TIMESTAMP |
JSON |
JSONB |
BYTES |
BYTEA |
제한사항
BigQuery에서 테이블을 동기화할 때는 다음 제한사항이 적용됩니다.
- 이 기능은 PostgreSQL 버전 18에서만 지원됩니다.
- 이 기능을 사용하려면 인스턴스에
alloydb_sync.enabled=on데이터베이스 플래그가 필요합니다. - 데이터베이스에서
bigquery_fdw외부 서버 및 사용자 매핑을 구성할 때 외부 서버 이름을bigquery_server로 지정해야 합니다. ARRAY,STRUCT,VECTOR,GEOGRAPHY,RANGE,INTERVAL와 같은 복잡한 BigQuery 데이터 유형은 동기화에 지원되지 않습니다.STRING(L),BYTES(L),NUMERIC(P, S),BIGNUMERIC(P, S)와 같은 매개변수화된 BigQuery 데이터 유형은TEXT에 매핑됩니다. 자세한 내용은 지원되는 BigQuery 데이터 유형 및 열 매핑을 참조하세요.primary_key매개변수를 지정할 때 쉼표로 구분된 기본 키 열 이름 목록은 1,023바이트를 초과하면 안 됩니다. 또한 행의 JSON 직렬화 기본 키 열 이름과 값은 255바이트를 초과할 수 없습니다.alloydb_sync.create_bq_sync_table함수로 만든 정기 동기화 테이블의 경우refresh_interval매개변수는 월 또는 연도를 지원하지 않습니다. 간격을 정수 일수, 24시간 미만, 60분 미만 또는 60초 미만으로 지정합니다.1 hour 30 minutes또는90 minutes와 같은 혼합 단위 간격은1 hour와 같은 가장 큰 시간 단위의 정수로 잘립니다.동기화 작업을 시작했거나 정기 동기화 테이블을 만든 데이터베이스 사용자만 다음을 수행할 수 있습니다.
alloydb_sync.job_status뷰에서 작업 보기alloydb_sync.cancel_import_job함수로 작업 취소alloydb_sync.delete_bq_sync_table함수를 사용하여 동기화 테이블 삭제
동기화 작업은 단일 트랜잭션이 아닌 일괄로 데이터를 점진적으로 커밋합니다.
replace작업 중에는 데이터가 로드되기 전에 대상 테이블이 삭제되고 다시 생성되므로 작업이 완료될 때까지 동시 쿼리에 비어 있거나 부분적으로 채워진 테이블이 표시됩니다. 가져오기 작업이 실패하거나 완료되기 전에 취소되면 부분적으로 가져온 행과 내부 외부 테이블 정의가 데이터베이스에 남아 있습니다. 복구하려면on_exists매개변수를replace로 설정하여 가져오기를 다시 실행합니다.새로 등록된 주기적 동기화 테이블의 초기 백그라운드 가져오기 중에 중단이 발생하면 다음 예약된 새로고침 간격까지 테이블이 불완전한 상태로 유지됩니다.
백그라운드 작업 추적기 작업자가 지난 10초 이내에 주기적 동기화 테이블 또는 동기화 활동이 있는 데이터베이스에 연결되어 있는 동안 표준
DROP DATABASE명령어가 실패합니다.alloydb_sync.create_bq_sync_table함수를 사용하여 구성된 주기적 동기화 테이블이 없는 데이터베이스에서는 유휴 시간 10초 후에 백그라운드 작업 추적기 작업자가 종료됩니다. 작업자는 다음alloydb_sync.import_bq_table함수 호출 시 또는alloydb_sync확장 프로그램이 삭제되고 다시 생성될 때 새 동적 공유 메모리 세그먼트를 할당합니다. 활성 주기적 동기화 테이블 없이 유휴 기간으로 구분된 격리된 일회성 가져오기를 대량으로 실행하면 공유 메모리 슬롯이 소진되어 인스턴스를 다시 시작해야 할 수 있습니다.
권장사항
BigQuery에서 테이블 동기화를 구성하고 관리할 때는 다음 권장사항을 따르세요.
- 동기화 함수를 호출하기 전에 자체 커밋된 트랜잭션에서
CREATE EXTENSION IF NOT EXISTS alloydb_sync CASCADE;문을 실행합니다. - 가져오기 중에 소스 BigQuery 테이블을 수정하지 마세요. 소스 테이블이 동시에 업데이트되면 동기화 작업에서 업데이트된 데이터를 가져올 수 있습니다.
alloydb_sync.import_bq_table,alloydb_sync.create_bq_sync_table또는alloydb_sync.delete_bq_sync_table함수를 호출할 때 일관된 스키마 정규화 대상 테이블 이름(예:public.my_table)을 지정합니다. 동일한 대상 테이블에 대해 여러 동기화 작업을 동시에 시작하지 마세요. 동일한 클러스터의 여러 데이터베이스에서 테이블을 동기화하는 경우 데이터베이스 간에 고유한 스키마 또는 테이블 이름을 사용합니다.alloydb_sync.create_bq_sync_table함수를 사용하여 주기적 동기화 테이블을 만들 때 예약된 새로고침이 대상 테이블을 업데이트하도록on_exists매개변수를replace로 설정합니다.refresh_interval매개변수를 일, 시간(24시간 미만), 분(60분 미만) 또는 초(60초 미만)의 단일 전체 단위로 지정합니다.- 매우 큰 BigQuery 테이블을 가져올 때는 가져오기가 임시 파일 크기 한도를 초과하지 않도록 인스턴스에서
temp_file_limit데이터베이스 플래그 값과 선택적으로work_mem플래그 값을 늘립니다. 가져오기 중에 수신 행은work_mem한도까지 메모리에 버퍼링된 후 일괄 커밋이 완료되기 전에 로컬 PostgreSQL 임시 파일에 스테이징됩니다. - 복제된 동기화 테이블 또는 활성 가져오기가 있는 테이블에서
DROP TABLE문을 수동으로 실행하지 마세요. 진행 중인 가져오기를 중지하려면 먼저 작업을 시작한 데이터베이스 사용자로alloydb_sync.cancel_import_job함수를 실행합니다. 주기적 동기화 테이블과 해당 일정을 삭제하려면alloydb_sync.delete_bq_sync_table함수를 사용하고 동기화 테이블을 만들 때 사용한 정확한 대상 테이블 이름을 전달합니다. - 일회성 가져오기가 실패하거나 완료되기 전에 취소되면
on_exists매개변수를replace로 설정하여alloydb_sync.import_bq_table함수를 다시 실행합니다. 새로 등록된 정기 동기화 테이블의 초기 백그라운드 가져오기가 중단되고 다음 예약된 새로고침을 기다리지 않고 즉시 해결하려면alloydb_sync.delete_bq_sync_table함수를 사용하여 동기화 테이블을 삭제하고 다시 만듭니다. 작업이 시작될 때
max_worker_processes의 백그라운드 작업자 슬롯이 소진되거나 가져오기가 큐에 추가되거나 실행되는 동안 데이터베이스가 비정상 종료되면 작업 메타데이터가QUEUED또는RUNNING상태로 유지되고 해당 테이블에 대한 향후 가져오기가 차단될 수 있습니다. 테이블 차단을 해제하려면 다음 명령어를 실행하여 작업을 시작한 데이터베이스 사용자로 작업 상태를 업데이트합니다.UPDATE alloydb_sync.import_job_status SET status = 'FAILED' WHERE status IN ('QUEUED', 'RUNNING');정기 동기화 테이블 또는 최근 동기화 활동이 있는 데이터베이스를 삭제하려면
DROP DATABASE DATABASE_NAME WITH (FORCE)를 실행하거나 먼저 모든 동기화 테이블을 삭제하고 백그라운드 추적기 작업자가 종료될 때까지 10초 이상 기다립니다.pg_stat_activity뷰를 쿼리하여 작업자가 데이터베이스에 계속 연결되어 있는지 확인할 수 있습니다.SELECT pid, datname, backend_type FROM pg_stat_activity WHERE datname = 'DATABASE_NAME' AND backend_type = 'job_tracker';DATABASE_NAME을 데이터베이스 이름으로 바꿉니다.
가격 책정
BigQuery에서 AlloyDB로 데이터를 동기화하면 BigQuery 스트리밍 읽기 (Storage Read API) 가격 책정에 따라 요금이 청구됩니다.
데이터를 내보낸 후 AlloyDB에 데이터를 저장하는 데는 요금이 청구됩니다. 자세한 내용은 PostgreSQL용 AlloyDB 가격 책정을 참조하세요.
다음 단계
- AlloyDB로 데이터 내보내기 (역방향 ETL) 자세히 알아보기
- FDW를 사용하여 BigQuery 데이터를 인플레이스 쿼리하는 방법 자세히 알아보기