• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用mysqldump工具备份还原Mysql数据库

mysql 搞代码 4年前 (2022-01-09) 47次浏览 已收录 0个评论

我们在网站数据维护中经常会遇到备份数据库,还原数据库的情况,我们一般用一下两种方式来处理: 1.使用into outfile 和 load data infile导入导出备份数据 这种方法的好处是,导出的数据可以自己规定格式,并且导出的是纯数据,不存在建表信息,你可以直接

我们在网站数据维护中经常会遇到备份数据库,还原数据库的情况,我们一般用一下两种方式来处理:

1.使用into outfile 和 load data infile导入导出备份数据

这种方法的好处是,导出的数据可以自己规定格式,并且导出的是纯数据,不存在建表信息,你可以直接导入另外一个同数据库的不同表中,相对于mysqldump比较灵活机动。

我们来看下面的例子:

(1)下面的mysql命令是把select的mytable表中的数据导出到/home/db_bak2012文件。

select * from mytable where status!=0 and name!=” into outfile ‘/home/db_bak2012’fields terminated by ‘|’ enclosed by ‘”‘ lines terminated by ‘rn’ ;

导入刚才备份的数据,可以使用load file方法,下面的mysql命令,把导出的数据导入了mytable_bak的表中:

load data infile ‘/home/db_bak2012’ into table mytable_bakfields terminated by ‘|’ enclosed by ‘”‘ lines terminated by ‘rn’ ;

2.使用mysqldump导出固定条件的数据库

我们来看几个常用用例:
(1)导出整个数据库

mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

(2)导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

(3)导出一个数据库结构

mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql#-d 不导出数据只导出结构 –add-drop-table 在每个create语句之前增加一个drop table

(4)导入数据库,常用source 命令

#进入mysql数据库控制台,mysql -u root -p mysql>use 数据库mysql>set names utf8; (先确认编码,如果不设置可能会出现乱码,注意不是UTF-8) #然后使用source命令,后面参数为脚本文件(如这里用到的.sql)mysql>source d:wcnc_db.sql

上边的实例只是最基础的,有的时候我们可能需要批量导出多个库,我们就可以加上–databases 或者-B,如下语句:

mysqldump -uroot -p –databases test mysql #空格分隔

还有的时候我们可能需要把数据库内所有的库全部备份,我们就可以使用-all-databases,如下语句:

mysqldump -uroot -p -all-databases

可能我们还会有更多的需求,下面是我在网上找的感觉比较全的参数说明,贴出来供大家参考。

参数说明

–all-databases , -A

导出全部数据库。

mysqldump -uroot -p –all-databases

–all-tablespaces , -Y

导出全部表空间。

mysqldump -uroot -p –all-databases –all-tablespaces

–no-tablespaces , -y

不导出任何表空间信息。

mysqldump -uroot -p –all-databases –no-tablespaces

–add-drop-database

每个数据库创建之前添加drop数据库语句。

mysqldump -uroot -p –all-databases –add-drop-database

–add-drop-table

每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用–skip-add-drop-table取消选项)

mysqldump -uroot -p –all-databases (默认添加drop语句)

mysqldump -uroot -p —本文来源gaodai$ma#com搞$代*码6网all-databases –skip-add-drop-table (取消drop语句)

–add-locks

在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用–skip-add-locks取消选项)

mysqldump -uroot -p –all-databases (默认添加LOCK语句)

mysqldump -uroot -p –all-databases –skip-add-locks (取消LOCK语句)

–allow-keywords

允许创建是关键词的列名字。这由表名前缀于每个列名做到。

mysqldump -uroot -p –all-databases –allow-keywords

–apply-slave-statements

在’CHANGE MASTER’前添加’STOP SLAVE’,并且在导出的最后添加’START SLAVE’。

mysqldump -uroot -p –all-databases –apply-slave-statements

–character-sets-dir

字符集文件的目录

mysqldump -uroot -p –all-databases –character-sets-dir=/usr/local/mysql/share/mysql/charsets

–comments

附加注释信息。默认为打开,可以用–skip-comments取消

mysqldump -uroot -p –all-databases (默认记录注释)

mysqldump -uroot -p –all-databases –skip-comments (取消注释)

–compatible

导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,

要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。

mysqldump -uroot -p –all-databases –compatible=ansi

–compact

导出更少的输出信息(用于调试)。去掉注释和头尾等结构。可以使用选项:–skip-add-drop-table –skip-add-locks –skip-comments –skip-disable-keys

mysqldump -uroot -p –all-databases –compact

–complete-insert, -c

使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。

mysqldump -uroot -p –all-databases –complete-insert

–compress, -C

在客户端和服务器之间启用压缩传递所有信息

mysqldump -uroot -p –all-databases –compress

–create-options, -a

在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态)

mysqldump -uroot -p –all-databases

–databases, -B

导出几个数据库。参数后面所有名字参量都被看作数据库名。

mysqldump -uroot -p –databases test mysql

–debug

输出debug信息,用于调试。默认值为:d:t:o,/tmp/mysqldump.trace

mysqldump -uroot -p –all-databases –debug

mysqldump -uroot -p –all-databases –debug=” d:t:o,/tmp/debug.trace”

–debug-check

检查内存和打开文件使用说明并退出。

mysqldump -uroot -p –all-databases –debug-check

–debug-info

输出调试信息并退出

mysqldump -uroot -p –all-databases –debug-info

–default-character-set

设置默认字符集,默认值为utf8

mysqldump -uroot -p –all-databases –default-character-set=latin1

–delayed-insert

采用延时插入方式(INSERT DELAYED)导出数据

mysqldump -uroot -p –all-databases –delayed-insert

–delete-master-logs

master备份后删除日志. 这个参数将自动激活–master-data。

mysqldump -uroot -p –all-databases –delete-master-logs

–disable-keys


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用mysqldump工具备份还原Mysql数据库

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址