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분에 실행 설정 테이블 분석 및 자동 복구 설정#