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

공정위 광고 문구 Ver 2.0

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

  • MySQL과 MariaDB 차이점

    MySQL과 MariaDB는 둘 다 오픈 소스 데이터베이스입니다. 데이터베이스에서 행과 열이 있는 테이블(표) 형식으로 데이터를 저장하고 관리할 수 있습니다. 수 많은 웹사이트와 애플리케이션에서 사용하고 있으며, MySQL은 1994년에 개발을 시작해 2010년에 선마이크로시스템에 인수되었으며, 같은 해 선마이크로시스템이 오라클에 인수되면서 오라클의 서비스가 되었습니다. MySQL 현재 MySQL은 교육용과 개인에게는 무료(오픈 소스)로 제공되고 있지만 상업용으로 사용할 경우 라이선스를 구매해서…

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

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

  • |

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

    Oracle 19c를 윈도우에 설치 후 [ORA-12514: TNS:리스너가 현재 접속 기술자에 요청된 서비스를 알지 못함]이란 오류가 발생했습니다. ORA-12514 오류 > 파일 수정 여러가지 오류 확인 중 [lisener.ora] 파일과 [tnsnames.ora] 2개의 파일 수정을 먼저 진행했습니다. 2개 파일은 각각 셋업 시 설정한 설치 경로가 다를 수 있으며, 저의 경우 C:\Oracle\WINDOWS.X64_193000_db_home\network\admin\ 폴더 안에서 파일 확인 후 작업을…

  • phpMyAdmin 설치 및 취약점

    리눅스 서버에 MySQL 또는 MariaDB, PostgreSQL 설치 후 좀 더 편리한 DB 관리를 위해 phpMyAdmin 설치 후 사용하는 경우가 많습니다. 기본적인 phpMyAdmin 설치와 취약점에 대해서 알아 보도록 하겠습니다. phpMyAdmin 설치 방법 RedHat 기반의 OS 버전인 RockyLinux 및 AlmaLinux에서의 설치가 가능하며, AlmaLinux 9.3에서 설치를 진행했습니다. PHP 7.1 이상, MySQL 5.6(MariaDB 10.0) 이상이라면 phpMyAdmin 5.0…

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

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

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

    1. 데이터베이스란 데이터베이스(DataBase:DB)는 데이터가 모여 있는 저장소입니다. 저장소는 구조화 된 정보 또는 데이터의 조직화 되어 있는 모음입니다. 데이터베이스에는 IT를 포함한 여러 분야에서 폭 넓게 사용되고 있습니다. 카카오톡이나 네이버 라인 등을 이용해 발송한 메시지, 버스/지하철의 교통카드, 네이버 쇼핑 및 네이버 주문 등을 통해 구매한 정보 등이 모두 DataBase에 기록됩니다. 2. DBMS DataBase는 데이터베이스 관리…

답글 남기기

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

Prove your humanity: 4   +   9   =