mysqldump客户端工具可以执行逻辑备份,生成一系列可以执行的SQL语句。通过这个工具可以备份出一个或多个MySQL数据库。mysqldump命令也可以生成CSV格式、分隔符格式或XML格式的输出文件。
--常用参数
--help, -? 显示帮助
--user=user_name, -u user_name 当连接到MySQL服务器时,所使用的用户名
--password[=password], -p[password] 当连接到MySQL服务器时,所使用的密码;当使用短参数-p搭配明文密码时,在-p和密码之间不能有空格。
--socket=path, -S path 当连接到本地服务器时,Unix系统使用的套接字文件,或Windows系统使用的命名管道
--host=host_name, -h host_name MySQL服务器所在的主机。默认主机是本地服务器。
--port=port_num, -P port_num 连接所使用的TCP/IP端口号
--databases, -B 备份多个数据库
--all-databases, -A 备份所有数据库中的所有表
--tab=dir_name, -T dir_name 备份tab符分割的文本格式数据文件
--fields-terminated-by 导出文件的字段分隔符,搭配--tab参数使用
--fields-escaped-by 导出文件的字段包裹符,搭配--tab参数使用
--default-character-set=charset_name 指定默认的字符集
--tables 覆盖--databases or -B参数,备份出表的数据
--where='where_condition', -w 'where_condition' 只导出符合指定WHERE条件的行
例如:
--where="user='jimf'"
-w"userid>1"
-w"userid<1"
--lock-tables, -l 对于要备份的数据库,锁定所有要备份的表。对于MyISAM 表,所加的锁是READ LOCAL锁,以允许表的并发插入操作。对于事务性表InnoDB表,--single-transaction参数要比--lock-tables效果好,因为这个参数不会锁表。
--single-transaction 这个参数将事务的隔离模式设置为REPEATABLE READ,然后在备份前发送START TRANSACTION语句到服务器。这对于事务表InnoDB表来说很有用,因为备份的时候会备份一致状态的数据库(备份的时间点是发出START TRANSACTION语句的时候)而不会阻塞任何应用的进行
--no-data, -d 只导出表的结构
--no-create-info, -t 导出的时候,不导出CRATE TABLE语句
--force, -f 导出的时候,忽略所有错误,及时遇到SQL错误,也继续执行
--flush-logs, -F 导出前刷新日志文件
--extended-insert, -e 对于INSERT语句使用多行插入语法(一行INSERT语句带有多个VALUES列表),这个参数会缩小备份文件的大小并且会提高数据导入时的INSERT执行速度
--dump-slave[=value] 用于生成Slave备份集。
--include-master-host-port 通常和--dump-slave参数搭配使用,本参数将在CHANGE MASTER TO语句后附加MASTER_HOST和MASTER_PORT内容
--master-data[=value] 用于生成Slave备份集的专用参数
--lock-all-tables, -x 锁定数据库中所有的表。这个参数会在备份的过程中为数据库加上全局只读锁。这参数会关闭 --single-transaction 和 --lock-tables 这两个参数。
--disable-keys, -K 在导出的文件中输出; 和 ;语句。在插入数据前先禁用索引,等数据插入完成后再启用索引,目的是为了加快导入的速度。
--max_allowed_packet 服务端和客户端连接使用buffer的最大字节长度,默认值时24MB,最大值时1GB。
--net_buffer_length 服务端和客户端连接使用的初始化buffer大小
--no-autocommit 禁用自动提交功能
--no-create-db, -n 不生成CREATE DATABASE语句
--routines, -R 导出存储过程和函数
--flush-privileges 当导出mysql数据库后执行FLUSH PRIVILEGES语句
--ignore-table=db_name.tbl_name 不导出的表名
[root@localhost backup]# /software/bin/mysqldump -help
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
--备份单个数据库
[root@localhost tmp]# /software/bin/mysqldump -usystem -p'Mysql#2015' -S /data/mysql.sock fire > /backup/firedb_fullbk.sql
--备份多个数据库
[root@localhost tmp]# /software/bin/mysqldump -usystem -p'Mysql#2015' -S /data/mysql.sock --databases neo fire > /backup/fire_neo_db_fullbk.sql
--备份全库
[root@localhost tmp]# /software/bin/mysqldump -usystem -p'Mysql#2015' -S /data/mysql.sock --all-databases > /backup/all_db_fullbk.sql
--备份所有库
[root@localhost backup]# /software/bin/mysqldump -usystem -p'Mysql#2015' -S /data/mysql.sock -A -R --single-transaction -l --default-character-set=utf8 | gzip > /backup/dbfullbak_`date +%F`.sql.gz
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
[root@localhost backup]# ls -trl
-rw-r--r--. 1 root root 1208158 Apr 23 07:11 dbfullbak_2016-04-23.sql.gz
--备份单个库,生成tab符分割的文本格式数据文件
[root@localhost tmp]# /software/bin/mysqldump -usystem -p'Mysql#2015' -S /data/mysql.sock --tab=/backup/ fire