欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysqldump工具使用帮助文档(mysql数据库备份)

程序员文章站 2024-03-21 20:12:46
...

mysqldump客户端实用程序对数据库执行逻辑备份,产生一组能够被执行以再现原始数据库对象定义和表数据的SQL语句。它可以转储一个或多个MySQL数据库进行备份或传输到另一个mysql服务器。mysqldump 命令也可以生成CSV输出,其他分隔符的文本或XML格式。

使用语法为(通常有以下三种):

mysqldump [options] db_name [tbl_name ...]   // 指定数据库的指定表
mysqldump [options] --databases db_name ...  // 指定数据库
mysqldump [options] --all-databases    // 所有数据库
选项语法(其中很多和mysqlimport是一样的):

格式 描述 介绍
--add-drop-database 在每个CREATE DATABASE语句之前添加DROP DATABASE语句
--add-drop-table 在每个CREATE TABLE语句之前添加DROP TABLE语句
--add-drop-trigger 在每个CREATE TRIGGER语句之前添加DROP TRIGGER语句
--add-locks 用LOCK TABLES和UNLOCK TABLES语句围绕每个表转储
当转储文件重新加载时,这将导致更快的插入速度
--all-databases
转储所有数据库中的所有表

--allow-keywords
允许创建作为关键字的列名称

--apply-slave-statements
在CHANGE MASTER语句之前包含STOP SLAVE,在输出结束时包含START SLAVE

--bind-address
使用指定的网络接口连接到MySQL服务器

在具有多个网络接口的计算机上,

使用此选项可选择用于连接到MySQL服务器的接口。

MySQL 5.6.1开始支持此选项。


--character-sets-dir
字符集安装目录
--comments
将注释添加到转储文件
用法:--comments-i
在转储文件中编写其他信息,如程序版本,服务器版本和主机。
默认情况下启用此选项。要抑制此附加信息,
请使用
--skip-comments
--compact
产生更简洁的输出

--compatible
产生与其他数据库系统或旧版MySQL服务器更兼容的输出
用法:--compatible=name
产生与其他数据库系统或旧版MySQL服务器更兼容的输出。 
name的值可以是 ansimysql323, mysql40postgresql
 
oraclemssql, db2maxdbno_key_options
 
no_table_options,或 no_field_options要使用多个值,请用逗号分隔。
这些值与设置服务器SQL模式的相应选项具有相同的含义。

--complete-insert
使用包含列名称的完整INSERT语句

--compress
压缩客户端和服务器之间发送的所有信息

--create-options
在CREATE TABLE语句中包含所有MySQL特定的表选项

--databases
将所有名称参数解释为数据库名称
 其后跟的名称参数都将当作数据库名称处理
--debug
写调试日志
--debug-check
程序退出时打印调试信息

--debug-info
程序退出时打印调试信息,内存和CPU统计信息

--default-auth
使用验证插件

--default-character-set
指定默认字符集

--defaults-extra-file
除常规选项文件外,还可以读取命名选项文件

--defaults-file
只读命名选项文件

--defaults-group-suffix
选项组后缀值

--delayed-insert
编写INSERT DELAYED语句,而不是INSERT语句
从MySQL 5.6.6起,DELAYED插入已被弃用,
因此此选项将在以后的版本中被删除。

--delete-master-logs
在主复制服务器上,执行转储操作后,删除二进制日志

--disable-keys
对于每个表,用禁用和启用键语句环绕INSERT语句

--dump-date
如果给出--comments,将转储日期包括为“转储完成”注释

--dump-slave
包含CHANGE MASTER语句,其中列出了从属主的二进制日志坐标

--enable-cleartext-plugin
启用明文验证插件

--events
从转储的数据库转储事件

--extended-insert
使用多行INSERT语法
用法:--extended-insert, -e
INSERT使用包含多个VALUES列表的多行语法 编写语句 
这将导致一个较小的转储文件,并加速文件重新加载插入。

--fields-enclosed-by
指定字段隔离符号
例如:--fields-enclosed-by=\"  就是用引号(")引住字段值,以防值中有特殊字符引起报错
该选项与--tab选项一起使用
--fields-escaped-by
指定字段转义符号
例如:--fields-escaped-by=\  如果字段中有特殊符号,用 \ 进行转义,防止导入数据时引起报错。
该选项与--tab选项一起使用
--fields-optionally-enclosed-by
任选字段隔离符号,猜测此选项的值应该是一个可供选择的列表 该选项与--tab选项一起使用
--fields-terminated-by
指定字段结束符号,就是字段以什么符号分隔 该选项与--tab选项一起使用
--flush-logs
在开始转储前刷新MySQL服务器日志文件

