PostgreSQL용 AlloyDB로 데이터를 가져오고 내보낼 때는 다음 권장사항을 고려하세요.
- 가져오기 또는 내보내기에 Cloud Storage 요청자 지불 버킷을 사용하지 마세요.
- SQL 덤프 파일을 만들 때 올바른 플래그를 사용합니다.
- 데이터를 압축하여 비용을 절감합니다.
- 데이터를 일괄적으로 처리하여 장기 실행 가져오기 및 내보내기 프로세스를 줄입니다.
- 가져온 후 가져온 데이터베이스를 확인합니다.
Cloud Storage 요청자 지불 버킷 사용 금지
AlloyDB로 가져오거나 AlloyDB에서 내보내기에 요청자 지불이 사용 설정된 Cloud Storage 버킷은 사용할 수 없습니다. AlloyDB는 가져오기 및 내보내기를 수행하기 위해 Google 관리 서비스 계정인 서비스 에이전트를 사용합니다. 이 에이전트에는 일반적으로 데이터 액세스에 대해 요청자의 프로젝트에 요금을 청구할 컨텍스트나 구성이 없으므로 요청자 지불 버킷이 포함된 작업이 실패합니다.
SQL 덤프 파일을 만들 때 올바른 플래그 사용
SQL 덤프 파일로 데이터를 내보낼 때 올바른 플래그와 옵션을 사용하지 않으면 가져오기가 실패할 수 있습니다. AlloyDB로 가져올 데이터를 내보내는 방법에 대한 자세한 내용은 DMP 파일 내보내기 및 SQL 파일 내보내기를 참고하세요.
데이터를 압축하여 비용 절감
AlloyDB는 Cloud Storage에서 압축된 .gz 파일을 가져오고 내보낼 수 있도록 지원합니다. 특히 많은 양의 데이터를 내보낼 때 파일을 압축하면 Cloud Storage에서 차지하는 저장공간 및 스토리지 비용을 상당 부분 절약할 수 있습니다. AlloyDB API를 사용하여 SQL 덤프 파일 또는 CSV 파일을 내보낼 때 대상 URI에서 .gz 파일 확장자를 사용하여 데이터를 압축하세요. .gz 확장자가 있는 파일을 가져오면 파일이 자동으로 압축 해제됩니다.
장기 실행 가져오기 및 내보내기 프로세스 줄이기
데이터 크기에 따라 AlloyDB로 가져오고 AlloyDB에서 내보내는 작업은 완료하는 데 많은 시간이 걸릴 수 있습니다. 작업에 시간이 너무 오래 걸리면 다른 작업이 차단될 수 있습니다.
더 작은 데이터 배치를 사용하여 각 작업을 완료하는 데 걸리는 시간을 줄입니다. pg_dump 도구를 사용하여 읽기 풀 인스턴스에 연결된 클라이언트에서 수동으로 내보낼 수도 있습니다.
가져온 데이터베이스 확인
가져오기 작업이 완료된 후 psql 또는 다른 클라이언트를 사용하여 데이터베이스에 연결하고 테이블을 나열하거나 행 수를 쿼리하는 등 적절한 명령어를 실행하여 콘텐츠가 올바른지 확인합니다.
내보내기 작업 자동화
AlloyDB는 내보내기를 자동화하는 내장된 메서드를 제공하지 않지만 Cloud Scheduler, Pub/Sub, Cloud Run Functions와 같은 다른Google Cloud 구성요소를 사용하여 자동화 도구를 빌드할 수 있습니다.
문제 해결
이 섹션에서는 가져오기 및 내보내기 작업에서 발생할 수 있는 문제에 대한 권장 해결 방법을 제공합니다.
가져오기 작업
| 문제 | 설명 | 권장 해결 방법 |
|---|---|---|
ERROR: permission denied for schema public |
PostgreSQL 15 이상에서는 template0에서 대상 데이터베이스를 만드는 경우 스키마 권한으로 인해 데이터 가져오기가 실패할 수 있습니다. |
이 문제를 해결하려면 다음 명령어를 사용하여 데이터를 가져오는 사용자에게
GRANT ALL ON SCHEMA public TO my_import_user;
|
| 가져오기 작업이 너무 오래 걸립니다. | 활성 연결이 너무 많으면 가져오기 작업을 방해할 수 있습니다. |
다음을 시도해 보세요.
|
| 덤프 파일에 참조된 하나 이상의 사용자가 없기 때문에 가져오기 작업이 실패합니다. | 덤프 파일을 가져오기 전에 객체를 소유하거나 덤프된 데이터베이스의 객체에 대한 권한이 부여된 모든 데이터베이스 사용자가 대상 데이터베이스에 있어야 합니다. 그렇지 않으면 가져오기 작업이 원래 소유권이나 권한으로 객체를 다시 만들지 못합니다. | 가져오기 전에 필요한 데이터베이스 사용자를 만듭니다. |
GRANT stderr: ERROR: must be member of role ROLE_NAME
|
이 오류는 ROLE_NAME이 소유한 객체 또는 ROLE_NAME에 부여된 권한이 포함된 SQL 덤프 파일을 가져오지만 가져오기를 수행하는 데이터베이스 사용자가 ROLE_NAME의 구성원이 아닌 경우 발생할 수 있습니다. |
이 문제를 해결하려면 대상 데이터베이스에 ROLE_NAME 역할이 있는지 확인하고 가져오기를 실행하기 전에 가져오기를 수행하는 사용자에게 ROLE_NAME의 멤버십을 부여하세요. |
내보내기 작업
| 문제 | 설명 | 권장 해결 방법 |
|---|---|---|
HTTP Error 403: The service account does not have the required
permissions for the bucket. |
AlloyDB 서비스 계정에 대상 버킷에 필요한 권한이 없습니다. | 대상 Cloud Storage 버킷이 있고 AlloyDB 서비스 계정에 roles/storage.objectAdmin 또는 roles/storage.objectCreator 역할이 부여되어 있는지 확인합니다. 이러한 역할을 통해 버킷에 쓸 수 있습니다. Cloud Storage의 Identity and Access Management(IAM) 역할을 참고하세요.
|
| CSV 내보내기에 성공했지만 SQL 내보내기에 실패했습니다. | CSV 형식과 SQL 형식은 내보내기 방식이 서로 다릅니다. SQL 형식은 데이터베이스 스키마와 데이터를 내보내며 일반적으로 시간이 더 오래 걸립니다. CSV 형식은 사용자가 제공한 SELECT 쿼리에서 생성된 데이터만 내보냅니다. |
SQL 내보내기가 실패하거나 너무 느린 경우 CSV를 사용하여 개별 테이블을 내보내는 것이 좋습니다. |
| 내보내기가 너무 오래 걸림 | 기본 인스턴스에서 내보내기가 너무 오래 걸리면 내보내기 파일이 너무 큰 것일 수 있습니다. | 데이터를 더 작은 배치로 내보내는 것이 좋습니다. 예를 들어 한 번의 작업으로 전체 데이터베이스를 내보내는 대신 테이블을 개별적으로 내보냅니다. pg_dump 도구를 사용하여 읽기 풀 인스턴스에 연결된 클라이언트에서 수동으로 내보낼 수도 있습니다.
|
Create Extension 오류가 pg_restore 로그에 표시되거나 가져오기에 실패합니다. |
덤프 파일에 AlloyDB에서 지원하지 않거나 클러스터에 설치되지 않은 PostgreSQL 확장 프로그램에 대한 참조가 있습니다. | 참조를 삭제하려면 덤프 파일을 수정하거나 AlloyDB에서 지원하는 경우 클러스터에 확장 프로그램을 설치합니다. |
pg_dumpall 사용 오류 |
--globals-only와 같은 플래그가 있는 pg_dumpall 유틸리티에는 AlloyDB에서 사용할 수 없는 권한이 필요할 수 있습니다. |
비밀번호 없이 사용자 및 역할과 같은 전역 객체를 내보내려면 다음 명령어를 사용하여
pg_dumpall --globals-only --no-role-passwords
|
내보내기 작업이 타임아웃되거나 Connection reset by peer가 표시됩니다. |
Cloud Storage가 특정 기간 내에 데이터를 수신하지 않으면 연결이 재설정될 수 있습니다. 내보내기에 필요한 초기 데이터베이스 쿼리를 실행하는 데 시간이 너무 오래 걸리는 경우 이러한 문제가 발생할 수 있습니다. | 이 경우 읽기 풀 인스턴스에 연결된 클라이언트에서 pg_dump 도구를 사용하여 수동으로 내보내기를 시도해 보세요. |
일반적인 문제
| 문제 | 설명 | 권장 해결 방법 |
|---|---|---|
HTTP Error 409: Operation failed because another operation was
already in progress. |
시스템에서는 한 번에 하나의 API 기반 가져오기 또는 내보내기 작업만 허용합니다. | 현재 작업이 완료된 후 요청을 시도하세요. |
다음 단계
- 덤프 파일을 사용하여 데이터 가져오기
- 덤프 파일을 사용하여 데이터 내보내기
- CSV 파일을 사용하여 데이터 가져오기
- CSV 파일을 사용하여 데이터 내보내기
- SQL 파일을 사용하여 데이터 가져오기
- SQL 파일을 사용하여 데이터 내보내기
- 자동 백업 사용 설정.
- 백업에서 복원