mysqldump数据库备份还原详解

时间:2022-05-29 10:13:38

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”