[DBMS] MariaDB 테이블 손상 원인 및 복구

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

MySQL 또는 MariaDB를 설치한 서버에서 테이블이 깨지는 경우가 있습니다. MariaDB 테이블 손상의 원인은 크게 다음과 같습니다.

  • 기록되는 중간에 MariaDB 또는 mysqld의 데몬이 죽었을 때
  • 데몬 자체 오류
  • 의도치 않게 서버가 shutdown 된 경우
  • 하드웨어 오류
  • 외부프로그램에 의해 Table을 변경하는 동시에 서버에 의해 변경 작업이 이뤄질 때 발생

✅ MariaDB 테이블 손상 확인 및 복구 방법

웹사이트를 운영하면서 발생하게 되는 테이블이나 DB 자체가 깨지는 경우 MySQL / MariaDB 테이블 복구가 필요한데 먼저 손상된 테이블을 확인하는 방법입니다.

1. 쿼리문 사용

쿼리문에서 하나의 특정 테이블에 대해 확인 후 적용 할 경우 아래의 순서로 진행할 수 있습니다.

use DB명; # 작업할 DB 선택
check table 테이블명; # 확인할 테이블을 체크
repair table 테이블명; # 복구할 테이블 복구
optimize table 테이블명; # 최적화할 테이블을 최적화

2. 간단한 사용 예시

MariaDB [(none)]> use mysql;
MariaDB [mysql]> show tables;
...
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| transaction_registry      |
| user                      |
+---------------------------+
MariaDB [mysql]> check table time_zone;
+-----------------+-------+----------+----------+ne
| Table           | Op    | Msg_type | Msg_text |
+-----------------+-------+----------+----------+
| mysql.time_zone | check | status   | OK       |
+-----------------+-------+----------+----------+
1 row in set (0.000 sec)
MariaDB [mysql]> optimize  table time_zone;
+-----------------+----------+----------+-----------------------------+
| Table           | Op       | Msg_type | Msg_text                    |
+-----------------+----------+----------+-----------------------------+
| mysql.time_zone | optimize | status   | Table is already up to date |
+-----------------+----------+----------+-----------------------------+
1 row in set (0.001 sec)

MariaDB [mysql]>

✅ phpMyAdmin으로 복구

phpMyAdmin 설치가 되어 있다면 더 편한 방법으로 복구가 가능합니다. 모두 체크 후 테이블 검사를 실행할 수 있습니다. 우측 끝 행에 [부담]에서 숫자로 표시되는 테이블을 체크한 후 ①테이블최적화를 진행할 수 있으며, 깨진 테이블 역시 ②테이블 복구를 할 수 있습니다.

phpMyAdmin 테이블 최적화 및 복구

✅ HeidSQL 사용해서 최적화 및 복구

HeidiSQL을 사용해서 테이블을 복구할 수 있습니다.

유지 보수 실행최적화 실행 화면
MariaDB 테이블 손상-HeidiSQL 유지보수 실행(테이블 최적화 및 복구)
HeidiSQL 유지보수 실행 후(테이블 최적화 및 복구)
HeidiSQL 유지보수에서 테이블 최적화 완료

수동으로 복구하는 방법에 대해 알아 봤습니다. 이제 리눅스 서버에서 자동으로 복구하는 방법에 대해 알아 보겠습니다.

✅ MariaDB 테이블 손상: 자동 복구

mariadb-check 명령어를 이용해서 자동 복구를 진행할 수 있습니다. 전체 복구를 진행할 때의 기본 옵션입니다. shell 스크립트로 원하는 시간대에 설정할 수 있습니다.

