mysqldump使用

mysqldump命令

导出数据库、表的结构和内容

语法结构:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

部分参数说明:
--single-transaction

  当前只对innodb引擎有效。启用该参数备份时,要确保没有任何DDL语句执行。
-l, --lock-tables

  备份时锁住所有表。一般用于MyISAM引擎。Innodb引擎不需要,只要使用--single-transaction即可,且二者是互斥的。
--master-data[=#] 

  输出结果会将二进制日志位置和名称显示出来,默认为空。会自动开启--lock-all-tables=on,自动忽略--lock-tables。

  1会打印change master命令;

# mysqldump -uroot -p --master-data=1 --databases test > test1.sql
...
--
-- Position to start replication or point-in-time recovery from
--

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=120;
...

  2会打印change master命令,并在前面加注释;

# mysqldump -uroot -p --master-data=2 --databases test > test2.sql
...
--
-- Position to start replication or point-in-time recovery from
--

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=120;
...

-E, --events

  备份事件调度器
-R, --routines

  备份存储过程和函数
--triggers

  备份触发器

--hex-blob

  将BINARY, VARBINARY, BLOB列类型备份为十六进制的格式。

# mysqldump -uroot -p --tab="/tmp/"  employees > emp.sql
Enter password: 
# ls -ltr /tmp
total 138220
-rw-r--r--. 1 root  root      1422 Dec 23 07:23 departments.sql
-rw-rw-rw-. 1 mysql mysql      153 Dec 23 07:23 departments.txt
-rw-r--r--. 1 root  root      1705 Dec 23 07:23 dept_emp.sql
-rw-rw-rw-. 1 mysql mysql 11175033 Dec 23 07:23 dept_emp.txt
-rw-rw-rw-. 1 mysql mysql      816 Dec 23 07:23 dept_manager.txt
-rw-r--r--. 1 root  root      1725 Dec 23 07:23 dept_manager.sql
-rw-r--r--. 1 root  root      1505 Dec 23 07:23 employees.sql
-rw-rw-rw-. 1 mysql mysql 13821993 Dec 23 07:23 employees.txt
-rw-r--r--. 1 root  root      1566 Dec 23 07:23 salaries.sql
-rw-rw-rw-. 1 mysql mysql 98781181 Dec 23 07:23 salaries.txt
-rw-r--r--. 1 root  root      1573 Dec 23 07:23 titles.sql
-rw-rw-rw-. 1 mysql mysql 17718376 Dec 23 07:23 titles.txt

--opt  

  启用一组优化选项,包括关闭缓冲区。如果关闭该选项,mysqldump在把表写到写到磁盘前,都会导出到内存中。

--allow-keywords,--quote-names  

  在导出和恢复表时,可以使用保留字作为表的名字

--complete-insert  

  能在不完全相同列的表之间移动数据  

mysqldump上使用--database或--all-databases选项,最终导出的数据在每个数据库中是一致的。但是不同库之间未必一致。使用--lock-all-tables选项可以解决这个问题。                                                      

原文地址:https://www.cnblogs.com/abclife/p/5070112.html