매일공부

[MariaDB] 전혀 다른 작업 중에 우연히 발견한 버전 불일치 문제 본문

IT/작업기록

[MariaDB] 전혀 다른 작업 중에 우연히 발견한 버전 불일치 문제

julian 2026. 8. 28. 15:36

배경

nginx/네트워크 작업(전편)을 하던 도중, DB 관련 에러 로그에서 이런 메시지를 발견했다.

Column count of mysql.proc is wrong. Expected 22, found 21.
Created with MariaDB 10.11.6, now running 12.3.02

처음엔 오늘 하던 작업 때문인 줄 알았다

네트워크를 막 바꾸고 있던 타이밍에 뜬 에러라, 당연히 그 작업 때문에 생긴 문제라고 생각했다. 하지만 완전히 무관한 별개의 문제였다.

진짜 원인 — mariadb-upgrade를 한 번도 안 돌렸다

메시지를 그대로 읽어보면 답이 나온다: 이미지가 이미 메이저 버전 두 단계(10.11 → 12.3)를 건너뛴 채 실행 중이었고, 버전을 올린 뒤 mariadb-upgrade를 한 번도 실행하지 않아서 시스템 테이블(mysql.proc 등)이 예전 스키마 그대로 남아있던 것.

DB 서버 자체는 이미 새 버전(12.3.02)으로 돌고 있는데, 시스템 테이블은 예전 버전(10.11.6) 구조 그대로라서 컬럼 개수가 안 맞는다고 계속 경고가 찍히고 있었다.

원인 추정: 이미지 태그가 특정 버전(mariadb:10.11.6)이 아니라 느슨한 태그로 설정되어 있어서, 컨테이너가 재시작될 때마다 자동으로 최신 이미지를 받아온 것으로 보인다. "고정해뒀다고 생각했던" 버전이 실제로는 고정되어 있지 않았던 셈.

해결

트리거를 많이 쓰는 프로젝트라 신중하게 진행했다.

  1. DB 백업
  2. 컨테이너 안에서 mariadb-upgrade -u root -p 실행
  3. Phase 8/8까지 정상 완료 확인
  4. dev/prod 컨테이너 재연결 확인

정상 완료 후 문제없이 복구됐다.

교훈 — 같은 타이밍에 뜬 에러가 항상 지금 하던 작업 때문은 아니다

오늘 하던 작업(nginx/네트워크)과 완전히 무관한 문제가 우연히 같은 타이밍에 로그에 찍히면, 지금 하던 작업이 원인이라고 성급하게 결론짓기 쉽다. 실제로도 처음엔 "이거 네트워크 바꿔서 그런가?"부터 의심했다.

에러 메시지 자체가 가리키는 원인을 먼저 정확히 읽고, 그게 지금 진행 중인 작업과 실제로 인과관계가 있는지를 따로 확인해야 한다. 이번 경우엔 메시지에 원인(버전 불일치)이 이미 명시되어 있었는데도, 타이밍이 겹친다는 이유만으로 잠깐 엉뚱한 방향(네트워크)을 의심했었다.

이 버그 자체는 아마 꽤 오래전부터 조용히 존재하고 있었을 가능성이 높다 — 이미지가 자동으로 최신 버전을 받아오는 구조였다면, 그 시점부터 mariadb-upgrade가 필요했을 텐데 아무도 그걸 몰랐을 것이다. 오늘 우연히 컨테이너를 재시작하는 작업(네트워크 변경)을 하면서 로그에 다시 찍혀 눈에 띈 것뿐이었다.

Comments