[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

  • phpMyAdmin 설치 및 취약점

    리눅스 서버에 MySQL 또는 MariaDB, PostgreSQL 설치 후 좀 더 편리한 DB 관리를 위해 phpMyAdmin 설치 후 사용하는 경우가 많습니다. 기본적인 phpMyAdmin 설치와 취약점에 대해서 알아 보도록 하겠습니다. 목차✅ MariaDB 테이블 손상 확인 및 복구 방법1. 쿼리문 사용2. 간단한 사용 예시✅ phpMyAdmin으로 복구✅ HeidSQL 사용해서 최적화 및 복구✅ MariaDB 테이블 손상: 자동 복구phpMyAdmin…

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

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

  • |

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

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

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

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

  • 오라클 데이터베이스(Oracle Database)

    목차✅ MariaDB 테이블 손상 확인 및 복구 방법1. 쿼리문 사용2. 간단한 사용 예시✅ phpMyAdmin으로 복구✅ HeidSQL 사용해서 최적화 및 복구✅ MariaDB 테이블 손상: 자동 복구오라클 데이터베이스 오라클 데이터베이스(Oracle Database 또는 Oracle RDBMS)는 미국 오라클(Oracle) 사의 관계형 데이터베이스 관리 시스템(relational database management system, RDBMS)입니다. Windows Server, Unix 및 다양한 GNU/Linux 배포판을 포함한 운영 체제의 다양한…

  • MySQL: Grant All Privileges 쿼리문

    MySQL에서 ‘Grant All Privileges’ 명령어는 유저가 데이터베이스에 접근할 수 있는 권한을 부여할 때 사용합니다. test라는 데이터베이스의 모든 테이블(*)에 testuser가 외부에서의 접근을 허용하는 것을 의미합니다. 목차✅ MariaDB 테이블 손상 확인 및 복구 방법1. 쿼리문 사용2. 간단한 사용 예시✅ phpMyAdmin으로 복구✅ HeidSQL 사용해서 최적화 및 복구✅ MariaDB 테이블 손상: 자동 복구Grant All Privileges 호스트 예시…

답글 남기기

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

Prove your humanity: 2   +   9   =