If you don't want to lose data, you need to make regular database backups. The mysqldump client is a command-line tool which allows backing up a MySQL database or a collection of databases.
The general syntax is:
mysqldump -u {username} -p {database_name} > {filename}
--user={username},-u {username}- the account username which will be used for connecting to the MySQL server.--password[=password],-p[password]- the account password which will be used for connecting to the MySQL server. The password value is optional. If not provided, the tool will prompt for one. If provided, there must be no space between--password=or-poption and the password.{database_name}- the name of database.{filename}- the filename of database backup.
Backup all databases
The --all-databases option allows backing up all databases.
mysqldump -u root -p --all-databases > backup.sql
Backup only specific databases
The --databases option allows backing up only specific databases by providing the names of them to command-line.
mysqldump -u root -p --databases market company > backup.sql
Backup a single database
The --databases option allows backing up a single database by providing the database name to command-line.
mysqldump -u root -p --databases market > backup.sql
The --databases option can be omitted if wanted to back up a single database.
mysqldump -u root -p market > backup.sql
The difference between these two commands is that, without --databases option, backup doesn't have CREATE DATABASE and USE statements.
Backup only specific tables from a database
Provide database name and table names to command-line without --databases option to back up only specific tables from a database.
mysqldump -u root -p market products manufacturers > backup.sql
Backup a database structure without data
The --no-data option allows backing up a database structure without data. So, the backup file contains only statements to create the tables.
mysqldump -u root -p --no-data market > backup.sql
Backup a database data without structure
The --no-create-info option allows backing up a database data without structure. So backup file contains only tables data.
mysqldump -u root -p --no-create-info market > backup.sql
Backup a database without locking
By default, all tables will be locked until the backup is complete. The --single-transaction option allows backing up database without locking tables.
mysqldump -u root -p --single-transaction market > backup.sql
When this option is used, the transaction isolation mode is set to the REPEATABLE READ and START TRANSACTION statement is sent to the server before starting database backup.
To ensure successful backup, other connections cannot use these statements: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE.
The --single-transaction option only works with transactional tables, like InnoDB. This option will not work with MyISAM and MEMORY tables. These tables are not transactional, so state can be changed during the backup.
Backup a large database
It is useful to combine the --single-transaction option with the --quick option when need to back up a large database.
mysqldump -u root -p --single-transaction --quick market > backup.sql
When the --quick option is used, data is retrieved by one row at a time, rather than retrieving the entire row set and buffering it in memory.
Leave a Comment
Cancel reply