테일스케일, 16년 묵은 SQLite 버그가 DB 손상 원인… WAL 리셋 문제였다

테일스케일은 2025년 말부터 6개월간 19차례의 SQLite 데이터베이스 손상 사고를 겪었으며, 원인은 16년 된 SQLite의 WAL 리셋 버그로 밝혀졌다. 이 버그는 백업 파이프라인에서 데이터 손상을 일으켰고, 회사는 집중적인 조사 끝에 버그를 찾아 수정했다. SQLite는 테일스케일의 제어 플레인에서 구성 데이터를 저장하는 데 사용되며, 개인 키나 네트워크 트래픽은 포함하지 않는다.

AI 요약

테일스케일(Tailscale)이 2023년 말부터 6개월간 19차례 발생한 SQLite 데이터베이스 손상 사고의 원인을 추적한 결과, 16년 된 SQLite 내부 버그가 원인이었음을 밝혔다. 단일 Go 프로세스가 SQLite를 독점적으로 사용하는 단일-라이터 설계였음에도 불구하고, WAL(Write-Ahead Logging) 리셋 과정에서 발생한 버그가 데이터베이스 손상을 초래했다. 테일스케일은 수개월간의 집중적인 포렌식 조사 끝에 버그를 식별하고 수정했으며, 고객에게 서비스 불안정에 대해 사과했다.

핵심 포인트

  • 2023년 8월부터 2024년 초까지 6개월간 19차례의 SQLite 데이터베이스 손상 사고 발생
  • 원인은 16년 전부터 존재했던 SQLite의 WAL 리셋 관련 버그로 확인됨
  • 테일스케일은 2022년부터 SQLite를 주요 데이터베이스로 사용 중이었으며, 백업 파이프라인은 S3 버킷에 전체 SQLite 파일을 업로드하는 방식
  • 제어 플레인은 여러 코디네이션 서버(샤드)로 분할되어 있으며, 각 샤드는 단일 Go 프로세스가 SQLite 데이터베이스를 독점 접근

향후 전망

  • SQLite 커뮤니티와 협력하여 해당 버그 수정이 공식 릴리스에 반영될 것으로 예상
  • 테일스케일은 이번 경험을 바탕으로 데이터베이스 무결성 모니터링을 강화할 것으로 보임
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...