mysqldump
TLDR
Dump database
SYNOPSIS
mysqldump [-u user] [-p] [--all-databases] [--single-transaction] [options] [database] [tables]
DESCRIPTION
mysqldump creates logical backups of MySQL databases. Output is SQL statements that can recreate the database structure and data when executed.
The --single-transaction option provides consistent backups for InnoDB tables without locking. It starts a transaction and dumps data at that point in time, allowing other operations to continue.
For MyISAM or mixed storage engines, --lock-tables prevents writes during dump. This ensures consistency but blocks writes.
Routines (stored procedures, functions) and events are not included by default. Use --routines and --events explicitly to back up these objects.
The --master-data option records binary log coordinates, essential for setting up replication slaves or point-in-time recovery.
Output is plain SQL text, easily compressed with gzip. For very large databases, consider mysqlpump (parallel) or physical backup tools like Percona XtraBackup.
PARAMETERS
-u USER, --user USER
MySQL username.-p[PASSWORD], --password[=PASS]
Prompt for or specify password.-h HOST, --host HOST
Server hostname.-P PORT, --port PORT
Server port.--all-databases, -A
Dump all databases.--databases, -B
Dump multiple named databases.--no-data, -d
Don't dump table data.--no-create-info, -t
Don't dump CREATE TABLE.--single-transaction
Consistent snapshot for InnoDB.--routines, -R
Include stored procedures/functions.--triggers
Include triggers (default on).--events, -E
Include events.--add-drop-table
Add DROP TABLE before CREATE.--add-drop-database
Add DROP DATABASE before CREATE.--master-data[=VALUE]
Include binary log position.--quick, -q
Don't buffer, write directly.--lock-tables, -l
Lock tables during dump.
CAVEATS
Not suitable for very large databases - consider physical backups. Memory usage can be high without --quick. Restore time can be long. Character set issues possible. Binary data encoding in SQL. Locking may affect production.
HISTORY
mysqldump has been part of MySQL since early versions, developed at MySQL AB and later Oracle. It remains the standard logical backup tool for MySQL and MariaDB. While physical backup tools are preferred for large databases, mysqldump remains popular for its simplicity and portability.
SEE ALSO
mysql(1), mysqlpump(1), mariadb-dump(1), pg_dump(1)


