알짜게시판

[MYSQL] MariaDB column_stats 테이블 오류 해결 방법

MariaDB 로그에 다음과 같은 오류가 반복적으로 발생했습니다:

[ERROR] Incorrect definition of table mysql.column_stats: 
expected column 'histogram' at position 10 to have type varbinary(255), 
found type longblob.

여러 스레드 ID에서 동일한 오류가 계속 발생하며, 데이터베이스 성능에 영향을 줄 수 있는 상황이었습니다.


오류 발생 원인

이 오류는 시스템 테이블의 스키마 불일치로 인해 발생합니다. 주요 원인은 다음과 같습니다:

1. MariaDB 버전 업그레이드

  • 이전 버전에서 새 버전으로 업그레이드 시 시스템 테이블 구조가 변경됨
  • 업그레이드 후 mysql_upgrade를 실행하지 않은 경우

2. 데이터베이스 마이그레이션

  • 다른 버전의 MariaDB에서 덤프한 데이터를 복원한 경우
  • 서로 다른 버전 간 시스템 테이블 구조 차이

3. 수동 복원 작업

  • 백업 파일에 포함된 시스템 테이블이 현재 버전과 호환되지 않는 경우

column_stats 테이블이란?

mysql.column_stats는 MariaDB의 통계 정보 저장 테이블입니다:

  • 테이블 컬럼의 통계 데이터 저장
  • 쿼리 옵티마이저가 실행 계획 수립 시 사용
  • histogram 컬럼: 데이터 분포 정보를 저장하는 중요한 필드

MariaDB는 특정 버전부터 histogram 컬럼 타입을 longblob에서 varbinary(255)로 변경했으며, 이로 인해 호환성 문제가 발생할 수 있습니다.


해결 방법

방법 1: mysql_upgrade 사용 (권장)

가장 안전하고 포괄적인 방법입니다.

# MariaDB 업그레이드 도구 실행
sudo mysql_upgrade --force -u root -p

# MariaDB 재시작
sudo systemctl restart mariadb

장점:

  • 모든 시스템 테이블을 자동으로 검사 및 수정
  • column_stats 외 다른 호환성 문제도 함께 해결
  • 공식적으로 권장되는 방법

방법 2: 수동 테이블 수정

특정 테이블만 빠르게 수정하고 싶을 때 사용합니다.

# MariaDB 접속
sudo mysql
-- mysql 데이터베이스 선택
USE mysql;

-- histogram 컬럼 타입 변경
ALTER TABLE column_stats 
MODIFY COLUMN histogram varbinary(255);

-- 권한 테이블 새로고침
FLUSH PRIVILEGES;

-- 종료
EXIT;
# MariaDB 재시작
sudo systemctl restart mariadb

장점:

  • 빠른 실행
  • 특정 문제만 해결 가능

단점:

  • 다른 시스템 테이블 문제는 해결되지 않음

문제 해결 확인

수정 후 다음 명령어로 오류가 해결되었는지 확인합니다:

1. 로그 실시간 모니터링:

sudo journalctl -u mariadb -f

2. 최근 로그 확인:

sudo journalctl -u mariadb --since today

3. 테이블 정상 작동 확인:

sudo mysql -e "DESCRIBE mysql.column_stats;"

histogram 컬럼이 varbinary(255)로 표시되면 정상입니다.


root 계정 접근 오류 해결

만약 다음과 같은 오류가 발생한다면:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

해결책:

# 비밀번호와 함께 실행
sudo mysql_upgrade --force -u root -p

# 또는 sudo로 직접 MySQL 접속
sudo mysql

AlmaLinux에서는 sudo mysql 명령으로 root 권한으로 직접 접속할 수 있습니다.


예방 조치

향후 동일한 문제를 방지하기 위한 모범 사례:

1. 업그레이드 후 필수 작업

sudo mysql_upgrade --force -u root -p
sudo systemctl restart mariadb

2. 백업 습관

# 전체 데이터베이스 백업
sudo mysqldump --all-databases > /backup/mariadb_$(date +%Y%m%d).sql

# 시스템 테이블만 백업
sudo mysqldump mysql > /backup/mysql_system_$(date +%Y%m%d).sql

