mariadb-check 명령어: 테이블 자동 복구
mariadb-check 명령어는 여러 테이블을 검사, 복구, 분석 및 최적화 할 수 있는 유지 관리 도구입니다. mariadb-check은 myisamchk 및 aria_chk과 다르게 서버에서 MariaDB가 실행 중이어야 합니다.
mariadb-check 명령어 mysqlcheck 명령어와 동일한 명령어입니다. 10.5 이전 버전에서는 클라이언트에서 호출했으며, 기본 사용 방법은 다음과 같습니다.
✅ mariadb-check 명령어 기본 사용법
ll /usr/bin/mariadb-check
mariadb-check -옵션 데이터베이스 or(&) 테이블
✅ mariadb-check 옵션
◻️–help 옵션
사용 옵션을 포함한 항목은 –help 옵션으로 확인할 수 있습니다.
mariadb-check --help
mariadb-check from 11.3.2-MariaDB, client 2.8 for Linux (x86_64)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
This program can be used to CHECK (-c, -m, -C), REPAIR (-r), ANALYZE (-a),
or OPTIMIZE (-o) tables. Some of the options (like -e or -q) can be
used at the same time. Not all options are supported by all storage engines.
The options -c, -r, -a, and -o are exclusive to each other, which
means that the last option will be used, if several was specified.
The option -c (--check) will be used by default, if none was specified.
You can change the default behavior by making a symbolic link, or
copying this file somewhere with another name, the alternatives are:
mysqlrepair: The default option will be -r
mysqlanalyze: The default option will be -a
mysqloptimize: The default option will be -o
Usage: mariadb-check [OPTIONS] database [tables]
OR mariadb-check [OPTIONS] --databases DB1 [DB2 DB3...]
Please consult the MariaDB Knowledge Base at
https://mariadb.com/kb/en/mysqlcheck for latest information about
this program.
Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf
The following groups are read: mysqlcheck mariadb-check client client-server client-mariadb
The following options may be given as the first argument:
--print-defaults Print the program argument list and exit.
--no-defaults Don't read default options from any option file.
The following specify which files/extra groups are read (specified before remaining options):
--defaults-file=# Only read default options from the given file #.
--defaults-extra-file=# Read this file after the global files are read.
--defaults-group-suffix=# Additionally read default groups with # appended as a suffix.
-A, --all-databases Check all the databases. This is the same as --databases
with all databases selected.
-a, --analyze Analyze given tables.
-1, --all-in-1 Instead of issuing one query for each table, use one
query per database, naming all tables in the database in
a comma-separated list.
--auto-repair If a checked table is corrupted, automatically fix it.
Repairing will be done after all tables have been
checked, if corrupted ones were found.
--character-sets-dir=name
Directory for character set files.
-c, --check Check table for errors.
-C, --check-only-changed
Check only tables that have changed since last check or
haven't been closed properly.
-g, --check-upgrade Check tables for version-dependent changes. May be used
with --auto-repair to correct tables requiring
version-dependent updates.
--compress Use compression in server/client protocol.
-B, --databases Check several databases. Note the difference in usage; in
this case no tables are given. All name arguments are
regarded as database names.
-#, --debug[=#] This is a non-debug version. Catch this and exit.
--debug-check Check memory and open file usage at exit.
--debug-info Print some debug info at exit.
--default-character-set=name
Set the default character set.
--default-auth=name Default authentication client-side plugin to use.
-F, --fast Check only tables that haven't been closed properly.
--fix-db-names Fix database names.
--fix-table-names Fix table names.
-f, --force Continue even if we get an SQL error.
-e, --extended If you are using this option with CHECK TABLE, it will
ensure that the table is 100 percent consistent, but will
take a long time. If you are using this option with
REPAIR TABLE, it will force using old slow repair with
keycache method, instead of much faster repair by
sorting.
--flush Flush each table after check. This is useful if you don't
want to have the checked tables take up space in the
caches after the check
-?, --help Display this help message and exit.
-h, --host=name Connect to host.
-m, --medium-check Faster than extended-check, but only finds 99.99 percent
of all errors. Should be good enough for most cases.
--write-binlog Log ANALYZE, OPTIMIZE and REPAIR TABLE commands. Use
--skip-write-binlog when commands should not be sent to
replication slaves.
(Defaults to on; use --skip-write-binlog to disable.)
-o, --optimize Optimize table.
-p, --password[=name]
Password to use when connecting to server. If password is
not given, it's solicited on the tty.
-Z, --persistent When using ANALYZE TABLE use the PERSISTENT FOR ALL
option.
--plugin-dir=name Directory for client-side plugins.
-P, --port=# Port number to use for connection or 0 for default to, in
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/services, built-in default (3306).
--protocol=name The protocol to use for connection (tcp, socket, pipe).
-q, --quick If you are using this option with CHECK TABLE, it
prevents the check from scanning the rows to check for
wrong links. This is the fastest check. If you are using
this option with REPAIR TABLE, it will try to repair only
the index tree. This is the fastest repair method for a
table.
-r, --repair Can fix almost anything except unique keys that aren't
unique.
-s, --silent Print only error messages.
--skip-database=name
Don't process the database specified as argument
-S, --socket=name The socket file to use for connection.
--ssl Enable SSL for connection (automatically enabled with
other flags).
(Defaults to on; use --skip-ssl to disable.)
--ssl-ca=name CA file in PEM format (check OpenSSL docs, implies
--ssl).
--ssl-capath=name CA directory (check OpenSSL docs, implies --ssl).
--ssl-cert=name X509 cert in PEM format (implies --ssl).
--ssl-cipher=name SSL cipher to use (implies --ssl).
--ssl-key=name X509 key in PEM format (implies --ssl).
--ssl-crl=name Certificate revocation list (implies --ssl).
--ssl-crlpath=name Certificate revocation list path (implies --ssl).
--tls-version=name TLS protocol version for secure connection.
--ssl-verify-server-cert
Verify server's "Common Name" in its cert against
hostname used when connecting. This option is disabled by
default.
--tables Overrides option --databases (-B).
--use-frm When used with REPAIR, get table structure from .frm
file, so the table can be repaired even if .MYI header is
corrupted.
-u, --user=name User for login if not current user.
-v, --verbose Print info about the various stages; Using it 3 times
will print out all CHECK, RENAME and ALTER TABLE during
the check phase.
-V, --version Output version information and exit.
--process-views[=name]
Perform the requested operation (check or repair) on
views. One of: NO, YES (correct the checksum, if
necessary, add the mariadb-version field), UPGRADE (run
from mariadb-upgrade), UPGRADE_FROM_MYSQL (same as YES
and toggle the algorithm MERGE<->TEMPTABLE.
--process-tables Perform the requested operation on tables.
(Defaults to on; use --skip-process-tables to disable.)
Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- ----------------------------------------
all-databases FALSE
all-in-1 FALSE
auto-repair FALSE
character-sets-dir (No default value)
compress FALSE
databases FALSE
debug-check FALSE
debug-info FALSE
default-character-set utf8mb4
default-auth (No default value)
fast FALSE
fix-db-names FALSE
fix-table-names FALSE
force FALSE
extended FALSE
flush FALSE
host (No default value)
write-binlog TRUE
persistent FALSE
plugin-dir (No default value)
port 3306
quick FALSE
silent FALSE
skip-database (No default value)
socket (No default value)
ssl TRUE
ssl-ca (No default value)
ssl-capath (No default value)
ssl-cert (No default value)
ssl-cipher (No default value)
ssl-key (No default value)
ssl-crl (No default value)
ssl-crlpath (No default value)
tls-version (No default value)
ssl-verify-server-cert FALSE
use-frm FALSE
user (No default value)
process-views NO
process-tables TRUE
◻️옵션
◻️자주 사용하는 옵션
✅ mariadb-check 명령어로 테이블 분석 및 자동 복구
테이블 최적화인 -o 옵션을 사용하니 “Table does not support optimize, doing recreate + analyze instead”라면서 테이블 최적화를 진행하는 대신 재 생성과 분석을 수행한다는 메시지가 나와 모든 데이터베이스 검사&분석, 그리고 자동 복구 옵션으로 명령어를 실행해 봤습니다.
mariadb-check -Aa --auto-repair
✅ crontab 등록하기
테이블 분석 및 자동 복구 설정을 crontab에 등록합니다.
~]# crontab -e
30 04 * * * mariadb-check -Aa --auto-repair
# 매일 4시 30분에 실행 설정 테이블 분석 및 자동 복구 설정#