aria_chk (before known as maria_chk)

You are viewing an old version of this article. View the current version here.

aria_chk (maria_chk in MariaDB 5.1) is used to check, repair, optimize, sort and get information about Aria tables.

With the MariaDB server you can use CHECK TABLE, REPAIR TABLE and OPTIMIZE TABLE to do similar things.

Note: aria_chk not to be used when MariaDB is running as MariaDB assumes no one is changing the tables it's using!

Usage:

aria_chk [OPTIONS] tables[.MAI]

The following groups are read from the my.cnf files: [maria_chk] [aria_chk]

Global options:

The following options to handle option files may be given as the first argument:

--print-defaultsPrint the program argument list and exit.
--no-defaultsDon't read default options from any option file.
--defaults-file=#Only read default options from the given file #.
--defaults-extra-file=#Read this file after the global files are read.

Main arguments are:

-#, --debug=...Output debug log. Often this is 'd:t:o,filename'.
-H, --HELPDisplay this help and exit.
-?, --helpDisplay this help and exit.
-t, --tmpdir=pathPath for temporary files. Multiple paths can be specified, separated by colon (:) on Unix or semicolon (;) on Windows. They will be used in a round-robin fashion.
--require-control-fileAbort if we can't find/read the maria_log_control file
-s, --silentOnly print errors. One can use two -s to make aria_chk very silent.
-v, --verbosePrint more information. This can be used with --description and --check. Use many -v for more verbosity.
-V, --versionPrint version and exit.
-w, --waitWait if table is locked.

Check options (--check is the default action for aria_chk):

-c, --checkCheck table for errors.
-e, --extend-checkCheck the table VERY throughly. Only use this in extreme cases as aria_chk should normally be able to find out if the table is ok even without this switch.
-F, --fastCheck only tables that haven't been closed properly.
-C, --check-only-changedCheck only tables that have changed since last check.
-f, --forceRestart with '-r' if there are any errors in the table. States will be updated as with '--update-state'.
-i, --informationPrint statistics information about table that is checked.
-m, --medium-checkFaster than extend-check, and finds 99.99% of all errors. Should be good enough for most cases.
-U, --update-stateMark tables as crashed if you find any errors.
-T, --read-onlyDon't mark table as checked.

Recover (repair)/ options (When using '--recover' or '--safe-recover'):

-B, --backupMake a backup of the .MAD file as 'filename-time.BAK'.
--correct-checksumCorrect checksum information for table.
-D, --data-file-length=#Max length of data file (when recreating data file when it's full).
-e, --extend-checkTry to recover every possible row from the data file Normally this will also find a lot of garbage rows; Don't use this option if you are not totally desperate.
-f, --forceOverwrite old temporary files.
-k, --keys-used=#Tell MARIA to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts.
--max-record-length=#Skip rows bigger than this if aria_chk can't allocate memory to hold it.
-r, --recoverCan fix almost anything except unique keys that aren't unique.
-n, --sort-recoverForces recovering with sorting even if the temporary file would be very big.
-p, --parallel-recoverUses the same technique as '-r' and '-n', but creates all the keys in parallel, in different threads.
-o, --safe-recoverUses old recovery method; Slower than '-r' but can handle a couple of cases where '-r' reports that it can't fix the data file.
--transaction-logLog repair command to transaction log. This is needed if one wants to use the maria_read_log to repeat the repair.
--character-sets-dir=...Directory where character sets are.
--set-collation=nameChange the collation used by the index.
-q, --quickFaster repair by not modifying the data file. One can give a second '-q' to force aria_chk to modify the original datafile in case of duplicate keys. NOTE: Tables where the data file is currupted can't be fixed with this option.
-u, --unpackUnpack file packed with aria_pack.

Other actions:

-a, --analyzeAnalyze distribution of keys. Will make some joins in MariaDB faster. You can check the calculated distribution by using '--description --verbose table_name'.
--stats_method=nameSpecifies how index statistics collection code should treat NULLs. Possible values of name are "nulls_unequal" (default for 4.1/5.0), "nulls_equal" (emulate 4.0), and "nulls_ignored".
-d, --descriptionPrints some information about table.
-A, --set-auto-increment[=value]Force auto_increment to start at this or higher value If no value is given, then sets the next auto_increment value to the highest used value for the auto key + 1.
-S, --sort-indexSort index blocks. This speeds up 'read-next' in applications.
-R, --sort-records=#Sort records according to an index. This makes your data much more localized and may speed up things (It may be VERY slow to do a sort the first time!).
-b,--block-search=# Find a record, a block at given offset belongs to.
-z, --zerofillFill empty space in data and index files with zeroes.
--zerofill-keep-lsnLike --zerofill but does not zero out LSN of data/index pages.

Variables one can set:

page_buffer_sizeSize of page buffer. Used by --safe-repair
read_buffer_sizeRead buffer size for sequential reads during scanning
write_buffer_sizeWrite buffer size for sequential writes during repair of fixed size or dynamic size rows
sort_buffer_sizeSize of sort buffer. Used by --recover
sort_key_blocksInternal buffer for sorting keys; Don't touch :)

One main usage of aria_chk is when you want to do a fast check of all Aria tables in your system. This is faster than doing it in MariaDB as you can allocate all free memory to buffers.

Assuming you have a bit more than 2 G free memory.

The following commands, run in the MariaDB data directory, checks all your tables and repairs only those that has an error:

aria_chk --check --sort_order --force --sort_buffer_size=1G */*.MAI

If you want to optimize all your tables: (The --zerofill is used here to fill up empty space with \0 that can speed up compressed backups).

aria_chk --analyze --sort-index --page_buffer_size=1G --zerofill */*.MAI

In case you have a serious problem and have to use --safe-recover:

aria_chk --safe-recover --zerofill --page_buffer_size=2G */*.MAI

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.