목록전체 글 (430)
나의 잡다한 노트 및 메모
pg_rewind는 PostgreSQL에 내장된 유틸리티로,실패한 이전 primary 서버의 데이터 디렉터리와 현재 새로운 primary 서버의 데이터 디렉터리 간의 차이를 계산하여,이전 primary 서버를 신속하게 동기화(리와인드)할 수 있도록 도와줍니다.주요 기능 및 사용 목적빠른 재동기화:기존 primary가 장애로 인해 다운된 후, 새로운 primary로 선출된 서버와 데이터가 약간씩 달라진 상태일 때,pg_rewind를 사용하면 전체 데이터베이스의 베이스백업을 다시 만드는 대신,변경된 부분만 빠르게 동기화할 수 있습니다.복구 효율성:데이터 복제 지연이나 장애 복구 시, 전체 클러스터를 재구성하는 시간과 리소스를 절약할 수 있습니다.클러스터 페일오버 후 복원:예를 들어, Patroni와 같은 H..
정의 : 통상적으로 시스템이 느려지거나 멈추는 현상을 Hang up 이라고 한다.Server Instance는 실행되고 있으나, 아무런 응답이 없는 상황을 말한다.비슷한 의미로 slowdown이 있다. server instance의 응답이 매우 느려지는 상태이다. 이런 현상들은 대부분이 network, user application, jvm, rdbms, web/was 중 하나 이상의 병목으로 인해서 발생한다. Hang up의 다양한 유형 1. Deadlockmulti thread 사용 시 공유 영역을 보호하기 위해 locking을 사용한다. 두 개 이상의 thread가 서로 lock을 잡고 기다리는 상태. 서로 lock이 풀리지 않고 무한정 대기하는 상태를 말한다. 2. JDBC로 인한 Server ..
patroni에서 YAML 파일은 클러스터의 동작과 각 노드의 역할, postgreSQL 서버의 설정 등을 정의하는 설정파일이다.YAML 파일에는 다음과 같은 항목들을 추가할 수 있다.클러스터 스코프 및 노드 식별scope: 클러스터의 이름이나 식별자를 지정합니다. 같은 스코프를 가진 노드들끼리 하나의 클러스터로 인식됩니다.name: 해당 노드의 고유 이름을 지정합니다.DCS (Distributed Configuration Store) 설정Patroni는 etcd, Consul, ZooKeeper 등 분산 구성 저장소를 이용해 리더 선출과 상태 공유를 수행합니다.해당 항목에서는 사용하는 DCS의 종류와 접속 정보(예: 호스트, 포트 등)를 설정합니다.REST API 설정Patroni는 상태 조회나 제어를..
1. 데이터베이스 관리자 (DBA, Database Administrator)주요 역할:설치 및 구성: 데이터베이스 서버 설치, 클러스터 구성, 초기 설정 등.운영 및 유지보수: 백업, 복구, 업그레이드, 모니터링 및 성능 튜닝.보안 관리: 접근 제어, 암호화, 취약점 점검 및 보안 정책 수립.문제 해결: 장애 발생 시 원인 분석 및 신속한 복구 작업. 2. 데이터베이스 개발자주요 역할:스키마 설계 및 모델링: ER 다이어그램 작성, 데이터 모델링, 정규화 작업.SQL 프로그래밍: 복잡한 쿼리 작성, 저장 프로시저, 트리거 개발.애플리케이션 연동: 데이터베이스와 애플리케이션 간의 인터페이스 구현 및 최적화.3. 데이터 엔지니어주요 역할:데이터 파이프라인 구축: ETL(Extract, Transform, ..
Locale은 UI에서 사용되는 언어, 지역 설정, 출력 형식 등을 정의하는 문자열이다. Unix와 Linux 같은 POSIX 기반의 시스템에서는 같은 형식을 공유하고 있다. 애플의 맥OS를 비롯한 Darwin 계열 os들도 POSIX호환이 되기 때문에 같은 형식의 로케일 문자열을 사용한다. 환경변수를 설정해서 설정을 변경하고, 이 설정값에 따라 메시지, 시간 형식, 통화 형식 등의 출력이나 동작을 변경할 수 있다. 로케일 형식language_[territory][.codeset] 한국어의 경우는 ko_KR.UTF-8 을 주로 사용한다.en_US.UTF-8 -> 영어, 미국, UTF-8 인코딩 쉘에서는 locale 명령어를 사용해 현재 시스템에 적용돼있는 로케일 값을 확인할 수 있다.export를 통해 ..
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로 승격..