什么是 mysqldump
?
mysqldump
命令对于数据库管理和数据备份非常重要。用户可以使用它轻松地导出 MySQL 数据库的结构和数据,生成可用于还原数据库的 SQL 脚本。这是数据库管理和迁移的关键工具,同时也是数据备份和恢复的基础。通过 mysqldump
,用户可以灵活地定制导出的选项,确保满足特定需求,例如备份全部数据库、特定表、添加注释等。
分享一份珍藏多年的mysqldump
命令使用说明
bash
# 1. 导出全部数据库,包括创建数据库语句和表数据
mysqldump -uroot -p --all-databases
# 2. 导出全部表空间,包括创建数据库语句、表空间信息和表数据
mysqldump -uroot -p --all-databases --all-tablespaces
# 3. 不导出任何表空间信息
mysqldump -uroot -p --all-databases --no-tablespaces
# 4. 每个数据库创建之前添加drop数据库语句
mysqldump -uroot -p --all-databases --add-drop-database
# 5. 每个数据表创建之前添加drop数据表语句,默认添加
mysqldump -uroot -p --all-databases
# 或者取消drop语句
mysqldump -uroot -p --all-databases --skip-add-drop-table
# 6. 在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE,默认添加
mysqldump -uroot -p --all-databases
# 或者取消LOCK语句
mysqldump -uroot -p --all-databases --skip-add-locks
# 7. 允许创建是关键词的列名字
mysqldump -uroot -p --all-databases --allow-keywords
# 8. 在导出的数据中,'CHANGE MASTER'前添加'STOP SLAVE',并且在导出的最后添加'START SLAVE'
mysqldump -uroot -p --all-databases --apply-slave-statements
# 9. 指定字符集文件的目录
mysqldump -uroot -p --all-databases --character-sets-dir=/usr/local/mysql/share/mysql/charsets
# 10. 附加注释信息,默认添加
mysqldump -uroot -p --all-databases
# 或者取消注释
mysqldump -uroot -p --all-databases --skip-comments
# 11. 导出的数据将和其它数据库或旧版本的MySQL 相兼容,指定兼容模式为ansi
mysqldump -uroot -p --all-databases --compatible=ansi
# 12. 导出更少的输出信息(用于调试),去掉注释和头尾等结构
mysqldump -uroot -p --all-databases --compact
# 13. 使用完整的insert语句(包含列名称),可能会受到max_allowed_packet参数的影响
mysqldump -uroot -p --all-databases --complete-insert
# 14. 客户端和服务器之间启用压缩传递所有信息
mysqldump -uroot -p --all-databases --compress
# 15. CREATE TABLE语句中包括所有MySQL特性选项,默认开启
mysqldump -uroot -p --all-databases
# 16. 指定需要导出的数据库
mysqldump -uroot -p --databases test mysql
# 17. 输出debug信息到指定文件
mysqldump -uroot -p --all-databases --debug
# 或者指定文件路径
mysqldump -uroot -p --all-databases --debug="d:t:o,/tmp/debug.trace"
# 18. 查内存和打开文件使用说明并退出
mysqldump -uroot -p --all-databases --debug-check
# 19. 输出调试信息并退出
mysqldump -uroot -p --all-databases --debug-info
# 20. 设置默认字符集,默认为utf8
mysqldump -uroot -p --all-databases --default-character-set=latin1
# 21. 用延时插入方式(INSERT DELAYED)导出数据
mysqldump -uroot -p --all-databases --delayed-insert
# 22. master备份后删除日志,自动激活--master-data
mysqldump -uroot -p --all-databases --delete-master-logs
# 23. 导出主的binlog位置和文件名追加到导出数据的文件中
mysqldump -uroot -p --all-databases --dump-slave=1
# 或者增加说明信息
mysqldump -uroot -p --all-databases --dump-slave=2
# 24. 导出事件
mysqldump -uroot -p --all-databases --events
# 25. 使用具有多个VALUES列的INSERT语法,默认开启
mysqldump -uroot -p --all-databases
# 或者取消选项
mysqldump -uroot -p --all-databases --skip-extended-insert
# 26. 导出文件中忽略给定字段,与--tab选项一起使用
mysqldump -uroot -p test test --tab="/home/mysql" --fields-terminated-by="#"
# 27. 输出文件中的各个字段用给定字符包裹,与--tab选项一起使用
mysqldump -uroot -p test test --tab="/home/mysql" --fields-enclosed-by="#"
# 28. 输出文件中的各个字段用给定字符选择性包裹,与--tab选项一起使用
mysqldump -uroot -p test test --tab="/home/mysql" --fields-enclosed-by="#" --fields-optionally-enclosed-by="#"
# 29. 输出文件中的各个字段忽略给定字符,与--tab选项一起使用
mysqldump -uroot -p mysql user --tab="/home/mysql" --fields-escaped-by="#"
# 30. 开始导出之前刷新日志
mysqldump -uroot -p --all-databases --flush-logs
# 31. 在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句
mysqldump -uroot -p --all-databases --flush-privileges
# 32. 在导出过程中忽略出现的SQL错误
mysqldump -uroot -p --all-databases --force
# 33. 显示帮助信息并退出
mysqldump --help
# 34. 使用十六进制格式导出二进制字符串字段
mysqldump -uroot -p --all-databases --hex-blob
# 35. 指定需要导出的主机信息
mysqldump -uroot -p --host=localhost --all-databases
# 36. 不导出指定表
mysqldump -uroot -p --host=localhost --all-databases --ignore-table=mysql.user
# 37. 在--dump-slave产生的'CHANGE MASTER TO..`语句中增加'MASTER_HOST=<host>,MASTER_PORT=<port>`
mysqldump -uroot -p --host=localhost --all-databases --include-master-host-port
# 38. 在插入行时使用INSERT IGNORE语句
mysqldump -uroot -p --host=localhost --all-databases --insert-ignore
# 39. 输出文件的每行用给定字符串划分,与--tab选项一起使用
mysqldump -uroot -p --host=localhost test test --tab="/tmp/mysql" --lines-terminated-by="##"
# 40. 提交请求锁定所有数据库中的所有表,以保证数据的一致性
mysqldump -uroot -p --host=localhost --all-databases --lock-all-tables
# 41. 锁定所有表,用READ LOCAL锁定表以允许MyISAM表并行插入
mysqldump -uroot -p --host=localhost --all-databases --lock-tables
# 42. 附加警告和错误信息到给定文件
mysqldump -uroot -p --host=localhost --all-databases --log-error=/tmp/mysqldump_error_log.err
# 43. 将binlog的位置和文件名追加到输出文件中,输出CHANGE MASTER命令
mysqldump -uroot -p --host=localhost --all-databases --master-data=1
# 或者在CHANGE MASTER命令前添加注释信息
mysqldump -uroot -p --host=localhost --all-databases --master-data=2
# 44. 设置服务器发送和接受的最大包长度
mysqldump -uroot -p --host=localhost --all-databases --max_allowed_packet=10240
# 45. TCP/IP和socket连接的缓存大小
mysqldump -uroot -p --host=localhost --all-databases --net_buffer_length=1024
# 46. 使用autocommit/commit 语句包裹表
mysqldump -uroot -p --host=localhost --all-databases --no-autocommit
# 47. 只导出数据,而不添加CREATE DATABASE 语句
mysqldump -uroot -p --host=localhost --all-databases --no-create-db
# 48. 只导出数据,而不添加CREATE TABLE 语句
mysqldump -uroot -p --host=localhost --all-databases --no-create-info
# 49. 不导出任何数据,只导出数据库表结构
mysqldump -uroot -p --host=localhost --all-databases --no-data
# 50. 设置默认字符集为utf8
mysqldump -uroot -p --host=localhost --all-databases --no-set-names
# 51. 使用--opt选项,默认开启
mysqldump -uroot -p --host=localhost --all-databases --opt
# 52. 如果存在主键,或者第一个唯一键,对每个表的记录进行排序
mysqldump -uroot -p --host=localhost --all-databases --order-by-primary
# 53. 连接数据库密码
# (密码应该在-p后面直接跟随,例如: -pYourPassword)
# 54. 使用命名管道连接mysql(仅在Windows系统可用)
mysqldump -uroot -p --host=localhost --all-databases --pipe
# 55. 连接数据库端口号
mysqldump -uroot -p --host=localhost --all-databases --port=3306
# 56. 使用的连接协议,包括:tcp, socket, pipe, memory
mysqldump -uroot -p --host=localhost --all-databases --protocol=tcp
# 57. 不缓冲查询,直接导出到标准输出,默认开启
mysqldump -uroot -p --host=localhost --all-databases
# 或者取消该选项
mysqldump -uroot -p --host=localhost --all-databases --skip-quick
# 58. 使用(`)引起表和列名字,默认开启
mysqldump -uroot -p --host=localhost --all-databases
# 或者取消该选项
mysqldump -uroot -p --host=localhost --all-databases --skip-quote-names