DBA/Postgresql 61

암호화 extension - pgcrypto

pgcrypto : PostgreSQL에서 지원하는 암복호화 기능 지원 Extension   1)  설치 가능한 extension 리스트에 pgcrypto가 있는지 확인 후 create extension 수행.select * from pg_available_extensions where name='pgcrypto' ; 2) Extension 설치CREATE EXTENSION PGCRYPTO; 3) pgcrypto function 활용select pgp_sym_encrypt(암호화컬럼, 'TEST_EXTEN') from 테이블-- 'TEST_EXTEN' 부분은 사용자가 임의로 지정하는 것으로 암복호화 시 키워드가 됨.-- 이미 생성된 테이블에 암호화가 필요한 경우 위 sql을 이용해 update하면 됨...

DBA/Postgresql 2024.06.11

PostgreSQL 제약 조건

데이터 타입은 테이블에 데이터의 종류로 저장될 수 있다. SQL은 컬럼과 테이블에 제약 조건을 정의할 수 있다. 만약, 제약 조건에 맞지않는 데이터를 저장하려고 할 때 에러가 발생하게 된다. 제약 조건(Constraint)은 데이터의 무결성을 지키기 위해 제한된 조건을 말한다. 제약 조건에는 몇 가지 종류가 있으며 지원하는 수준도 DBMS에 따라 조금씩 다르다. 이 페이지는 PostgreSQL를 기준으로 제약 조건을 설명할 것이다. 제약 조건의 종류Check ConstraintsNot-Null ConstraintsUnique ConstraintsPrimary KeysForeign KeysCheck ConstraintsCheck Constraints는 가장 일반적인 제약 조건이다. Check Constra..

DBA/Postgresql 2024.05.03

Postgresql 테이블 파티셔닝 (Table Partitioning)

개요1) 서비스가 점점 커지고 Storage에 저장되는 데이터의 규모가 커짐에 따라, 기존에 사용하던 Stroage의 한계와 성능의 저하가 야기됨.  - 논리적인 Element (Tuple) 들을 다수의 Entity (Table)로 쪼개는 행위를 Table partitioning이라 하며, 즉 큰 Table이나 Index를 관리하기 쉬운 Partition이라는 작은 단위로 물리적 분할하는 것을 의미한다.  - 파티셔닝은 물리적인 데이터 분할이 발생해도, 논리적 주소 (Table)은 변경되지 않기 때문에 Application이나 유저는 이를 인식하지 못한다.2) Postgresql의 경우, 하나의 Table이 File로 저장되며, Table의 크기가 1GB가 될때마다 Segmentation되어 분할된다. ..

DBA/Postgresql 2024.05.03

PostgreSQL 업그레이드 방법

pg_dumpall을 통한 데이터 업그레이드: 해당 방법은 PostgreSQL에서 기본적으로 제공하는 명령어로, 아주 간단하고 직관적인 업그레이드 진행합니다.  클러스터에 있는 모든 데이터들을 SQL 구문으로 변환하여 표준출력(stdout)으로 내보냅니다. 업그레이드  방법은 새로운 버전을 설치하기 전에pg_dumpall로 모든 데이터들을 백업합니다.$ pg_dumpall -U postgres > dump.sql현재  작업하던 디렉토리에 dump.sql 이라는 이름의 파일이 만들어 집니다.백업하는 경우 데이터베이스가 업데이트되고 있는지 확인하십시오. 백업의 무결성에는 영향을 미지치지 않지만 변경된 데이터는 포함되지 않습니다.  이전 버전 종료$ /etc/init.d/postgresql stop[ ok..

DBA/Postgresql 2024.05.03

Postgresql Log 설정 방법

Log 관련 설정 및 주요 옵션 설명 설정설명옵션Restart 필요 여부log_destinationLog의 출력형태.stderr csvlog syslog eventlog log_directoryLog 파일이 쌓일 경로를 지정한다[경로] log_file_modeLog파일의 권한을 지정한다.[권한] log_filenameLog파일의 이름을 지정한다. ISO파입의 Timestamp 형식을 지원한다.(예: %Y-%m-%d_%H%M%S)[파일명] log_line_prefix각 로그 한줄마다 말머리에 찍힐 Prefix  log_min_duration_statementSlowLog를 찍을 log의 duration  log_min_error_statementErrorLog의 Level  log_min_messagesA..

DBA/Postgresql 2024.05.03

Postgresql Replication 방식의 차이 (Streaming Replication vs Log shipping Replication)

Postgresql의 Replication 방식1) Streaming Replication - Streaming Replication은 Master/Slave간 TCP/IP 연결을 통해 WAL에 기록되는 변경점을 실시간으로 전송하는것이다. - Master Database는 자체적으로 WAL sender라는 프로세스를 기동시키며, WAL에 기록되는 부분을 실시간으로 읽어 Slave서버에 전송한다 (기본적으로 WAL은 /pg_xlog 라는 폴더에 기록된다)2) Log shipping Replication - Log-shipping replication은 WAL에 기록되는 모든 내용을 Archive File로 남기며, 해당 Archive File을 Slave 서버로 전송한다. - 해당 Replication은 ..

DBA/Postgresql 2024.05.03

wal_log_hint에 대한 테스트

WAL_LOG_HINT가 설정되지 않았을때의 pg_rewind 테스트g_rewind를 사용하기 위해서는 Target Database (Failover 되기전의 Master 서버였던 서버, Old Master)에서 wal_log_hint 옵션이 활성화 되어 있어야한다.만약 rewind시 활성화가 되어 있지 않다면 다음과 같은 에러메세지를 출력한다postgres@VS1-REPL-TEST-001:~$ /usr/lib/postgresql/12/bin/pg_rewind --source-server='host=10.**.***.** port=5432 user=TEST1 password=! dbname=test' --target-pgdata=/var/lib/postgresql/12/main -Ppg_rewind: c..

DBA/Postgresql 2024.05.03

Failover & Failback (pg_rewind)

개요- Master-Slave로 Replication 구성을 통해 운영중, Master서버의 장애로인해 Slave가 Promote되어 기존의 Write를 담당하면 Master서버 대신, Slave 서버가 서비스를 받는것을 Failover (절체)라 한다. (원칙적으로 Slave서버는 Read-only 상태이며, Promote 이후에는 Writable slave로 동작한다)- Master서버의 장애가 복구 된 이후, Replication을 재 설정하기 위해서는 데이터의 무결성 및 정합성을 위해 무조건 Database는 Offline으로 진행해야 하며, Slave Database 서비스 중지 → Base Backup 및 Migration → Master서버 기동 → Slave 서버 기동 순서로 장애복구를 진..

DBA/Postgresql 2024.05.03

POSTGRESQL Archieve Log를 통한 복구 TEST

개요- Replication 설정 없이, WAL 파일로만 Database를 Restore할 수 있는가?시나리오1) SS가 무너진 경우, DR로 서비스 이전.2) DR에서 서비스 중영중, SS 복구로 DR의 쌓인 데이터를 다시 SS로 가져옴세팅1) 서버 2대 동시 생성2) Archieve Log Enable## vi /etc/postgresql/9.6/main/postgresql.conf #------------------------------------------------------------------------------# WRITE AHEAD LOG#------------------------------------------------------------------------------ # - ..

DBA/Postgresql 2024.05.03