Database5 [PostgreSQL] 데이터베이스 백업 (pg_dump, pg_dumpall, Filesystem 백업) 데이터베이스를 사용할 때 장애 발생 시 대응을 위하여 여유분을 별도로 저장해 두거나, 다른 서버로 이관을 할 때 백업을 많이 이용한다. 이번 글은 PostgreSQL에서의 백업에 대하여 알아볼 것이다. Psql(PostgreSQL)의 가장 손쉬운 백업 방식으로는 3가지가 있다.※ pg_backrest나 pg_basebackup 및 PITR과 같은 방식도 존재하고 설정이 복잡해서 이번 글에서는 생략 해당 3가지 방식으로는 pg_dump와 pg_dumpall 그리고 Filesystem 백업이 있다. 순서대로 해당 방식들이 가지는 특징과 장단점에 대하여 알아볼 것이다.1. pg_dumppg_dump는 단일 데이터베이스 위주의 백업을 위해 사용되는 툴이다. 데이터베이스가 실행 중인 상태에서도 백업 가능하.. 2024. 11. 18. [Debezium] 쿠버네티스 내 PostgreSQL Source Connector 구현 이번 글은 Debezium의 Source Connector와 Postgresql의 Logical Replication을 활용하여, 데이터베이스의 2개 테이블을Kafka로 복제하는 내용을 다뤄볼 것이다. Kafka Connector로 크게 Source Connector와 Sink Connector가 있는데, Source Connector는 원천 데이터 소스를 카프카로 보내는 역할을, Sink Connector는 카프카에 저장된 데이터를 이관할 플랫폼으로 전송하는 역할을 한다. 위 사진에서 카프카를 기준으로 Data Source -> Kafka까지의 역할이 Source Connector의 역할이다. https://debezium.io/documentation/reference/3.0/con.. 2024. 11. 8. [PostgreSQL] Replication Slot 과거에는 복제 슬롯(Replication Slot)이 없을 때, 스트리밍 복제에서 원본(Master)은 복제(Slave)의 상태를 알지 못하였고, 이에 따라 WAL 세그먼트를 관리하는 것은 어려운 일이었다. 그로 인하여 아래와 같은 문제점이 발생하게 되었다. [예시] 마스터 서버에서 큰 트랜잭션이 일어나고 있고, 복제 서버가 정지 상태(시스템 패키지 업그레이드, 하드웨어 업그레이드 등의 이유) 일 때, 해당 복제 서버의 상태와 관계없이 마스터 서버에서는 트랜잭션을 마치고 체크포인트를 통과하면 트랜잭션 로그(WAL 세그먼트)를 제거를 하게 되는데, 정지된 복제 서버에서는, 복제본의 유지 관리가 중단되었기 때문에, 복제 지연이 크게 발생하여 재기동을 할 때, 아래 에러가 발생된다. LOG: started s.. 2024. 2. 16. [Database] 이상 / 정규화 / 반정규화 DB를 이용할 때, 특정 조건을 충족하면 여러 문제를 야기할 수 있다. 이를 이상이라고 하며, 아래 내용을 통해 그 종류를 알 수 있다. 1. 이상 (Anomaly) 이상이란 DB에서 중복된 데이터 구조로 인하여 예기치 못하게 발생하게 되는 현상이다. 이상의 종류에는 3가지가 있다. 삽입 이상 : 데이터를 DB에 Insert 할 때, 의도하지 않은 값들이 같이 입력이 되는 현상 - Ex : 특정 속성의 값만 추가하고자 할 때, 다른 속성 값이 비게 되며 부분이 Null 값으로 입력되거나 데이터의 삽입이 실패하는 현상을 볼 수 있다. 삭제 이상 : 하나의 튜플을 삭제할 때, 의도하지 않은 값들과 함께 삭제되는 현상 - Ex : 특정 속성 값을 기준으로 튜플을 삭제하면 다른 속성들과 함께 삭제가 돼버리는 현.. 2023. 4. 11. [Database] Index Index : 데이터베이스는 관련 레코드를 찾기 위해 전체 테이블을 스캔해야 하고, 이는 특히 테이블이 매우 큰 경우 매우 느리고 비효율적일 수 있기에 Index를 사용하게 된다. Index는 테이블의 특정 Column 또는 Field를 기반의 데이터를 빠르게 검색할 수 있는 데이터 구조이며, 일반적으로 B tree(Balance Tree) Algorithm에 의하여 Index가 생성이 된다. [Index 생성에 기반이 되는 알고리즘이 다수 존재] 페이지의 내용을 기반으로 특정 페이지를 빠르게 찾을 수 있는 책의 색인과 유사하다. 인덱스가 효율적인 이유는 대수확장성을 들 수 있으며, 이는 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것을 말한다. [깊이가 증가할 때마다 최대 인덱스 항목의 수는.. 2023. 2. 12. 이전 1 다음