6. 반드시 지킬 것 — 금지 사항과 제약
이 장을 마치면: 되돌릴 수 없는 실수 5가지를 피하고, 설계상 제약 10가지를 안다.
소요: 읽기 10분
6.1 금지 5
⚠ 금지 1 —
pg_ctl로 PostgreSQL만 따로 기동·정지
- 이유: 감독 프로세스(
grit_admin) 없이 뜬 PostgreSQL은 약 60초 뒤 스스로 종료된다.- 대신:
gritdb-start와gritdb-stop을 쓴다.
⚠ 금지 2 —
datafiles/pgdata만 따로 지우거나 바꾸기
- 이유:
pgdata,checkpoint,queue,cold_file은 서로 맞물려 있다. 일부만 바뀌면 기동이 불가능해진다.- 대신: 데이터를 새로 만들 때는
install_gritdb.sh --reinit-data를 쓴다. 이 명령은 기존 데이터를 이름만 바꿔 보존한다(Admin 3장).
⚠ 금지 3 — 복제 슬롯
gritsurfer_slot삭제
- 이유: 이 슬롯은 GritDB가 PostgreSQL 변경분을 이어받는 기준점이다. 지우면 필요한 WAL이 사라져 GritDB 데이터가 PostgreSQL과 어긋날 수 있다.
- 대신: 그대로 둔다.
pg_wal이 계속 커지면 슬롯을 지우지 말고 7.4 절차로 문의한다.
⚠ 금지 4 —
postgresql.conf의 GritDB 관리 블록 수정
- 대상:
# >>> gritdb managed begin줄부터# <<< gritdb managed end줄까지다. 두 표식 줄도 포함한다. 이 블록에는shared_preload_libraries,wal_level,search_path,port등의 설정이 들어 있다.- 이유: GritDB가 동작하지 않거나, 다음 설치나 업그레이드 때
postgresql.conf의 설정을 잃을 수 있다(GDB-INSTALL-004).- 대신: 설정 변경은 Admin 5장 절차를 따른다.
⚠ 금지 5 — GritDB 프로세스를
kill로 하나씩 종료
- 이유: 네 프로세스는 한 묶음이다. 일부만 죽으면 남은 프로세스와 공유 메모리를 따로 정리해야 한다.
- 대신:
gritdb-stop을 쓴다. 급하면gritdb-stop --quick을 쓴다.
6.2 알아둘 제약 10
| # | 제약 | 영향 | 대응 |
|---|---|---|---|
| 1 | CPU: cx16과 sse4_2 명령어가 있는 x86-64 |
미달 서버에서는 기동하지 않는다. 설치 스크립트는 경고만 낸다 | 2장 점검표 3번으로 사전 확인 |
| 2 | 등록 테이블은 REPLICA IDENTITY FULL이 필수다 |
미설정 테이블은 등록 거부 | 등록 전 ALTER TABLE <테이블> REPLICA IDENTITY FULL; |
| 3 | 새 데이터베이스는 template1을 복제해 만든다(PostgreSQL 기본값) |
TEMPLATE template0으로 만든 DB에는 gritsurfer 확장이 없다 |
CREATE DATABASE <이름>; — TEMPLATE 생략 |
| 4 | wal_level = logical 고정 |
바꾸면 GritDB가 동작하지 않는다 | 변경 금지(금지 4) |
| 5 | 설치 경로 길이 80자 이하 | 길면 설치 거부(GDB-INSTALL-005) | 표준 경로 사용 |
| 6 | 데이터: datafiles/ 한 묶음, 같은 경로 |
백업, 이동, 삭제를 일부만 하면 기동할 수 없다. 다른 경로로 옮기면 cold file(GritDB 엔진의 분석 조회용 파일, 1.2)을 잃는다 | 묶음 단위로 다루고, 설치한 경로에 둔다(Admin 8장) |
| 7 | 로그에 SQL 원문이 남을 수 있다 | 외부 반출 시 데이터 노출 | 반출 전 검토와 마스킹(7.4) |
| 8 | 등록 테이블의 TRUNCATE와 구조 변경(ALTER TABLE)은 GritDB 엔진에 반영되지 않는다 |
분석 세션 결과가 일반 세션과 달라진다 | 등록 테이블에는 하지 않는다(Admin 6장) |
| 9 | 한 트랜잭션에서 등록 테이블에 쓰는 행 수에 상한이 있다. 상한은 서버 메모리에 따라 다르다. 운영 DB에서 복제로 받는 테이블의 초기 복사도 한 트랜잭션이다 | 넘으면 GritDB가 멈춘다(PostgreSQL 포함) | 대량 적재는 상한의 절반 아래로 나눠 commit한다. 상한은 Admin 6장에서 확인한다 |
| 10 | 분석 세션은 행 단위 보안(RLS) 정책을 적용하지 않는다 | RLS로 숨긴 행이 분석 세션에서 보인다 | RLS나 권한으로 나눠 보여야 하는 테이블은 등록하지 않는다(Admin 11장) |
더 알아보기
- 제약 사항 전체는 Admin 10장을 본다.