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

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 테이블 손상 확인…

  • |

    ORA-12514: 오라클 19c DB 접속 오류

    Oracle 19c를 윈도우에 설치 후 [ORA-12514: TNS:리스너가 현재 접속 기술자에 요청된 서비스를 알지 못함]이란 오류가 발생했습니다. 목차✅ MariaDB 테이블 손상 확인 및 복구 방법1. 쿼리문 사용2. 간단한 사용 예시✅ phpMyAdmin으로 복구✅ HeidSQL 사용해서 최적화 및 복구✅ MariaDB 테이블 손상: 자동 복구 ORA-12514 오류 > 파일 수정 여러가지 오류 확인 중 [lisener.ora] 파일과 [tnsnames.ora]…

  • 데이터베이스; DBMS, SQL 이해

    목차✅ MariaDB 테이블 손상 확인 및 복구 방법1. 쿼리문 사용2. 간단한 사용 예시✅ phpMyAdmin으로 복구✅ HeidSQL 사용해서 최적화 및 복구✅ MariaDB 테이블 손상: 자동 복구 1. 데이터베이스란 데이터베이스(DataBase:DB)는 데이터가 모여 있는 저장소입니다. 저장소는 구조화 된 정보 또는 데이터의 조직화 되어 있는 모음입니다. 데이터베이스에는 IT를 포함한 여러 분야에서 폭 넓게 사용되고 있습니다. 카카오톡이나 네이버…

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

    서버의 MySQL 루트 비밀번호 변경 시 MySQL 버전에 따라 변경 방식이 다를 수 있습니다. 버전별 MySQL 루트 비밀번호 변경 방법에 대해 알아 보겠습니다. 목차✅ MariaDB 테이블 손상 확인 및 복구 방법1. 쿼리문 사용2. 간단한 사용 예시✅ phpMyAdmin으로 복구✅ HeidSQL 사용해서 최적화 및 복구✅ MariaDB 테이블 손상: 자동 복구✅ 버전별 MySQL 루트 비밀번호 변경…

  • DB Query | SQL Statement(SQL 문) | 쿼리문 | 기본 문법

    DB QuerySQL Statement(SQL 문)는 MySQL, MariaDB 등과 같은 데이터베이스 관리 시스템(DBMS:Database Management System: DBMS)에서 사용되며, MySQL Query, SQL 명령어, SQL 쿼리, Mysql 명령어 등 다양한 형식으로 불리고 있습니다. 쿼리문은 명령의 역할에 따라 3가지로 분류합니다. 업무를 보면서 당장에 인식하고 사용하지 않더라도 차츰 이해하고 사용한다면 도움이 될 수도 있다고 생각합니다. 목차✅ MariaDB 테이블 손상 확인…

  • SQL: 테이블 구조, 쿼리(Query), 저장 프로시저(3가지 분류)

    목차✅ MariaDB 테이블 손상 확인 및 복구 방법1. 쿼리문 사용2. 간단한 사용 예시✅ phpMyAdmin으로 복구✅ HeidSQL 사용해서 최적화 및 복구✅ MariaDB 테이블 손상: 자동 복구✅ SQL이란? SQL(Structured Query Language)은 구조화된 질의 언어의 뜻을 가지고 있습니다. 구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어입니다. 관계형 데이터베이스는 정보를 표 형식으로 저장하며, 행과…

답글 남기기

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

Prove your humanity: 4   +   2   =