본문 바로가기

분류 전체보기131

[PostgreSQL] WAL 이란 ? / WAL 관련 파라미터 WAL ( Write-Ahead Logging ) - 데이터 무결성을 보장하는 표준 방법 - 데이터베이스에 쿼리를 날려 변경 이벤트를 실행할 때, 데이터를 변경하기 전에 해당 변경 내용을 로그에 미리 담아두고 이후에 변경한다는 개념 (오라클의 redo-archive와 비슷한 역할) - 이슈(데이터 충돌, 파괴 등)가 발생했을 때 WAL 파일에 로깅된 내용을 보고 복구가 가능함 WAL 관련 파라미터 ( postgresql.conf에서 변경 ) ⭐ wal_buffers - 트랜 잭션 로그(WAL log) 버퍼 - WAL 데이터에 사용되고 아직 디스크에 기록되지 않은 공유 메모리의 합계 - shared_buffers의 1/32 크기로 지정 권장 - 64KB 이상, WAL 세그먼트 1개 크기 이하 (일반적으로 .. 2022. 7. 5.
[PostgreSQL] Lock & Deadlock Deadlock 트랜잭션 교착상태 트랜잭션들이 서로가 잡고있는 Lock을 얻으려고 할 때, DeadLock이 발생 서로가 쥐고 있는 Lock을 얻어야지만, 트랜잭션이 끝날 수 있어 영원히 Transaction이 안끝나게 됨 그래서 트랜잭션 짤 때 DeadLock 안걸리게 순서를 잘 구성해야 함 Deadlock 테이블 확인 SELECT relation::regclass, * FROM pg_locks WHERE NOT granted; Lock Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법 Lock의 종류로는 공유(Shared) Lock과 베타(Exclusive) Lock이 있음 1. Shared Lock(공유 Lock 또는 Read Lock): 데이터를 읽을 때 사용 내가 보고 있는 데이터는 다른.. 2022. 6. 9.
[PostgreSQL] DB LOG CHECK : ERROR 23505, 22021,57014,21000 / FATAL : 25P03 (23505) ERROR : duplicate key value violates unique constraint "~pk" 이미 id 값이 존재하는 pkey를 insert 하려할 때 생기는 ERROR 실제 테이블 값과 Sequence Object의 값이 다르게 되어 발생하는 문제 (22021) ERROR : invalid byte sequence for encoding "UTF8": 0x00 UTF8 인코딩에서 사용할 수 없는 문자가 있을 때 생기는 ERROR (57014) ERROR : exclusive backup not in progress 사용자 요청에 의한 쿼리 취소 ERROR (21000) ERROR : ON CONFLICT DO UPDATE command cannot affect row a .. 2022. 5. 26.
[PostgreSQL] Streaming Replication / Logical Replication Streaming Replication Logical Replication Replication 방식 - Master DB의 WAL에 기록된 내용을 실시간으로 Slave DB에게 전달 - WAL Sender, WAL Receiver라는 프로세스들이 두 서버간의 동기화를 수행 - Config 파일로 설정 - 주 서버의 WAL로 부터 데이터 변경 가능 stream을 만들어서 다른 서버로 복제 시키는 방식 - 테이블 단위로 replication 가능 - master나 slave로 구분해서 디자인된게 아니라 양방향으로 스트림 될 수 있음 (Target과 Source) - 쿼리 형태로 Replication 설정 Replication 설정 확인 - 프로세스 확인 시 Master DB에는 walsender, Stan.. 2022. 5. 23.