MySQL 단일 서버 설치(운영 환경용)
MySQL난이도: 초급소요 시간: 30–45분MySQL 8.4 LTS(또는 8.0) 단일 서버를 공식 repository에서 처음부터 운영 환경 수준으로 설치합니다. 데이터, binlog, 로그용 별도 디렉터리, RAM/CPU/디스크 유형에 맞춰 계산한 my.cnf, GTID와 binlog 보존 기간, slow query log, SELinux/AppArmor, root 접근 제한, 애플리케이션 사용자를 구성합니다. 결과적으로 검증을 마치고 첫 백업까지 생성된 인스턴스를 얻습니다. 복제, InnoDB Cluster, 백업, 보안 가이드는 이 설치를 기반으로 합니다.
구성: 서버 1대
시작하기 전에
- 서버가 지원되는 운영 체제에서 최신 상태이며, 시간대와 NTP(chrony)가 올바릅니다.
- RAM과 CPU가 폼의 값과 같습니다(my.cnf는 이를 기준으로 계산됨: buffer pool … MB).
- …, …, …용 디스크/LV가 마운트되어 있고(fstab에 영구 등록), 파일 시스템은 XFS 또는 ext4이며 여유 공간이 충분합니다. Binlog는 …일간 보관되므로 일일 쓰기량의 최소 …배 공간을 확보합니다.
- Hostname …이 설정되어 자신의 IP로 해석되며, 애플리케이션 네트워크(…)에 접근할 수 있습니다.
- 서버가 HTTPS로 repo.mysql.com에 접근할 수 있거나 사내 mirror가 구성되어 있습니다.
- 포트 …(및 X Protocol 포트 …)가 비어 있습니다.
- 서버에 MariaDB나 운영 체제 자체의 MySQL 빌드가 설치되어 있지 않습니다(공식 MySQL과 충돌).
- 애플리케이션 사용자의 비밀번호가 준비되어 있습니다…(RHEL 계열에서는 validate_password가 기본 활성화: 최소 8자, 대/소문자, 숫자, 특수 문자)…. 비밀번호는 설치 중 화면에 표시되지 않고 입력받으며, ' 와 \ 를 포함하면 안 됩니다.
- root 또는 sudo 권한으로 로그인했으며, 유지보수 시간과 롤백 계획(서버 snapshot)이 준비되어 있습니다.
가이드 단계
- 운영 체제 준비 — Hostname 설정 및 시스템 업데이트 · 커널 설정(sysctl) · sysctl 설정 적용 · Transparent Huge Pages 비활성화
- MySQL 소프트웨어 설치 — 운영 체제의 MySQL 모듈 비활성화 · 공식 MySQL repository 추가 · MySQL 서버 소프트웨어 설치 · 공식 MySQL APT repository 정의 · MySQL 서버 소프트웨어 설치
- 디렉터리 및 구성 — 디렉터리 생성 및 소유권 설정 · my.cnf 작성 · 열린 파일 한도 상향(systemd) · systemd 구성 다시 로드 · SELinux 레이블 정의 · AppArmor에 새 디렉터리 등록 …
- 서비스 시작 — 서비스 활성화 및 시작 · 이전 기본 데이터 디렉터리 정리
- Root 접근 및 보안 — 임시 root 비밀번호 확인 · root를 auth_socket으로 전환 · root 비밀번호 설정 · root 접속 정보 저장(mysql_config_editor) · 기본 계정과 test 데이터베이스 정리 · 비밀번호 정책 컴포넌트(validate_password)
- 애플리케이션 데이터베이스와 사용자 — 데이터베이스와 애플리케이션 사용자 생성
- 네트워크 접근 — 방화벽에서 포트 열기
- 검증 — 설정 적용 여부 확인 · Error log 확인 · 원격 접속 테스트
- 설치 후 작업 — 첫 논리 백업 생성 · 모니터링 연결