본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

클러스터 설정 옵션

원문 보기 위키 갱신

Managed Postgres 클러스터는 커넥션 풀링, 요금제 변경, 사용자와 역할, 데이터베이스 관리 등 다양한 설정 옵션을 제공해요. 이 페이지에서는 커넥션 풀 모드를 구성하고, 요금제를 바꾸고, 사용자와 데이터베이스를 만드는 방법을 대시보드와 flyctl로 설명해요.

출처: 문서

본문

커넥션 풀링 (Connection Pooling)

모든 Managed Postgres 클러스터에는 커넥션 풀링을 위한 PGBouncer가 포함되어 있어 데이터베이스 연결을 효율적으로 관리하는 데 도움을 줘요. 풀 모드(pool mode)를 변경해 PGBouncer가 클라이언트에 연결을 할당하는 방식을 구성할 수 있어요.

애플리케이션의 커넥션 풀 설정(수명, 유휴 타임아웃, 풀 크기, 언어별 예시) 구성에 대해서는 클라이언트 연결하기를 참고하세요.

풀 모드 옵션

두 가지 풀 모드를 사용할 수 있어요:

  • 세션 모드 (Session): 연결이 전체 세션 동안 클라이언트에 할당돼요. 기본 모드이며 트랜잭션, 준비된 문(prepared statements), 어드바이저리 잠금(advisory locks)을 포함한 PostgreSQL 기능과 가장 호환성이 높아요.
  • 트랜잭션 모드 (Transaction): 연결이 트랜잭션별로 할당돼요. 이 모드는 더 높은 연결 재사용과 높은 부하에서 더 나은 성능을 제공하지만, 일부 PostgreSQL 기능에는 제한이 있어요.

각 모드를 언제 사용할까

세션 모드는 다음 경우에 사용하세요:

  • 애플리케이션이 준비된 문(statement)을 사용할 때
  • 어드바이저리 잠금이나 기타 세션별 기능이 필요할 때
  • 어떤 모드를 선택해야 할지 확실하지 않을 때(세션이 더 안전한 기본값이에요)
  • 애플리케이션에 오래 실행되는 트랜잭션이 있을 때

트랜잭션 모드는 다음 경우에 사용하세요:

  • 짧은 트랜잭션이 많은 고처리량 애플리케이션이 있을 때
  • 연결 재사용을 최대화하고 싶을 때
  • 애플리케이션이 주로 준비된 문 없이 단순 쿼리를 사용할 때
  • 같은 하드웨어로 더 많은 동시 연결을 지원해야 할 때
  • Elixir의 Ecto 라이브러리를 사용한다면, 풀러(pooler)를 통해 연결할 때 반드시 트랜잭션 풀 모드를 사용해야 해요. Ecto의 커넥션 풀링 동작이 PGBouncer의 세션 모드와 호환되지 않기 때문이에요.

대시보드에서 풀 모드 변경

클러스터의 풀 모드를 변경하려면:

  1. 대시보드에서 MPG 클러스터의 "Connect" 탭으로 이동
  2. "View Pooler Settings"를 클릭해 설정 옵션 확장
  3. 원하는 풀 모드 선택
  4. "Update Pool Mode" 클릭
  5. 모달 대화상자에서 변경 확인

참고: 풀 모드를 변경하면 커넥션 풀러 노드가 재시작되어 잠깐의 연결 중단이 발생할 수 있어요. 데이터베이스 자체는 계속 실행돼요.

MPG 요금제 변경

Managed Postgres 요금제는 클러스터가 가진 리소스의 양을 결정해요. 모든 요금제에는 프라이머리와 레플리카, pg bouncers, 백업이 포함돼요. 클러스터의 요금제는 언제든지 변경할 수 있으며, 클러스터의 Machines가 새 리소스로 업데이트돼요.

요금제를 변경하려면:

  1. 대시보드에서 MPG 클러스터의 "Settings" 탭으로 이동
  2. 목록에서 원하는 요금제 선택
  3. "Update Configuration" 버튼 클릭
  4. 요금제가 업데이트되고 모든 설정 변경이 데이터베이스 노드에 적용돼요.

업그레이드와 전환(switchover) 동안 데이터베이스 노드가 재시작돼요. 잠시 가동 중단이 있을 수 있으니 그에 맞게 계획하세요.

사용자와 역할 (Users and Roles)

Managed Postgres 클러스터는 fly-user라는 관리자 사용자 하나로 생성돼요. 대시보드나 flyctl을 통해 추가 데이터베이스 사용자를 만들고 역할을 설정할 수 있어요.

