목록DB/PostgreSQL (6)
내 잡다한 노트
최근에 올렸던 도커에서 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에서 사용하는 대부분의..

Patroni는 PostgreSQL의 고가용성(HA)을 위해 설계된 오픈 소스 도구로, 자동 장애 조치(auto-failover)와 클러스터 관리를 간소화하는 데 중점을 둡니다. 다음은 Patroni에 대한 자세한 설명입니다.1. Patroni란?정의:Patroni는 Python으로 작성된 PostgreSQL 전용 HA 솔루션입니다. 각 PostgreSQL 인스턴스(노드)를 모니터링하고, 클러스터 내에서 자동으로 리더(Primary)를 선출하거나 장애 발생 시 standby(Replica)를 승격하는 역할을 합니다.주요 역할:자동 장애 조치 (Auto-Failover): Primary 노드에 문제가 생기면, 사전에 구성된 규칙과 우선순위에 따라 standby 노드 중 하나를 자동으로 Primary로 승격..