데이터베이스 플래그 구성

이 페이지에서는 Cloud SQL에 데이터베이스 플래그를 구성하는 방법을 설명하고 인스턴스에 설정할 수 있는 플래그를 알아봅니다. 데이터베이스 플래그는 PostgreSQL 매개변수 조정, 옵션 조정, 인스턴스 구성 및 조정을 포함한 여러 작업에 사용합니다.

경우에 따라 한 플래그를 설정할 때 원하는 기능을 완전히 활성화하기 위해 다른 플래그를 설정해야 할 수도 있습니다.

데이터베이스 인스턴스의 플래그를 설정, 삭제, 수정하면 데이터베이스가 다시 시작될 수 있습니다. 플래그 값은 인스턴스를 삭제하기 전까지 유지됩니다. 인스턴스가 복제본의 소스인 경우 인스턴스의 현재 구성에 맞추어 복제본도 다시 시작됩니다.

데이터베이스 플래그 구성

데이터베이스 플래그 설정

Console

  1. Google Cloud Console에서 새 Cloud Console 프로젝트를 만들거나 프로젝트 이름을 선택하여 기존 프로젝트를 엽니다.
  2. 인스턴스를 열고 수정을 클릭합니다.
  3. 플래그 섹션까지 아래로 스크롤합니다.
  4. 이전에 인스턴스에 설정되지 않은 플래그를 설정하려면 항목 추가를 클릭하고 드롭다운 메뉴에서 플래그를 선택한 다음 값을 설정합니다.
  5. 저장을 클릭하여 변경사항을 저장합니다.
  6. 개요 페이지의 플래그에서 변경사항을 확인합니다.

gcloud

인스턴스를 수정합니다.

gcloud sql instances patch [INSTANCE_NAME] --database-flags [FLAG1=VALUE1,FLAG2=VALUE2]

이 명령어는 이전에 설정한 모든 데이터베이스 플래그를 덮어씁니다. 이전에 설정된 플래그를 유지하고 새 플래그를 추가하려면 인스턴스에 설정하려는 모든 플래그의 값을 포함합니다. 명확하게 포함되지 않은 플래그는 기본값으로 설정됩니다. 값을 가지지 않는 플래그의 경우 플래그 이름 뒤에 등호('=')를 지정합니다.

REST

기존 데이터베이스에 플래그를 설정하려면 다음 안내를 따르세요.

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID

HTTP 메서드 및 URL:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 요청 본문:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 유사한 JSON 응답이 표시됩니다.

데이터베이스에 기존에 구성된 플래그가 있는 경우 이전 명령어를 수정하여 해당 플래그를 포함할 수 있습니다. PATCH 명령어는 기존 플래그를 요청에 지정된 플래그로 덮어씁니다.

모든 플래그를 기본값으로 지정

Console

  1. Google Cloud Console에서 새 Cloud Console 프로젝트를 만들거나 프로젝트 이름을 선택하여 기존 프로젝트를 엽니다.
  2. 인스턴스를 열고 수정을 클릭합니다.
  3. 데이터베이스 플래그 섹션을 엽니다.
  4. 표시된 모든 플래그 옆에 있는 X를 클릭합니다.
  5. 저장을 클릭하여 변경사항을 저장합니다.

gcloud

인스턴스의 모든 플래그를 기본값으로 지정합니다.

gcloud sql instances patch [INSTANCE_NAME] --clear-database-flags

인스턴스를 다시 시작할지 묻는 메시지가 표시됩니다.

REST

기존 인스턴스의 모든 플래그를 삭제하려면 다음을 사용합니다.

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID

HTTP 메서드 및 URL:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 요청 본문:

