이 페이지에서는 pg_dump, pg_dumpall, pg_restore를 사용하여 데이터를 내보내고 Cloud SQL 인스턴스로 가져오는 방법을 설명합니다.
시작하기 전에
내보내기는 데이터베이스 리소스를 사용하지만 인스턴스가 프로비저닝되지 않는 한 일반적인 데이터베이스 작업에 지장을 주지 않습니다.
권장사항은 데이터 가져오기 및 내보내기 권장사항을 참조하세요.
가져오기 작업을 완료한 후 결과를 확인합니다.
pg_dump
, pg_dumpall
, pg_restore
유틸리티에 대해 자세히 알아보세요.
PostgreSQL용 Cloud SQL에서 데이터 내보내기
Cloud SQL을 사용하여 Google Cloud 콘솔, gcloud CLI 또는 API에서 내보내기를 수행할 수 있습니다.
- 단일 PostgreSQL 데이터베이스를 내보내려면
pg_dump
유틸리티를 사용합니다. - 클러스터의 모든 PostgreSQL 데이터베이스를 내보내려면
pg_dumpall
유틸리티를 사용합니다.
두 유틸리티를 사용하는 경우 필요한 옵션을 사용하여 결과 내보내기 파일을 Cloud SQL로 다시 가져올 수 있는지 확인합니다.
pg_dump를 사용하여 온프레미스 PostgreSQL 서버에서 데이터 내보내기
Cloud SQL에서 관리하지 않는 데이터베이스를 내보낸 후 나중에 Cloud SQL로 가져오려면 pg_dump
유틸리티를 다음 플래그와 함께 사용합니다.
--no-owner
소유권 변경 명령어는 덤프 파일에 포함되면 안 됩니다.
--format
덤프 파일이
pg_restore
와 함께 사용되는 경우custom
및directory
형식이 허용됩니다.plain-text
형식의 경우 대신SQL dump file
로 내보냅니다. 이 형식은pg_restore
와 호환되지 않으며 Google Cloud 콘솔 가져오기 명령어나psql
클라이언트를 사용하여 이 형식을 가져와야 합니다.--no-acl
덤프가
SUPERUSER
역할의 멤버십을 부여하거나 취소하는 문을 포함하는 경우 이 플래그가 필요합니다.--clean
이 선택적 플래그를 사용하면 데이터베이스 객체를 가져오기 전에 삭제하는 데 필요한
DROP <object>
SQL 문을 포함할 수 있습니다.--if-exists
이 선택적 플래그를 사용하면
clean
플래그로 생성된 각DROP
문과 함께IF EXISTS
SQL 문을 포함할 수 있습니다.
또한 다음을 모두 삭제해야 합니다.
- Cloud SQL에서 지원하는 확장 프로그램 관련 구문. 지원되는 확장 프로그램 목록은 PostgreSQL 확장 프로그램을 참조하세요.
- plpgsql을 참조하는
CREATE EXTENSION
또는DROP EXTENSION
문. 이 확장 프로그램은 Cloud SQL Postgres 인스턴스에 사전 설치되어 제공됩니다. COMMENT ON EXTENSION
문
데이터베이스 설정에 따라 기본 인코딩이 데이터에 적합한지 확인합니다. 필요한 경우 --encoding
플래그로 기본값을 재정의할 수 있습니다.
PostgreSQL용 Cloud SQL에서 custom
형식을 사용하여 데이터 내보내기
커스텀 형식을 사용하려면 명령줄에서 pg_dump
를 실행합니다.
pg_dump \ -U USERNAME \ --format=custom \ --no-owner \ --no-acl \ DATABASE_NAME > DATABASE_NAME.dmp
PostgreSQL용 Cloud SQL에서 파일 여러 개에서 동시에 데이터 내보내기
directory
출력 형식만 사용하여 파일 여러 개에서 데이터를 동시에 내보낼 수 있습니다.
동시에 내보내려면 -j NUM_CORES
플래그를 사용합니다.
NUM_CORES는 소스 인스턴스의 코어 수입니다.
모든 데이터베이스 내보내기
pg_dumpall
은 클러스터의 모든 PostgreSQL 데이터베이스를 단일 스크립트 파일로 추출할 수 있는 유틸리티입니다. 이 파일에는 데이터베이스를 복원하는 데 사용할 수 있는 SQL 명령어가 있습니다.
Cloud SQL 인스턴스에서 모든 PostgreSQL 데이터베이스를 내보내려면 다음 필수 플래그와 함께 pg_dumpall
유틸리티를 사용합니다.
exclude-database=cloudsqladmin
exclude-database=template*
pg_dumpall
유틸리티는 cloudsqladmin
또는 template
데이터베이스에 액세스할 수 없습니다.
모든 PostgreSQL 데이터베이스를 내보내려면 다음 명령어를 실행합니다.
pg_dumpall \ -h HOST_NAME -l DATABASE_NAME –exclude-database=cloudsqladmin \ –exclude-database=template* > pg_dumpall.sql
pg_dumpall
로 역할을 덤프할 때 역할 비밀번호를 보려면 PostgreSQL 역할 이름으로 cloudsql.pg_authid_select_role
플래그를 설정합니다. 역할이 있으면 pg_authid
테이블에 대한 읽기 전용(SELECT
) 액세스 권한이 있습니다. 이 테이블에는 역할 비밀번호가 포함되어 있습니다.
가져오기
pg_restore
유틸리티를 사용하여 보관 파일을 Cloud SQL 데이터베이스로 가져옵니다. pg_restore
는 pg_dump에서 생성된 custom
또는 directory
형식의 보관 파일에서만 작동합니다.
pg_restore
에 대해 자세히 알아보기
custom
형식으로 생성된 덤프 파일에서 PostgreSQL용 Cloud SQL로 가져오기
덤프 파일이 커스텀 형식으로 생성된 경우 다음 명령어를 실행합니다.
pg_restore \ --list DATABASE_NAME.dmp | sed -E 's/(.* EXTENSION )/; \1/g' > DATABASE_NAME.toc
sed
후속 처리는 SQL 덤프 파일의 모든 확장 프로그램 문을 주석 처리합니다.
pg_restore
를 사용하여 가져올 때 명령줄 인수 '--use-list=DATABASE_NAME.toc'를 사용하여 처리된 목차를 지정합니다.
파일 여러 개에서 PostgreSQL용 Cloud SQL로 데이터 동시에 가져오기
directory
및 custom
출력 형식을 사용하여 만든 보관 파일에만 파일 여러 개에서 데이터를 동시에 가져올 수 있습니다.
병렬로 가져오려면 -j NUM_CORES
플래그를 사용합니다.
NUM_CORES는 대상 인스턴스의 코어 수입니다.
PostgreSQL용 Cloud SQL의 가져오기 성능
다음 단계
- 가져오기 및 내보내기 작업 상태 확인 방법 알아보기
- 데이터 가져오기 및 내보내기 권장사항 자세히 알아보기
- PostgreSQL pg_dump 유틸리티 자세히 알아보기
- 가져오기 및 내보내기에 대해 알려진 문제