목록DB/PostgreSQL (9)
나의 잡다한 노트 및 메모
pg_hba는 PostgreSQL 데이터베이스 서버의 접근 제어와 인증을 관리하는 핵심 구성 파일인 pg_hba.conf (PostgreSQL Host-Based Authentication configuration file) 를 의미해. 이 파일은 PostgreSQL 서버에 접속하려는 클라이언트의 IP 주소, 사용자, 데이터베이스 이름 등 다양한 조건에 따라 접근을 허용하거나 거부하는 역할을 합니다.주요 기능 및 역할접속 제어:호스트 기반 인증:pg_hba.conf 파일은 클라이언트가 서버에 접근할 때 어떤 인증 방법을 사용해야 하는지 결정합니다.접근 허용/거부:각 접속 시도에 대해 클라이언트의 IP 주소, 사용자, 데이터베이스 등의 조건을 확인하여 연결을 허용하거나 차단할 수 있습니다.인증 방법 설정:..
patronictl -c /etc/patroni/patroni.yml pausepostgresql에 영향을 주지 않고 patroni 서비스를 중단할 수 있다.patroni가 유지관리 모드로 들어가게 된다.patronictl -c /etc/patroni/patroni.yml resume유지관리 모드에서 벗어난다.patroni 클러스터 상태 확인 명령어patronictl -c /etc/patroni.yml list실행 명령어patroni /etc/patroni.yml > patroni.log 2>&1 &실행할 때 postgres 계정으로 실행해줘야한다.sudo -u postgres nohup patroni /etc/patroni.yml > /var/log/postgresql/patroni.log 2>&1 &..
우분투 환경이다. apt를 통해 설치sudo apt install postgresql postgresql-contrib postgresql.conf에서 설정새로운 위치에 옮기려면 이동시켜야한다.이때, 옮길 데이터의 디렉토리의 소유자와 그룹을 postgres로 설정하자.port나 max_connections 설정도 여기에서 잘 설정하면 된다.sudo chown -R postgres:postgres /ssd/postgresql/17/mainsudo rsync -av /var/lib/postgresql/17/main/ /ssd/postgresql/17/main/기본적으로 data를 다른 directory에서 쓸려면 data_directory를 수정한다. 원격 접속 허용여기에서 listen_addresses ..
최근에 올렸던 도커에서 db를 올리지 말아야하는 이유에 대한 글과 어느정도 이어지는 부분이다.운영의 복잡성 등등의 이유로 베어메탈 환경에서 db를 올려야겠다는 철학을 가지고 Pigsty를 만들어 PostgreSQL을 쉽게 관리할 수 있게 해주는 도구이다. Pigsty는 PostgreSQL을 기반으로 한 오픈소스 데이터베이스 서비스 아키텍처입니다. 주로 다음과 같은 특징과 목적을 가지고 있습니다:Local-first RDS 대안Pigsty는 클라우드 기반의 “build once, run anywhere” 접근 방식 대신, 각 서버(또는 OS 환경)에 최적화된 로컬 데이터베이스 서비스를 제공합니다.이를 통해 하드웨어의 성능과 신뢰성을 최대한 활용할 수 있습니다.PostgreSQL 배포판Pigsty는 Pos..
pg_rewind는 PostgreSQL에 내장된 유틸리티로,실패한 이전 primary 서버의 데이터 디렉터리와 현재 새로운 primary 서버의 데이터 디렉터리 간의 차이를 계산하여,이전 primary 서버를 신속하게 동기화(리와인드)할 수 있도록 도와줍니다.주요 기능 및 사용 목적빠른 재동기화:기존 primary가 장애로 인해 다운된 후, 새로운 primary로 선출된 서버와 데이터가 약간씩 달라진 상태일 때,pg_rewind를 사용하면 전체 데이터베이스의 베이스백업을 다시 만드는 대신,변경된 부분만 빠르게 동기화할 수 있습니다.복구 효율성:데이터 복제 지연이나 장애 복구 시, 전체 클러스터를 재구성하는 시간과 리소스를 절약할 수 있습니다.클러스터 페일오버 후 복원:예를 들어, Patroni와 같은 H..
patroni에서 YAML 파일은 클러스터의 동작과 각 노드의 역할, postgreSQL 서버의 설정 등을 정의하는 설정파일이다.YAML 파일에는 다음과 같은 항목들을 추가할 수 있다.클러스터 스코프 및 노드 식별scope: 클러스터의 이름이나 식별자를 지정합니다. 같은 스코프를 가진 노드들끼리 하나의 클러스터로 인식됩니다.name: 해당 노드의 고유 이름을 지정합니다.DCS (Distributed Configuration Store) 설정Patroni는 etcd, Consul, ZooKeeper 등 분산 구성 저장소를 이용해 리더 선출과 상태 공유를 수행합니다.해당 항목에서는 사용하는 DCS의 종류와 접속 정보(예: 호스트, 포트 등)를 설정합니다.REST API 설정Patroni는 상태 조회나 제어를..
PostgreSQL은 기본적으로 Citus 없이도 여러 노드로 배포할 수 있지만, **Citus는 특정한 방식으로 수평 확장을 지원하는 확장(extension)**입니다. PostgreSQL을 여러 노드로 구성하는 방법과 Citus의 차이점을 비교해볼게요.1. PostgreSQL에서 Citus 없이 클러스터를 구성하는 방법Citus 없이도 PostgreSQL을 여러 개의 노드로 구성할 수 있습니다. 일반적으로 사용되는 방법은 다음과 같습니다.① 리플리케이션 (Replication)스트리밍 리플리케이션 (Streaming Replication)마스터(Primary) - 리플리카(Standby) 구조로 동작.마스터 노드에서 변경 사항이 발생하면 리플리카 노드로 데이터를 복제.리플리카는 기본적으로 읽기 전용(..
Citus란?Citus는 PostgreSQL을 수평 확장(Sharding) 가능하게 만들어주는 확장(extension) 입니다. 즉, PostgreSQL을 여러 개의 노드(서버)로 구성하여 하나의 분산 데이터베이스처럼 동작하도록 하는 확장 기능입니다.Citus의 주요 특징수평 확장(Sharding) 지원데이터를 여러 개의 노드(서버)로 자동 분산하여 저장합니다.데이터가 많아지더라도 성능을 유지하면서 확장할 수 있습니다.병렬 쿼리 실행여러 노드에서 동시에 쿼리를 실행하여 성능을 높일 수 있습니다.대량의 데이터를 처리할 때 유용합니다.고성능 OLAP(분석) 및 OLTP(트랜잭션) 지원실시간 분석 및 대량 트랜잭션 처리에 적합합니다.PostgreSQL과 완벽한 호환기존 PostgreSQL에서 사용하는 대부분의..