{
  "settings":
  {
    "databaseFlags": []
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 유사한 JSON 응답이 표시됩니다.

데이터베이스 플래그의 현재 값 보기

PostgreSQL 설정의 모든 현재 값을 보려면 psql 클라이언트에서 인스턴스에 로그인하고 다음 문을 입력합니다.

 SELECT name, setting FROM pg_settings;

지원되는 플래그 값만 변경할 수 있습니다(아래 참조).

인스턴스에 설정된 데이터베이스 플래그 확인

Cloud SQL 인스턴스에 설정된 플래그를 확인하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console에서 새 Cloud Console 프로젝트를 만들거나 프로젝트 이름을 선택하여 기존 프로젝트를 엽니다.
  2. 인스턴스를 선택하여 인스턴스 개요 페이지를 엽니다.

    데이터베이스 플래그 섹션에 설정된 데이터베이스 플래그가 나열됩니다.

gcloud

인스턴스 상태를 가져옵니다.

gcloud sql instances describe [INSTANCE_NAME]

출력에서 데이터베이스 플래그는 databaseFlags 컬렉션으로 settings 아래에 나열됩니다. 출력에서 플래그 표시에 대한 자세한 내용은 인스턴스 리소스 표시를 참조하세요.

REST

인스턴스에 구성된 플래그를 나열하려면 다음을 사용합니다.

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID

HTTP 메서드 및 URL:

GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 유사한 JSON 응답이 표시됩니다.

출력에서 databaseFlags 필드를 확인합니다.

지원되는 플래그

Cloud SQL은 특정 플래그에 PostgreSQL과 다른 범위의 매개변수 또는 옵션을 지원합니다.

A | C | D | E | F | G | H | I | J | L | M | O | P | R | S | T | V | W

Cloud SQL 플래그 유형
허용 값 및 참고사항
다시 시작
필요
베타 버전 여부
autovacuum boolean
on | off
아니요 아니요
autovacuum_analyze_scale_factor float
0 ... 100
아니요 아니요
autovacuum_analyze_threshold integer
0 ... 2147483647
아니요 아니요
autovacuum_freeze_max_age integer
100000 ... 2000000000
autovacuum_max_workers integer
1 ... varies (see note)

아니요
autovacuum_multixact_freeze_max_age integer
10000 ... 2000000000
autovacuum_naptime integer
1 ... 2147483 s
아니요 아니요
autovacuum_vacuum_cost_delay integer
0 ... 100밀리초 또는 -1이면 vacuum_cost_delay 값 사용
아니요 아니요
autovacuum_vacuum_cost_limit integer
0 ... 10000 또는 -1이면 vacuum_cost_limit 값 사용
아니요 아니요
autovacuum_vacuum_scale_factor float
0 ... 100
아니요 아니요
autovacuum_vacuum_threshold integer
0 ... 2147483647
아니요 아니요
autovacuum_work_mem integer
0 ... 2147483647KB 또는 -1이면 maintenance_work_mem 값 사용
아니요
checkpoint_completion_target float
0.0 ... 1.0
아니요 아니요
checkpoint_timeout integer
30 ... 86400 s
아니요
checkpoint_warning integer
0 ... 2147483647 s
아니요 N
cloudsql.enable_pgaudit boolean
on | off
cloudsql.iam_authentication boolean
on | off
기본값: off
commit_delay integer
0 ... 100000
아니요 아니요
commit_siblings integer
0 ... 1000
아니요 아니요
constraint_exclusion enumeration
partition | on | off
아니요 아니요
cpu_index_tuple_cost float
0.0 ... inf
아니요 아니요
cpu_operator_cost float
0.0 ... inf
아니요 아니요
cpu_tuple_cost float
0.0 ... inf
아니요 아니요
cursor_tuple_fraction float
0.0 ... 1.0
아니요 아니요
deadlock_timeout integer
1 ... 2147483647밀리초
아니요 아니요
default_statistics_target integer
1 ... 10000
아니요 아니요
default_tablespace string 아니요 아니요
default_transaction_deferrable boolean
on | off
아니요 아니요
default_transaction_isolation enumeration
serializable | 'repeatable read' | 'read committed' | 'read uncommitted'
아니요 아니요
enable_bitmapscan boolean
on | off
아니요 아니요
enable_hashagg boolean
on | off
아니요 아니요
enable_hashjoin boolean
on | off
아니요 아니요
enable_indexonlyscan boolean
on | off
아니요 아니요
enable_indexscan boolean
on | off
아니요 아니요
enable_material boolean
on | off
아니요 아니요
enable_mergejoin boolean
on | off
아니요 아니요
enable_nestloop boolean
on | off
아니요 아니요
enable_seqscan boolean
on | off
아니요 아니요
enable_sort boolean
on | off
아니요 아니요
enable_tidscan boolean
on | off
아니요 아니요
force_parallel_mode enumeration
off | on | regress
아니요 아니요
from_collapse_limit integer
1 ... 2147483647
아니요 아니요
geqo boolean
on | off
아니요 아니요
geqo_effort integer
1 ... 10
아니요 아니요
geqo_generations integer
0 ... 2147483647
아니요 아니요
geqo_pool_size integer
0 ... 2147483647
아니요 아니요
geqo_seed float
0.0 ... 1.0
아니요 아니요
geqo_selection_bias float
1.5 ... 2.0
아니요 아니요
geqo_threshold integer
2 ... 2147483647
아니요 아니요
gin_fuzzy_search_limit integer
0 ... 2147483647
아니요 아니요
gin_pending_list_limit integer
64 ... 2147483647KB
아니요 아니요
hot_standby_feedback boolean
on | off
아니요 아니요
idle_in_transaction_session_timeout integer
0 ... 2147483647밀리초
아니요 아니요
join_collapse_limit integer
1 ... 2147483647
아니요 아니요
lock_timeout integer
0 ... 2147483647밀리초
아니요 아니요
log_autovacuum_min_duration integer
0 ... 2147483647밀리초, -1이면 중지
아니요 아니요
log_checkpoints boolean
on | off
아니요 아니요
log_connections boolean
on | off
아니요 아니요
log_disconnections boolean
on | off
아니요 아니요
log_duration boolean
on | off
아니요 아니요
log_error_verbosity enumeration
terse | default | verbose
아니요 아니요
log_executor_stats boolean
on | off
아니요 아니요
log_hostname boolean
on | off
아니요 아니요
log_lock_waits boolean
on | off
아니요 아니요
log_min_duration_statement integer
-1 ... 2147483647밀리초
아니요 아니요
log_min_error_statement enumeration
debug5 | debug4 | debug3 | debug2 | debug1 | info | notice | warning | error | log | fatal | panic
아니요 아니요
log_min_messages enumeration
debug5 | debug4 | debug3 | debug2 | debug1 | info | notice | warning | error | log | fatal | panic
아니요 아니요
log_parser_stats boolean
on | off
아니요 아니요
log_planner_stats boolean
on | off
아니요 아니요
log_replication_commands boolean
on | off
아니요 아니요
log_statement enumeration
none ddl| mod| all
mod로 설정하면 모든 데이터 정의 언어(DDL) 문뿐만 아니라 INSERT, UPDATE, DELETE, TRUNCATE와 같은 데이터 수정문을 로깅합니다.
N 아니요
log_statement_stats boolean
on | off
log_parser_stats, log_planner_stats, log_executor_stats와 함께 사용 설정할 수 없음
아니요 아니요
log_temp_files integer
0 ... 2147483647KB 또는 -1이면 중지
아니요 아니요
maintenance_work_mem integer
1024 ... 2147483647KB
아니요
max_connections integer
14 ... varies (see note)

복제본 값은 기본 서버 값 이상이어야 합니다. 기본 서버의 변경사항은 기본 서버의 새 값보다 낮거나 기본값에서 변경되지 않은 값이 설정된 복제본에 전파됩니다.

max_locks_per_transaction integer
10 ... 2147483647

복제본 값은 기본 서버 값 이상이어야 합니다. 기본 서버의 변경사항은 기본 서버의 새 값보다 낮거나 기본값에서 변경되지 않은 값이 설정된 복제본에 전파됩니다.

max_prepared_transactions integer
0 ... 262143

복제본 값은 기본 서버 값 이상이어야 합니다. 기본 서버의 변경사항은 기본 서버의 새 값보다 낮거나 기본값에서 변경되지 않은 값이 설정된 복제본에 전파됩니다.

max_standby_archive_delay integer
0 ... 2147483647밀리초, 또는 -1이면 영구 대기
아니요 아니요
max_standby_streaming_delay integer
0 ... 2147483647 밀리초 또는 -1이면 영구 대기
아니요 아니요
max_wal_size integer
2 ... 2147483647

Postgres 10, 11, 12의 단위는 1MB이고, 버전 9.6의 단위는 16MB(WAL 파일 크기)입니다.

아니요
min_parallel_relation_size integer
0 ... 715827882
단위는 8KB
아니요 아니요
old_snapshot_threshold integer
0 ... 86400분 또는 -1이면 중지
아니요
parallel_setup_cost float
0.0 ... inf
아니요 아니요
parallel_tuple_cost float
0.0 ... inf
아니요 아니요
pg_stat_statements.max integer
100 ... 2147483647
아니요
pg_stat_statements.save boolean
on | off
아니요 아니요
pg_stat_statements.track enumeration
none | top | all
아니요 아니요
pg_stat_statements.track_utility boolean
on | off
아니요 아니요
random_page_cost float
0.0 ... inf
아니요 아니요
replacement_sort_tuples integer
0 ... 2147483647
아니요 아니요
ssl_max_protocol_version enumeration
Postgres 12: 사용할 최대 SSL/TLS 프로토콜 버전을 설정합니다. 유효한 값은 ssl_min_protocol_version의 경우와 같으며 모든 프로토콜 버전을 지정할 수 있는 빈 문자열이 추가됩니다.
아니요 아니요
ssl_min_protocol_version enumeration
Postgres 12: 사용할 최소 SSL/TLS 프로토콜 버전을 설정합니다. 유효한 값은 현재 TLSv1, TLSv1.1, TLSv1.2, TLSv1.3입니다.

기본값은 TLSv1입니다.

아니요 아니요
standard_conforming_strings boolean
on | off
아니요 아니요
synchronize_seqscans boolean
on | off
아니요 아니요
temp_buffers integer
100 ... 1073741823
단위는 8KB
아니요
temp_file_limit integer
1048576 ... 2147483647KB
아니요 아니요
trace_notify boolean
on | off
아니요 아니요
trace_recovery_messages enumeration
debug5 | debug4 | debug3 | debug2 | debug1 | log | notice | warning | error
아니요 아니요
trace_sort boolean
on | off
아니요 아니요
track_activities boolean
on | off
아니요 아니요
track_activity_query_size integer
100 ... 102400
아니요
track_commit_timestamp boolean
on | off
아니요
track_counts boolean
on | off
아니요 아니요
track_functions enumeration
none | pl | all
아니요 아니요
track_io_timing boolean
on | off
아니요 아니요
vacuum_cost_delay integer
0 ... 100밀리초
아니요 아니요
vacuum_cost_limit integer
1 ... 10000
아니요 아니요
vacuum_freeze_min_age integer
0 ... 1000000000
아니요 아니요
vacuum_freeze_table_age integer
0 ... 2000000000
아니요 아니요
vacuum_multixact_freeze_min_age integer
0 ... 1000000000
아니요 아니요
vacuum_multixact_freeze_table_age integer
0 ... 2000000000
아니요 아니요
work_mem integer
64 ... 2147483647KB
아니요

문제해결

자세한 내용을 보려면 표의 링크를 클릭하세요.

문제 설명 문제 원인 해결 방법
시간대를 설정하기 위한 플래그가 없습니다. 시간대 플래그는 지원되지 않습니다. 몇 가지 해결 방법이 있습니다.

시간대를 설정하기 위한 플래그가 없습니다.

Postgres는 사용자 요구사항에 따라 시간대를 조정하는 시간대 플래그를 지원하지 않습니다.

문제 원인

시간대 플래그는 지원되지 않습니다.

해결 방법

세션당 시간대를 설정할 수 있지만 이 경우 로그아웃 시 만료됩니다. 데이터베이스에 연결하고 데이터베이스 시간대를 사용자 또는 데이터베이스별로 원하는 시간대로 설정하는 것이 더 나은 해결책입니다.

ALTER DATABASE dbname SET TIMEZONE TO 'timezone';
ALTER USER username SET TIMEZONE TO 'timezone';

이 설정은 세션이 닫혀도 .conf 구성을 모방한 상태로 유지됩니다.

다음 단계