一、mysqldump 备份操作
1.1 备份基础语法
mysqldump -u用户名 -p密码 -h主机 数据库 表名 -w "sql条件" --lock-all-tables > 备份路径
1.2 备份案例
mysqldump -uroot -p1234 -hlocalhost db1 a -w "id in (select id from b)" --lock-all-tables > c:\aa.txt
二、mysqldump 还原操作
2.1 还原基础语法
mysql -u用户名 -p密码 -h主机 数据库 < 备份文件路径
注:原文中“mysqldump还原”语法表述存在笔误,正确还原需使用
mysql命令而非mysqldump
2.2 还原案例
mysql -uroot -p1234 db1 < c:\aa.txt
三、mysqldump 按条件导出与导入
3.1 按条件导出
3.1.1 按条件导出基础语法
mysqldump -u用户名 -p密码 -h主机 数据库 表名 --where "条件语句" --no-create-info > 导出路径
注:原文中“–no-建表”为简化表述,标准参数为
--no-create-info
3.1.2 按条件导出案例
mysqldump -uroot -p1234 dbname a --where "tag='88'" --no-create-info > c:\a.sql
3.2 按条件导入
3.2.1 按条件导入基础语法
mysql -u用户名 -p密码 -h主机 数据库 < 导出文件路径
注:原文中“mysqldump按导入”语法表述存在笔误,正确导入需使用
mysql命令而非mysqldump
3.2.2 按条件导入案例
mysql -uroot -p1234 db1 < c:\a.txt
四、mysqldump 表导出操作
4.1 表导出基础语法
mysqldump -u用户名 -p密码 -h主机 数据库 表名
4.2 表导出案例(仅导出表结构,不含数据)
mysqldump -uroot -p sqlhk9 a --no-data
五、mysqldump 主要参数说明
5.1 --compatible=name
- 功能:告知 mysqldump 导出的数据需兼容的数据库类型或旧版本 mysql 服务器
- 兼容值:ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等
- 说明:多值用逗号分隔,仅保证“尽量兼容”,非“完全兼容”
5.2 --complete-insert,-c
- 功能:导出数据采用包含字段名的完整 insert 语句(所有值写在一行)
- 优势:提高插入效率
- 风险:可能受 max_allowed_packet 参数影响,导致插入失败,不推荐使用
5.3 --default-character-set=charset
- 功能:指定导出数据的字符集
- 必要性:若数据表非默认 latin1 字符集,不指定此参数会导致再次导入后产生乱码
5.4 --disable-keys
- 功能:在 insert 语句开头添加
/*!40000 alter table table disable keys */;,结尾添加/*!40000 alter table table enable keys */; - 优势:插入完所有数据后再重建索引,大幅提高插入速度
- 限制:仅适用于 myisam 表
5.5 --extended-insert = true|false
- 默认值:true(开启 --complete-insert 模式)
- 功能:关闭 --complete-insert 模式时,需将此参数设为 false
5.6 --hex-blob
- 功能:使用十六进制格式导出二进制字符串字段
- 必要性:存在二进制数据时必须使用
- 影响字段类型:binary、varbinary、blob
5.7 --lock-all-tables,-x
- 功能:开始导出前,请求锁定所有数据库的所有表,保证数据一致性
- 特性:属于全局读锁,会自动关闭 --single-transaction 和 --lock-tables 选项
5.8 --lock-tables
- 功能:锁定当前导出的数据表(区别于 --lock-all-tables 锁定全部库下的表)
- 限制:仅适用于 myisam 表;innodb 表需使用 --single-transaction 选项
5.9 --no-create-info,-t
- 功能:仅导出数据,不添加 create table 语句
5.10 --no-data,-d
- 功能:不导出任何数据,仅导出数据库表结构
5.11 --opt
- 本质:快捷选项,等同于同时添加以下参数:
–add-drop-tables、–add-locking、–create-option、–disable-keys、–extended-insert、–lock-tables、–quick、–set-charset - 优势:加快导出速度,且导出数据可快速导回
- 默认状态:默认启用,可通过 --skip-opt 禁用
- 注意事项:未指定 --quick 或 --opt 时,会将整个结果集放入内存,导出大数据库可能出现问题
5.12 --quick,-q
- 功能:强制 mysqldump 从服务器查询取得记录后直接输出,不缓存到内存
- 适用场景:导出大表时非常有用,避免占用过多内存
5.13 --routines,-r
- 功能:导出存储过程以及自定义函数
5.14 --single-transaction
- 功能:导出数据前提交 begin sql 语句,保证导出时数据库的一致性状态
- 特性:begin 不阻塞任何应用程序
- 适用表类型:仅适用于事务表(如 innodb、bdb)
- 互斥性:与 --lock-tables 互斥(lock tables 会使挂起事务隐含提交)
- 建议:导出大表时结合 --quick 选项使用
5.15 --triggers
- 功能:同时导出触发器
- 默认状态:默认启用,可通过 --skip-triggers 禁用
5.16 其他参数说明
其他参数详情请参考 mysql 官方手册
六、mysqldump 常用备份命令示例
6.1 myisam 表备份命令
/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --extended-insert=false \ --triggers -r --hex-blob -x db_name > db_name.sql
6.2 innodb 表备份命令
/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --extended-insert=false \ --triggers -r --hex-blob --single-transaction db_name > db_name.sql
6.3 在线备份命令(含 binlog 信息)
6.3.1 在线备份语法
/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --master-data=1 \ --single-transaction --flush-logs db_name > db_name.sql
6.3.2 在线备份特性
- 仅在开始瞬间请求锁表,随后刷新 binlog
- 导出文件中会加入 change master 语句,指定当前备份的 binlog 位置
- 适用场景:将备份文件恢复到 slave 服务器
七、mysqldump 备份文件还原方法
mysqldump 备份文件为可直接导入的 sql 脚本,共两种导入方法:
7.1 方法一:直接用 mysql 客户端导入
7.1.1 导入语法
/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql
7.2 方法二:用 source 语法导入(实验不成功!!!)
7.2.1 语法说明
- 非标准 sql 语法,属于 mysql 客户端提供的功能
- 导入语法:
source /tmp/db_name.sql;
7.2.2 注意事项
- 需指定文件绝对路径
- 文件需让 mysqld 运行用户(如 nobody)拥有读取权限
总结
到此这篇关于mysql使用mysqldump备份、还原数据库的文章就介绍到这了,更多相关mysql mysqldump备份还原数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论