# mariadb-hotcopy

`mariadb-hotcopy` is a Perl script that was originally written and contributed by Tim Bunce. It uses [FLUSH TABLES](https://mariadb.com/docs/server/reference/sql-statements/administrative-sql-statements/flush-commands/flush), [LOCK TABLES](https://mariadb.com/docs/server/reference/sql-statements/transactions/lock-tables), and cp or scp to make a database backup.

{% hint style="info" %}
Previously, the client was called `mysqlhotcopy`. It can still be accessed under this name, via a symlink in Linux, or an alternate binary in Windows.
{% endhint %}

It is a fast way to make a backup of the database or single tables, but it can be run only on the same machine where the database directories are located. `mariadb-hotcopy` works only for backing up [MyISAM](https://mariadb.com/docs/server/server-usage/storage-engines/myisam-storage-engine) and [ARCHIVE](https://mariadb.com/docs/server/server-usage/storage-engines/archive) tables. It runs on Unix and NetWare.

To use `mariadb-hotcopy`, you must have read access to the files for the tables that you are backing up, the `SELECT` [privilege](https://mariadb.com/docs/server/reference/sql-statements/account-management-sql-statements/grant) for those tables, the `RELOAD` privilege (to be able to execute `FLUSH TABLES`), and the `LOCK TABLES` privilege (to be able to lock the tables).

```bash
shell> mariadb-hotcopy db_name [/path/to/new_directory]
shell> mariadb-hotcopy db_name_1 ... db_name_n /path/to/new_directory
```

Back up tables in the given database that match a regular expression:

```bash
shell> mariadb-hotcopy db_name./regex/
```

The regular expression for the table name can be negated by prefixing it with a tilde (`~`):

```bash
shell> mariadb-hotcopy db_name./~regex/
```

`mariadb-hotcopy` supports the following options, which can be specified on the command line or in the \[`mariadb-hotcopy`] and \[`client`] option file groups.

#### `--help`, `-?`

Display a help message and exit.

#### `--addtodest`

Do not rename target directory (if it exists); merely add files to it.

#### `--allowold`

Do not abort if a target exists; rename it by adding an \_old suffix.

#### `--checkpoint`=*db\_name.tbl\_name*

Insert checkpoint entries into the specified database *db\_name* and table *tbl\_name*.

#### `--chroot`=*directory*

Base *directory* of the chroot jail in which mariadbd operates. The path value should match that of the\
`--chroot` option given to `mariadbd`.

#### `--debug`

Enable debug output.

#### `--dryrun`, `-n`

Report actions without performing them.

#### `--flushlog`

Flush logs after all tables are locked.

#### `--host`=*host\_name*, `-h` *host\_name*

The *host name* of the local host to use for making a TCP/IP connection to the local server. By default, the connection is made to localhost using a Unix socket file.

#### `--keepold`

Do not delete previous (renamed) target when done.

#### `--method`=*method*

The *method* for copying files (`cp` or `scp`). The default is `cp`.

#### `--noindices`

Do not include full index files for MyISAM tables in the backup. This makes the backup smaller and faster. The indexes for reloaded tables can be reconstructed later with [myisamchk -rq](https://mariadb.com/docs/server/clients-and-utilities/myisam-clients-and-utilities/myisamchk).

#### `--old-server`

Connect to old MySQL server (before MySQL 5.5) which doesn't have [FLUSH TABLES WITH READ LOCK](https://mariadb.com/docs/server/reference/sql-statements/administrative-sql-statements/flush-commands/flush) fully implemented.

#### `--password`=*password*, `-p`*password*

The *password* to use when connecting to the server. The password value is mandatory for this option, unlike for other MariaDB programs. Specifying a password on the command line should be considered insecure. You can use an option file to avoid giving the password on the command line.

#### `--port`=*port-number*, `-P` *port-number*

The TCP/IP *port number* to use when connecting to the local server.

#### `--quiet`, `-q`

Be silent except for errors.

#### `--record\_log\_pos`=*db\_name*.*tbl\_name*

Record master and slave status in the specified database *db\_name* and table *tbl\_name*.

#### `--regexp`=*expression*

Copy all databases with names that match the given regular *expression*.

#### `--resetmaster`

Reset the binary log after locking all the tables.

#### `--resetslave`

Reset the `master.info` file after locking all the tables.

#### `--socket`=*socket-file*, `-S` *socket-file*

The Unix *socket file* to use for connections to localhost.

#### `--suffix`=*string*

The *suffix string* to use for names of copied databases.

#### `--tmpdir`=*directory*

The temporary *directory*. The default is `/tmp`.

#### `--user`=*username*, `-u` *username*

The MariaDB *username* to use when connecting to the server.

Use perldoc for additional `mariadb-hotcopy` documentation, including information about the structure of the tables needed for the`--checkpoint` and \`\`--record`_log_pos` options:

```bash
shell> perldoc mariadb-hotcopy
```

## See Also

* [mariadb-dump](https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump)
* [mariadb-backup](https://mariadb.com/docs/server/server-usage/backup-and-restore/mariadb-backup)

<sub>*This page is licensed: CC BY-SA / Gnu FDL*</sub>

{% @marketo/form formId="4316" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-hotcopy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