현재 MPG는 사용자에게 다음 역할을 지원해요:

스키마 관리자 (Schema Admin)

스키마 관리자 역할은 슈퍼유저(Superuser) 역할에 가장 가까워요. 클러스터에 대한 전체 읽기/쓰기 접근권과 데이터베이스 구조를 수정하는 능력을 제공해요.

클러스터가 생성될 때 fly-user 사용자에게 부여되는 기본 역할이에요.

스키마 관리자 사용자가 할 수 있는 것:

  • 모든 데이터베이스, 테이블, 스키마에 읽기/쓰기
  • 테이블, 뷰, 함수, 기타 데이터베이스 객체 생성, 변경, 삭제
  • 새 스키마 생성 및 데이터베이스 구조 관리
  • 클러스터의 모든 데이터베이스에 연결
  • 세션별 작업을 위한 임시 테이블 생성

스키마 관리자 사용자가 할 수 없는 것:

  • 새 데이터베이스 생성. 이것은 대시보드에서 할 수 있어요
  • 위에 나열된 것 외에 슈퍼유저 권한이 필요한 기타 작업

쓰기 권한 (Writer)

Writer 역할은 데이터 구조를 수정하는 능력은 제한하면서 데이터에 대한 전체 읽기/쓰기 접근을 제공해요.

Writer 사용자가 할 수 있는 것:

  • 모든 기존 테이블과 스키마에 읽기/쓰기
  • 모든 데이터베이스에서 레코드 삽입, 업데이트, 삭제
  • 클러스터의 모든 데이터베이스에 연결

Writer 사용자가 할 수 없는 것:

  • 테이블 구조 생성 또는 수정
  • 새 스키마나 데이터베이스 생성
  • 함수, 프로시저, 기타 스키마 객체 생성
  • 임시 테이블 생성
  • 데이터베이스 권한 또는 역할 변경

읽기 권한 (Reader)

Reader 역할은 클러스터의 모든 데이터에 읽기 전용 접근을 제공해요. 이 역할은 리포팅이나 분석 연결에 잘 맞아요.

Reader 사용자가 할 수 있는 것:

  • 데이터베이스, 테이블, 스키마 전체의 모든 데이터 보기
  • 클러스터의 모든 데이터베이스에 연결
  • SELECT 쿼리 실행

Reader 사용자가 할 수 없는 것:

  • 데이터 삽입, 업데이트, 삭제
  • 데이터베이스 객체 생성 또는 스키마 수정
  • 임시 테이블 생성
  • 데이터베이스 구조나 권한 수정

추가 사용자 만들기

대시보드로 추가 사용자를 만들려면:

  1. 대시보드에서 MPG 클러스터의 "Users" 탭으로 이동
  2. 새 사용자의 이름 입력
  3. "Create User" 클릭 후 사용자가 생성될 때까지 대기.

flyctl로 추가 사용자를 만들려면:

  1. fly mpg users create를 실행해 MPG 클러스터의 새 사용자를 생성

참고: 2025년 7월 이전에 만든 클러스터라면 새 사용자를 추가하기 전에 새 역할 시스템을 활성화해야 해요. 이는 대시보드의 Users 탭에서 할 수 있어요.

커스텀 사용자로 인증

사용자가 생성되면 대시보드의 "Connect" 탭에서 그를 위한 연결 문자열을 생성할 수 있어요. 인증하려는 사용자를 선택하면 연결 문자열이 그 사용자의 세부 정보로 업데이트돼요.

데이터베이스 (Databases)

Managed Postgres 클러스터는 기본 fly-db 데이터베이스로 생성돼요. 대시보드나 flyctl을 통해 추가 데이터베이스를 만들 수 있어요.

이 데이터베이스들은 클러스터의 기존 사용자들이 자신의 역할에 따라 접근할 수 있어요.

추가 데이터베이스 만들기

대시보드로 추가 데이터베이스를 만들려면:

  1. 대시보드에서 MPG 클러스터의 "Databases" 탭으로 이동
  2. "Databases" 섹션 아래 입력 필드에 새 데이터베이스 이름 입력
  3. "Create database" 클릭 후 데이터베이스가 생성될 때까지 대기.

flyctl로 추가 데이터베이스를 만들려면:

  1. fly mpg databases create를 실행해 MPG 클러스터의 새 데이터베이스를 생성.

더 알아보기 (Learn more)