본문 바로가기

PostgreSQL6

[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.
[Kubernetes] Pgadmin4 Ingress 적용 데이터베이스에 접속하여 관리를 할 수 있는 툴이 여러 가지 있는데, 사람들이 가장 많이 사용하는 툴로 Dbeaver가 있고, PostgreSQL 같은 경우 Pgadmin4라는 전용 툴도 따로 존재한다. (다른 예 : MySQL의 Workbench) 여기서 Pgadmin4 같은 경우, 웹으로 접속하여 설치형 애플리케이션과 동일하게 이용할 수 있는 컨테이너 이미지가 존재하고, 이를 쿠버네티스 Ingress를 적용하여 접속하는 방법을 알아볼 것이다.  문제점 Kubernetes에서 Ingress로 클러스터 내부의 서비스를 이용할 때, 일반적으로 애플리케이션 API는 Prefix에 오는 Path를 제거해 주는 방식으로 많이 이용하는데, 이는 구현된 API의 로직에 따라 에러가 발생할 수 있다. Prefix를 제.. 2024. 7. 7.
[PostgreSQL] Publication, Replication_slot 조회 및 삭제 PostgreSQL에서 데이터베이스 복제를 할 때 사용되는 Publication과 Replication_slot의 조회와 삭제와 관련된 명령어이다. 1. Publication 조회 및 삭제 -- psql -- 모든 publication 조회 select * from pg_publication; -- publication과 관련된 모든 테이블 조회 select * from pg_publication_tables; -- publication 삭제 drop publication ; 2. Replication_slot 조회 및 삭제 -- psql -- 모든 replication_slot 조회 select * from pg_replication_slots; -- replication_slot 삭제 select p.. 2024. 4. 23.
[PostgreSQL] Replication Slot 과거에는 복제 슬롯(Replication Slot)이 없을 때, 스트리밍 복제에서 원본(Master)은 복제(Slave)의 상태를 알지 못하였고, 이에 따라 WAL 세그먼트를 관리하는 것은 어려운 일이었다. 그로 인하여 아래와 같은 문제점이 발생하게 되었다. [예시] 마스터 서버에서 큰 트랜잭션이 일어나고 있고, 복제 서버가 정지 상태(시스템 패키지 업그레이드, 하드웨어 업그레이드 등의 이유) 일 때, 해당 복제 서버의 상태와 관계없이 마스터 서버에서는 트랜잭션을 마치고 체크포인트를 통과하면 트랜잭션 로그(WAL 세그먼트)를 제거를 하게 되는데, 정지된 복제 서버에서는, 복제본의 유지 관리가 중단되었기 때문에, 복제 지연이 크게 발생하여 재기동을 할 때, 아래 에러가 발생된다. LOG: started s.. 2024. 2. 16.
[ELK] Logstash - Postgresql 연결 실패 (Docker Network) 도커를 이용하여 PostgreSQL을 Build 후 해당 DB의 데이터를Logstash를 이용하여 Elasticsearch와 연동하는 과정에서 생긴 에러이다. [ERROR][logstash.inputs.jdbc ][main][01b8fcd4a63cf0b14c82113572d5c31371649609a57c0007cc38eb353a2e434e] Unable to connect to database. Tried 1 times {:error_message=>"Java::OrgPostgresqlUtil::PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the pos.. 2023. 2. 24.