likes
comments
collection
share

【备份Mysql数据库】分享一个珍藏多年的 mysqldump 命令使用说明,建议收藏 非常实用

作者站长头像
站长
· 阅读数 4

什么是 mysqldump

mysqldump 命令对于数据库管理和数据备份非常重要。用户可以使用它轻松地导出 MySQL 数据库的结构和数据,生成可用于还原数据库的 SQL 脚本。这是数据库管理和迁移的关键工具,同时也是数据备份和恢复的基础。通过 mysqldump,用户可以灵活地定制导出的选项,确保满足特定需求,例如备份全部数据库、特定表、添加注释等。

分享一份珍藏多年的mysqldump 命令使用说明

# 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