Restoring MySQL tables

I’ll give an example of a simple check of tables of all databases using mysqlcheck:

mysqlcheck -u root -p -A

Where the -u option specifies the user name under which to connect to MySQL, -p to request a password, -A to check the tables of all databases.

Example of restoring a specific database:

mysqlcheck -u root -p -r db_name

Example of restoring a specific table in the specified database:

mysqlcheck -u root -p -r db_name table_name

I’ll describe the possible startup options.

Checking all databases and their tables, except INFORMATION_SCHEMA and performace_schema:

--all-databases, -A

You can specify the list of databases using the option:

--databases, -B

Run all with one query instead of the individual for each database:

--all-in-1, -1

Analyze tables:

--analyze, -a

After checking, repair the damaged tables:

--auto-repair

Specify the address of the connection to the MySQL server (for example, if there are several):

--bind-address=ip_address

Connecting to the MySQL server on the specified node:

--host=host_name, -h host_name

Directory with character settings:

--character-sets-dir=dir_name

Checking the tables for errors (default):

--check, -c

Check the tables that have changed since the last check or that were not closed properly:

--check-only-changed, -C

Checking the tables for compatibility with the current version of the server:

--check-upgrade, -g

Data compression is transmitted between the client and the server if both support it:

--compress

Write and display debugging information (on the standard mysqlcheck test in Ubuntu 16.04 was compiled without debug support):

--debug=debug_options
--debug-check
--debug-info

Specifying the default character set:

--default-character-set=charset_name

Use only the specified parameter file:

--defaults-file=file_name

The following option makes the test longer and guarantees the integrity of the tables, it will also take a lot of time to recover and produce many unnecessary rows:

--extended, -e

Check only the tables that were not closed properly:

--fast, -F

Continue even in the case of SQL errors:

--force, -f

Faster than extended, there are 99.99% errors:

--medium-check, -m

Do not read the options files, however the .mylogin.cnf file will be read:

--no-defaults

See also my article – Connecting to MySQL from localhost without entering a password.

Optimize tables:

--optimize, -o

Specify the password when connecting:

--password[=password], -p[password]

TCP/IP port number for connection:

--port=port_num, -P port_num

Displaying the name of the program and all the parameters it receives from the parameter files:

--print-defaults

Specify the connection protocol:

--protocol={TCP|SOCKET|PIPE|MEMORY}

A quick method for checking tables, prevents scanning of lines for checking invalid links:

--quick, -q

Performing repairs:

--repair, -r

Quiet mode, only errors are displayed:

--silent, -s

Skip specified database:

--skip-database=db_name

Specifying the socket when connecting:

--socket=path, -S path

Connection using SSL:

--ssl*

Override -databases or -B, all the name arguments following the option are treated as table names:

--tables

Specifying a list of protocols separated by commas, which are allowed to be used for encrypted connections:

--tls-version=protocol_list

When recovering, get the table structure from the .frm file:

--use-frm

The MySQL user name that will be used when connecting:

--user=user_name, -u user_name

Detailed mode, more information is displayed:

--verbose, -v

Display version of mysqlcheck and exit:

--version, -V

See also:
Installing and configuring a MySQL server on Ubuntu

Leave a comment

Leave a Reply