mysqldump详解

mysqldump 命令位于 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 数据库中的 books 和 orders 表备份到 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 TABLE 和 UNLOCK 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. 路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。

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

假定您需要为一个表单中要用到的帐号建立一个文件,经理要看今年( 2004 年)所有的订单( Orders ),它们并不对 DDL 感兴趣,并且需要文件有逗号分隔,因为这样就很容易导入到 Excel 中。 为了完成这个人物,您可以使用下面的句子:

bin/mysqldump – p – where “Order_Date >=’2000-01-01′” – tab = /home/mark – no-create-info – fields-terminated-by=, Meet_A_Geek Orders

原文转自:不详

Published by

@XiaoKyun

双鱼男,过分热心的好人。