mysqldump 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

mysqldump 命令安装:


-bash: mysqldump: command not found

#Debian
apt-get install mariadb-client-10.3

#Ubuntu
apt-get install percona-xtradb-cluster-client-5.5

#Arch Linux
pacman -S percona-server-clients

#Kali Linux
apt-get install mariadb-client-10.1

#Fedora
dnf install mariadb-3

#Raspbian
apt-get install mariadb-client-5.5

mysqldump 命令补充说明:


mysqldump 客户端是一个执行逻辑备份的实用程序,它产生一组 SQL 语句,可以运行这些语句来重现原始的模式对象,表数据或两者。它转储一个或多个 MySQL 数据库以进行备份或转移到另一台 SQL 服务器。 mysqldump 命令还可以生成 CSV,其他定界文本或 XML 格式的输出。

如果未使用 --single-transaction 选项,则 mysqldump 至少需要对转储表具有 SELECT 特权,对转储视图必须具有 SHOW VIEW,对转储触发器需要 TRIGGER 以及 LOCK TABLES。如选项说明中所述,某些选项可能需要其他特权。

要重新加载转储文件,您必须具有通过手动发出 CREATE 语句来创建每个转储对象所需的相同特权。

mysqldump 的输出可以包含改变数据库排序规则的 ALTER DATABASE 语句。在转储存储的程序以保留其字符编码时,可以使用这些字符。要重新加载包含此类语句的转储文件,需要对受影响的数据库具有 ALTER 特权。

mysqldump 命令语法:


mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases

#要转储整个数据库,请不要在db_name之后命名任何表。 
#或者,使用--databases或--all-databases选项。

mysqldump 命令选项:


--add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句;
--add-locks:备份数据库表时锁定数据库表;
--all-databases:备份MySQL服务器上的所有数据库;
--comments:添加注释信息;
--compact:压缩模式,产生更少的输出;
--complete-insert:输出完成的插入语句;
--databases:指定要备份的数据库;
--default-character-set:指定默认字符集;
--force:当出现错误时仍然继续备份操作;
--host:指定要备份数据库的服务器;
--lock-tables:备份前,锁定所有数据库表;
--no-create-db:禁止生成创建数据库语句;
--no-create-info:禁止生成创建数据库库表语句;
--password:连接MySQL服务器的密码;
--port:MySQL服务器的端口号;
--user:连接MySQL服务器的用户名。

mysqldump 命令实例


以下列举了几个常用的 mysqldump 的实例:

#将整个数据库 db_name 备份到文件 backup-file.sql。
mysqldump db_name > backup-file.sql

#将备份文件 backup-file.sql 装入数据库db_name。
mysql db_name < backup-file.sql

#这是与上一个示例相同的另一种方法(将备份文件加载到数据库中)。
mysql -e "source /path-to-backup/backup-file.sql" db_name

#使用本地数据库db_name填充远程mysql服务器的数据库db_name。
mysqldump --opt db_name | mysql --host=remote_host -C db_name

#上面的命令将多个数据库(db_name1,db_name2 ...)转储到单个备份文件my_databases.sql中。
mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

#将所有数据库转储到备份文件all_databases.sql。
mysqldump --all-databases > all_databases.sql

mysqldump 命令总结


导出整个数据库:

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

导出一个表:

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

导出一个数据库结构:

mysqldump -u用户名 -p'pass' -d --add-drop-table dbname > db_table_ddl.sql

#-d没有数据,--add-drop-table每个create语句之前增加一个drop table

mysqldump 命令扩展阅读:




mysqldump 命令评论