mysqldump 备份还原

(mysqldump、mysql命令位于mysql/bin/目录中)


现有环境有两台mysql服务器,一台IP为:192.168.102.2另一台192.168.102.3

(1)完整备份MySQL的某个数据库

mysqldump –h hostname –u username –p password databasename > backupfile.sql

例如:将192.168.102.2服务器上的book数据库备份到192.168.102.3

mysqldump -h 192.168.102.2 -u backup -p book >book.sql

(2)备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除

例如:将192.168.102.2服务器上的book数据库备份到192.168.102.3

mysqldump -–add-drop-table -h hostname –u username –p password databasename > backupfile.sql

例如:将192.168.102.2服务器上的book数据库备份到192.168.102.3

mysqldump --add-drop-table -h 192.168.102.2 -u backup -p book >book.sql

(3)直接将MySQL数据库压缩备份

mysqldump –h hostname –u username –p password databasename | gzip > backupfile.sql.gz

例如:将192.168.102.2服务器上的book数据库压缩备份到192.168.102.3服务器

mysqldump -h 192.168.102.2 -u backup -p book | gzip >book.sql

(4)备份MySQL数据库某个(些)表

mysqldump –h hostname –u username –p password databasename specific_table1 specific_table2 > backupfile.sql

例如:将192.168.102.2服务器上的backup数据库中的booksorders表备份到192.168.102.3服务器

mysqldump -h 192.168.102.2 -u backup -p backup books orders>book.sql

(6)仅仅备份数据库结构

mysqldump --no-data –h hostname –u username –p password –d databasename1 databasename2 databasename3 >structurebackupfile.sql

例如:仅将192.168.102.2服务器上的backup数据库的表结构备份到192.168.102.3服务器

mysqldump --no-data -d backup -h 192.168.102.2 -u backup -p >book.sql

 

(7)备份指定条件的数据
例如只想把服务器192.168.102.2上的数据库test中的表test中的id>1的内容备份,可以使用下面的命令:

mysqldump -h 192.168.102.2 -u backup -p test test --where "id>1">test.sql

(8)还原MySQL数据库的命令

mysql –h hostname –u username –p password databasename < backupfile.sql

(9)还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql –u username –p password databasename

 

mysqldump工具有大量的选项,部分选项如下:

--add-drop-table:这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除

--add-locks :
这个选项会在INSERT语句中捆上一个LOCK TABLEUNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作

-c or - complete_insert:
这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。

--delayed-insert
INSERT命令中加入DELAY选项

-F or -flush-logs
使用这个选项,在执行导出之前将会刷新MySQL服务器的log.

-f or -force
使用这个选项,即使有错误发生,仍然继续导出

--full
这个选项把附加信息也加到CREATE TABLE的语句中

-l or -lock-tables
使用这个选项,导出表的时候服务器将会给表加锁。

-t or -no-create- info :
这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。

-d or -no-data
这个选项使的mysqldump命令不创建INSERT语句。在您只需要DDL语句时,可以使用这个选项

 

--opt此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。

-q or -quick
这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。

-T path or -tab = path
这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。


--default-character-set=charset 
指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1 字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。


-w "WHERE Clause" or -where = "Where clause " :如前面所讲的,您可以使用这一选项来过筛选将要放到导出文件的数据。

假定您需要为一个表单中要用到的帐号建立一个文件,经理要看今年(2004年)所有的订单(Orders),它们并不对DDL感兴趣,并且需要文件有逗号分隔,因为这样就很容易导入到Excel中。为了完成这个人物,您可以使用下面的句子:bin/mysqldumppwhere "Order_Date >='2000-01-01'"tab = /home/markno-create-infofields-terminated-by=, Meet_A_Geek Orders

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值