参考链接:https://blog.csdn.net/helloxiaozhe/article/details/77680255
参考链接:http://www.cnblogs.com/linuxk/p/9371475.html
mysqldump备份常见用法
1、导出整个数据库(包括数据库中的数据)
mysqldump -u username -p dbname > dbname.sql
2、导出数据库结构(不含数据)
mysqldump -u username -p -d dbname > dbname.sql
3、导出数据库中的某张数据表(包含数据)
mysqldump -u username -p dbname tablename > tablename.sq
mysqldump -uroot -p -B dbname --table tablename > tablename.sql
4、导出数据库中的某张数据表的表结构(不含数据)
mysqldump -u username -p -d dbname tablename > tablename.sql
5、备份数据库时使用参数(--ignore-table)排除某个表或多个表
mysqldump -uroot -p“password” --ignore-table=dbname.table1 --ignore-table=dbname.table2 dbname > /opt/backup.sql
sql文件还原方法
1、mysql -uroot -p"db_password" -f dbname < backup.sql (-f 参数表示在导出过程中忽略出现的SQL错误)
nohup mysql -uroot -p"db_password" -f dbname < backup.sql > /dev/null 2>&1 & (在导入较大的sql文件时可以放到后台执行)
2、mysql -uroot -p 先登录到数据库,use dbname; 切换到需要导入的库中,然后执行 source /opt/backup.sql; 这样就可以导入了
mysqldump 参数详解
--host 指定要备份数据库的服务器
--port MySQL服务器的端口号
--user 连接MySQL服务器的用户名
--password 连接MySQL服务器的密码
--add-locks 备份数据库表时锁定数据库表
--databases, -B 导出多少数据库,参数后面所有参量都被看作数据库名
--all-databases 备份MySQL服务器上的所有数据库
--all-tablespaces , -Y导出全部表空间 -y不导出任何表空间信息
--add-drop-table 在每个创建数据库表语句前添加删除数据库表的语句
--no-create-db 禁止生成创建数据库语句
--no-create-info 禁止生成创建数据库库表语句
--complete-insert, -c使用完整的insert语句(包含列名称),这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败
--no-data, -d 不导出任何数据,只导出数据库表结构
--no-create-info, -t 只导出数据,而不添加CREATE TABLE 语句
--no-create-db, -n 只导出数据,而不添加CREATE DATABASE 语句
--ignore-table 导出数据库时忽略某个表
--force,-f 在导出过程中忽略出现的SQL错误,当出现错误时仍然继续后面的操作
--add-drop-database 每个数据库创建之前添加drop数据库语句
--add-drop-table 每个数据表创建之前添加drop数据表语句,默认为打开状态,使用–skip-add-drop-table取消选项
--add-locks在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE,默认为打开状态,使用–skip-add-locks取消选项
--default-character-set 设置默认字符集,默认值为utf8
--comments 附加注释信息,默认为打开,可以--skip-comments取消
--compact导出更少的输出信息(用于调试),去掉注释和头尾等结构,(可以使用选项 –skip-add-drop-table –skip-add-locks –skip-comments –skip-disable-keys)
--events, -E 导出事件
--flush-privileges 在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句
--flush-logs 开始导出之前刷新日志,请注意,假如一次导出多个数据库(使用选项–databases或者–all-databases),将会逐个数据库刷新日志
除使用–lock-all-tables或者–master-data外,在这种情况下,日志将会被刷新一次,相应的表同时被锁定,因此,如果打算同时导出和刷新日志应该使用–lock-all-tables 或者–master-data 和–flush-logs
--delayed-insert 采用延时插入方式(INSERT DELAYED)
--comments 添加注释信息
--compact 压缩模式,产生更少的输出
--complete-insert 输出完成的插入语句
--default-character-set 指定默认字符集
--lock-tables 备份前,锁定所有数据库表
--lock-all-tables, -x提交请求锁定所有数据库中的所有表,以保证数据的一致性,这是一个全局读锁,并且自动关闭–single-transaction 和–lock-tables 选项
--debug 输出debug信息,用于调试(默认值为d:t:o,/tmp/mysqldump.trace)例 mysqldump -uroot -p –all-databases –debug=” d:t:o,/tmp/debug.trace”