3. 버전 확인

# MariaDB 버전 확인
mysql --version

4. 정기적인 로그 모니터링

# cron으로 매일 로그 확인 자동화
echo "0 9 * * * journalctl -u mariadb --since '1 day ago' | grep ERROR" | crontab -

결론

mysql.column_stats 테이블 오류는 MariaDB 버전 간 스키마 불일치로 인해 발생하며, mysql_upgrade 명령어로 간단히 해결할 수 있습니다.

핵심 포인트:

  • MariaDB 업그레이드 후 반드시 mysql_upgrade 실행
  • 정기적인 백업으로 안전성 확보
  • 로그 모니터링으로 조기 발견

이러한 관리 습관을 통해 데이터베이스를 안정적으로 운영할 수 있습니다.

로그인 후 댓글내용을 입력해주세요

제목 글쓴이 조회 날짜
[MYSQL] MariaDB column_stats 테이블 오류 해결 방법 12 2시간 전
[PHP] PHP-FPM 에러 로그 실시간 모니터링 55 25-12-03
[윈도우] 윈도우11 업데이트 후 네트워크 드라이브 접근 불가 문제 해결 방법 171 25-11-24
[PHP] 다국어 번역 함수 구현 방법 2,518 25-11-08
[워드프레스] "치명적인 오류가 발생했습니다" 디버깅 가이드 13,398 25-10-31
[리눅스] Apache 웹 로그 분석하기 – awk와 GoAccess 활용 17,948 25-10-28
[칼무리] 외부 명령으로 캡처 자동화하기 1 39,195 25-10-14
[윈도우] 윈도11 강제업데이트 피하고 윈도10 계속 쓰기 41,164 25-10-12
[리눅스] PHP 파일 업로드 용량 늘리기 56,065 25-10-03
[HTML] 애드센스 충돌 문제 해결하기 74,095 25-09-20
[파이썬] Python Playwright로 Edge 브라우저 제어하기 76,001 25-09-12
[델파이] TDirectory.Delete 대신 CMD 으로 폴더 삭제 74,483 25-09-10
[윈도우] Chrome 및 Edge를 TLS 1.2 모드로 실행 73,615 25-08-30
[HTML] 애드센스 자동 광고 사용 시 빈 화면이 출력된다면? 158,677 25-06-20
[윈도우] 브라우저 환경설정 추출 145,167 25-06-18
[워드프레스] xmlrpc.php 차단으로 보안 강화하기 136,485 25-06-05
[델파이] 폼이 모니터 한 가운데 있는 경우 자연스럽게 왼쪽으로 이동시키기 134,046 25-05-26
[윈도우] WSH script registration is not valid. 134,195 25-05-23
[워드프레스] 제목 블록 기본값을 H5로 변경하는 방법 115,588 25-05-22
[파이썬] 동영상 특정 영역 모자이크(흐리게) 하기 47,239 25-04-30
[리눅스] 구글 크롬 콘솔 'Attestation check for Topics on' 에러 원인 & 해결방… 60,374 25-04-11
[크롬] 개발자 도구(DevTools)에서 붙여넣기 안될때 72,690 25-03-10
[그누보드] SmartEditor2Skin.html 다운로드 되는 현상 110,532 25-01-08
[윈도우] 네트워크 탐지 114,949 24-12-31
[델파이] TrayIcon 이 흐릿하게 보이는 버그? 수정 128,472 24-12-12
[델파이] 실행 중인 프로세스가 활성 창인지 확인하는 함수 145,796 24-11-02
[델파이] 메세지 다이어그램(Message Dialog) 에 체크박스(CheckBox) 추가 132,719 24-10-30
[그누보드] 부트스트랩 테마 예제로 사용중인 main.php 116,335 24-10-21
[그누보드] 유튜브 스킨 75,685 24-10-14
[윈도우] TLS 연결 끊김 해결 방법 - Kyber 비활성화 281,057 24-10-12
[PHP] 검색 로봇 접속시 종료 56,793 24-10-07
웹프로그래밍꽃한송이성장노트책과지식광고의비밀