Database Short Runbook¶
이 문서를 볼 때¶
- MySQL 또는 Redis를 운영 서버에 설치/구성할 때
- DB/캐시 서버의 네트워크, 방화벽, SELinux, 백업 기준을 확인할 때
- 애플리케이션 계정과 root/admin 계정의 책임을 분리할 때
먼저 필요한 입력값¶
- DB 종류: MySQL, Redis, 둘 다
- 서버 역할: 단일 앱 서버 내부용, 별도 DB 서버, 내부망 공용
- bind address
- 허용할 애플리케이션 서버 IP/CIDR
- 데이터 디렉터리와 백업 경로
- 인증 방식과 credential 저장 위치
- 고가용성 필요 여부
MySQL 작업 순서¶
- OS 업데이트와 패키지 설치
mysqldsystemd 기동/enablemysql_secure_installation- root 관리 계정과 앱 계정 분리
- 방화벽 허용 범위 설정
- bind address 확인
- 설정/성능 튜닝
- 포트/데이터 경로 변경 시 SELinux 확인
- 완료 기준 검증
Redis 작업 순서¶
- 설치 방식 선택: AppStream, Remi, 공식 RPM
- 서비스 enable/start
- bind/protected-mode/firewall 설정
- 인증 방식 선택:
requirepass또는 ACL - TLS 필요 여부 판단
- persistence, backup, restore 기준 적용
- 성능 설정과 Linux kernel/systemd 설정 확인
- 운영 CLI, 모니터링, HA 검토
- 업그레이드/rollback 기준 확인
중단 조건¶
- DB가 외부에 공개되는 구조
- 앱 계정이 root 또는 광범위 권한을 요구
- bind address와 firewall 허용 범위가 불일치
- 데이터 디렉터리 변경 전 SELinux context 계획이 없음
- Redis password를 command line argument로 넘기려 함
- 백업/복구 기준 없이 운영 DB를 구성하려 함
검증 명령¶
systemctl status mysqld
mysql -u root -p
ss -lntup | grep -E ':(3306|6379)\b'
firewall-cmd --list-all
getenforce
semanage port -l | grep -E 'mysqld_port_t|redis_port_t'
systemctl status redis
redis-cli ping
상세 문서¶
MySQL:
- MySQL 운영 개요
- 설치 및 초기 설정
- 사용자 및 권한 설정
- 네트워크 및 방화벽
- 설정 및 성능 튜닝
- SELinux 설정
- 운영 함정 개요
- 동적 Trigger와 secure_file_priv
Redis: