필수 system tables
system.errors
system.replicas
system.replication_queue
system.merges
system.parts
일반적인 운영 환경 문제
디스크 공간 문제
Too many 파트 오류
- 30초 또는 200MB 임계값을 기준으로 데이터를 배치 처리합니다
- 자동 배칭을 위해 async_insert를 활성화합니다
- 서버 측 배칭을 위해 Buffer 테이블을 사용합니다
- 배치 크기를 제어할 수 있도록 Kafka를 구성합니다
잘못된 타임스탬프로 인한 문제
ALTER 작업의 위험성
ALTER 작업을 수행하면 상당한 리소스를 소모하고 데이터베이스 전체가 잠길 수 있습니다. 한 커뮤니티 예시에서는 14TB 데이터에서 Integer를 Float로 변경하는 작업 때문에 데이터베이스 전체가 잠겼고, 백업에서 다시 복구해야 했습니다.
리소스 소모가 큰 뮤테이션을 모니터링하세요:
메모리 및 성능
외부 집계
max_bytes_before_external_group_by를 사용하면 대규모 GROUP BY 작업에서 메모리 부족으로 인한 충돌을 방지하는 데 도움이 됩니다. 이 설정에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
Async insert 세부 정보
분산 테이블 구성
insert_distributed_sync를 활성화하세요.
분산 테이블을 사용할 때는 임시 데이터가 누적되지 않는지 모니터링하세요.
성능 모니터링 임계값
- 파티션당 파트 수: 가능하면 100개 미만
- 삽입 지연: 0을 유지해야 합니다
- 삽입 빈도: 최적의 성능을 위해 초당 약 1회로 제한하십시오
빠른 참고
| 문제 | 감지 | 해결 방법 |
|---|---|---|
| 디스크 공간 | system.parts의 총 바이트 수 확인 | 사용량을 모니터링하고 스케일링을 계획합니다 |
| 파트가 너무 많음 | 테이블별 파트 수 확인 | 배치 삽입을 사용하고 async_insert를 활성화합니다 |
| 복제 지연 | system.replicas 지연 확인 | 네트워크를 모니터링하고 레플리카를 재시작합니다 |
| 잘못된 데이터 | 파티션 날짜 검증 | timestamp 유효성 검사를 구현합니다 |
| 정체된 뮤테이션 | system.mutations 상태 확인 | 먼저 소규모 데이터에서 테스트합니다 |