--flush-privileges
在转储mysql数据库后发出FLUSH PRIVILEGES语句

--force
即使在表转储期间发生SQL错误也会继续

--help
显示帮助信息并退出

--hex-blob
使用十六进制符号转储二进制列

--host
指定主机名或ip地址
--ignore-table
忽略给定的表 不要转储给定的表,这些表必须使用数据库和表名来指定。
要忽略多个表,请多次使用此选项。此选项也可用于忽略视图。
--include-master-host-port
在--dump-slave生成的CHANGE MASTER语句中包含MASTER_HOST / MASTER_PORT选项

--insert-ignore
写入INSERT IGNORE而不是INSERT语句

--lines-terminated-by
指定行分隔符 该选项与--tab选项一起使用
--lock-all-tables
锁定所有数据库中的所有表

--lock-tables
锁定要转储的所有表
--log-error
在命名文件中附加警告和错误
用法:--log-error=file_name

--login-path
从.mylogin.cnf读取登录路径选项

--master-data
将二进制日志文件名称和位置写入输出

--max_allowed_packet
从服务器发送或接收的最大包长度

--net_buffer_length
TCP / IP和套接字通信的缓冲区大小

--no-autocommit
禁用自动提交
--no-create-db
不要写CREATE DATABASE语句

--no-create-info
不要写入重新创建每个转储表的CREATE TABLE语句

--no-data
不要转储表内容,也就是只备份表结构

--no-defaults
不读取任何选项文件
--no-set-names
与--skip-set-charset相同

--no-tablespaces
CREATE TABLESPACE语句

--opt
选项组,其默认是 -add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset的组合形式
--order-by-primary
转储按其主键或其第一个唯一索引排序的每个表的行

--password
连接到服务器时使用的密码

--pipe
在Windows上,使用命名管道连接到服务器

--plugin-dir
安装插件的目录

--port
用于连接的TCP / IP端口号

--print-defaults
打印默认选项

--protocol
连接使用的协议
--quick
一次从服务器检索表的一行

--quote-names
在反引号字符中引用标识符

--replace
编写REPLACE语句而不是INSERT语句

--result-file
直接输出到给定的文件

--routines
转储存储过程和函数
--secure-auth
不要以旧(4.1之前)格式向服务器发送密码

--set-charset
添加SET NAMES default_character_set进行输出

--set-gtid-purged
是否添加SET @@ GLOBAL.GTID_PURGED进行输出

--shared-memory-base-name
用于共享内存连接的共享内存的名称

--single-transaction
单次事务,在从服务器转储数据之前发出BEGIN SQL语句
--skip-add-drop-table
不要在每个CREATE TABLE语句之前添加DROP TABLE语句

--skip-add-locks
不要加锁

--skip-comments
不要在转储文件中添加注释

--skip-compact
不要产生更紧凑的(简洁的)输出

--skip-disable-keys
不要禁用索引
--skip-extended-insert
关闭扩展插入

--skip-opt
关闭由--opt设置的选项

--skip-quick
不要一次从服务器检索表的一行

--skip-quote-names
不要用引号引标识符
--skip-set-charset
不要写SET NAMES语句

--skip-triggers
不要转储触发器

--skip-tz-utc
关闭tz-utc

--socket
要连接到本地主机,要使用的Unix套接字文件

--ssl*
此系列请参考mysqlimport同参数
--tab
生成选项卡分隔的数据文件
用法:--tab=dir_name, -T dir_name

--tables
覆盖 --databases or -B  选项

--triggers
转储触发器
--tz-utc
将SET TIME_ZONE ='+ 00:00'添加到转储文件

--user
连接到服务器时要使用的MySQL用户名

--verbose
详细模式

--version
显示版本信息并退出

--where
仅转储由给定的WHERE条件选择的行

--xml
生成XML输出  

使用示例(我的测试数据库没有密码):

导出sql语句:mysqldump -u root --host localhost  test_db user -r D:/testdbBackup/user.sql

或者

mysqldump -u用户名  -p密码  -h 主机地址 数据库名  表名 --where="查询条件" >user.sql

导出csv:mysqldump -u root --host localhost   --tab=D:/testdbBackup --fields-terminated-by=,  --lines-terminated-by=\r\n   test_db  user


导出csv: mysqldump -u root -p****  --tab=D:/dataExport/  --fields-escaped-by=\  --fields-terminated-by=,  --fields-enclosed-by=\"   db_name  tableName


如只想导出部分数据,加上  --where 参数,但是where中的条件如果是汉字,导不出数据,不知如何解决

参考文档:https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html