mariadb-check -Ao --auto-repair --extended --optimize
]# mariadb-check -Ao --auto-repair --extended --optimize
mysql.column_stats                                 Table is already up to date
mysql.columns_priv                                 Table is already up to date
mysql.db                                           Table is already up to date
mysql.event                                        Table is already up to date
mysql.func                                         Table is already up to date
mysql.global_priv                                  Table is already up to date
mysql.gtid_slave_pos
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
mysql.help_category                                Table is already up to date
mysql.help_keyword                                 Table is already up to date
mysql.help_relation                                Table is already up to date
mysql.help_topic                                   Table is already up to date
mysql.index_stats                                  Table is already up to date
mysql.innodb_index_stats
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
mysql.innodb_table_stats
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
mysql.plugin                                       Table is already up to date
mysql.proc                                         Table is already up to date
mysql.procs_priv                                   Table is already up to date
mysql.proxies_priv                                 Table is already up to date
mysql.roles_mapping                                Table is already up to date
mysql.servers                                      Table is already up to date
mysql.table_stats                                  Table is already up to date
mysql.tables_priv                                  Table is already up to date
mysql.time_zone                                    Table is already up to date
----- 생략 -----
.wp_postmeta
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
.wp_posts
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
.wp_term_relationships
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
.wp_term_taxonomy
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
.wp_termmeta
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
.wp_terms
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
.wp_usermeta
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
.wp_users
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
~]#

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • MariaDB 서버 접속 오류: Can’t Connect to Server on

    DB 잡업을 위해 서버에 접속하려고 할 때 Can’t Connect to Server on이란 메시지를 확인되는 경우가 발생할 수 있습니다. MySQL/MariaDB 서버 접속 오류의 원인과 해결 방법은 다음과 같습니다. 10060 10061과 같은 오류는 원격 접속을 할 때 발생하며, 크게 네트워크 방화벽, 서버 방화벽, 그리고 DB 접속 허용 여부에 따라 적용됩니다. MariaDB 서버 접속 오류 해결…

  • mariadb-check 명령어: 테이블 자동 복구

    mariadb-check 명령어는 여러 테이블을 검사, 복구, 분석 및 최적화 할 수 있는 유지 관리 도구입니다. mariadb-check은 myisamchk 및 aria_chk과 다르게 서버에서 MariaDB가 실행 중이어야 합니다. mariadb-check 명령어 mysqlcheck 명령어와 동일한 명령어입니다. 10.5 이전 버전에서는 클라이언트에서 호출했으며, 기본 사용 방법은 다음과 같습니다. ✅ mariadb-check 명령어 기본 사용법 ✅ mariadb-check 옵션 ◻️–help 옵션 사용 옵션을…

  • 관계형 데이터베이스(RDB) 정의와 구조

    관계형 데이터베이스(Relational Database RDB)란 테이블에 저장된 데이터들이 행(row)과 열(컬럼:Columm)의 형태로 구성되어 있으며, 서로 다른 데이터 구조가 사전에 정의된 관계를 통해 연결되어 있는 데이터 모음입니다. 엑셀의 스프레드 시트와 비슷한 구조를 가지고 있는 것이 주요 특징입니다. ✅ 관계형 데이터베이스 정의 관계형 데이터베이스(Relational Database:RDB)는 데이터를 테이블 형태로 관리하며, 테이블(Table)에는 행(row)과 열(column)의 형태로 데이터가 저장됩니다. RDB는 이러한…

  • 버전별 MySQL 루트 비밀번호 변경 방법 5.6&5.7 이상

    서버의 MySQL 루트 비밀번호 변경 시 MySQL 버전에 따라 변경 방식이 다를 수 있습니다. 버전별 MySQL 루트 비밀번호 변경 방법에 대해 알아 보겠습니다. ✅ 버전별 MySQL 루트 비밀번호 변경 (버전별) 기본 접속을 진행한 후에 각각의 버전에 맞는 쿼리문으로 mysql 루트 비밀번호를 변경해 줍니다. MySQL 5.6 이하 버전 처음 설치 후 비밀번호가 설정되어 있지…

  • MariaDB root 패스워드 분실 : mariadb or MySQL 패스워드 초기화

    MariaDB root 패스워드 분실(또는 MySQL)로 인해 로그인이 불가능한 경우mariadb&MySQL 패스워드 초기화가 필요합니다. 데몬에 대한 정지 및 시작 등의 구동 권한이 있다면 패스워드 초기화를 진행해서 재 설정이 가능합니다. ✅ MariaDB root 패스워드 분실 시 확인 메시지 콘솔에서 MariaDB 또는 MySQL 접속 시 패스워드를 분실 했을 때 잘못 입력한 패스워드로 인해 나오는 에러 메시지입니다. 비밀번호를…

  • Oracle: Window 오라클 19c 설치

    Window에 오라클 19c 설치를 위해 먼저 오라클 공식 다운로드 홈페이지로 이동합니다. 오라클 19c 중에 WIsdows 환경을 확인해서 다운로드 할 수 있습니다. 1. Window 오라클 19c 설치하기 1.1 압축 파일 해제 및 설치 ▼ 압축 파일을 C:\Program Files이나 C드라이브 내 별도의 폴더를 만들어서 풀어줍니다. 별도의 개발 관리 프로그램을 운영하기 위해서라면, C드라이브에 Database > Oracle19c…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 6   +   9   =