做备份时一直让人很纠结,连着几天的日子都没睡过好觉。在不停的实践和查阅网上资料重要OK了。

首先,要知道mysql备份的语句怎么写


[sql]  view plain copy

1. 备份MySQL数据库的命令     
2.     
3. mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql    
4.     
5.     
6. 备份MySQL数据库为带删除表的格式     
7. 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。    
8.     
9. mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql    
10.     
11.     
12. 直接将MySQL数据库压缩备份     
13.     
14. mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz    
15.     
16.     
17. 备份MySQL数据库某个(些)表     
18.     
19. mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql    
20.     
21.     
22. 同时备份多个MySQL数据库     
23.     
24. mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql    
25.     
26.     
27. 仅仅备份数据库结构     
28.     
29. mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql    
30.     
31.     
32. 备份服务器上所有数据库     
33.     
34. mysqldump –all-databases > allbackupfile.sql    
35.     
36.     
37. 还原MySQL数据库的命令     
38.     
39. mysql -hhostname -uusername -ppassword databasename < backupfile.sql    
40.     
41.     
42. 还原压缩的MySQL数据库     
43.     
44. gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename    
45.     
46.     
47. 将数据库转移到新服务器     
48.     
49. mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename


mysqldump导出的常用参数及说明:

1. –compatible = name

ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。


2. –complete-insert,-c

INSERT 方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。因此,需要谨慎使用该参数。           


3. –default-character-set=charset

latin1


4. –disable-keys

mysqldump 在 INSERT 语句的开头和结尾增加 ; 和 ; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM


5. –extended-insert = true|false

mysqldump 开启 –complete-insert 模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。 


6. –hex-blob

BINARY、VARBINARY、BLOB。


7. –lock-all-tables, -x

–single-transaction 和 –lock-tables


8. –lock-tables

–lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 –single-transaction


9. –no-create-info, -t

只导出数据,而不添加CREATE TABLE语句。


10. –no-data, -d

不导出任何数据,只导出数据库表结构。


11. –opt

–add-drop-tables –add-locking –create-option –disable-keys –extended-insert –lock-tables –quick –set-charset 选项。本选项能让mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 –skip-opt 禁用。注意,如果运行 mysqldump 没有指定 –quick 或 –opt


12. –quick, -q

mysqldump


13. –routines, -R

导出存储过程以及自定义函数。


14. –single-transaction

BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。
本选项和 –lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。
要想导出大表的话,应结合使用 –quick


15. –triggers

同时启用触发器,该选项默认启用,用–skip-triggers禁用它。


16. –where

” database table1 > archive.txt

But what if I have another table that is connected with a foreign key to the first table:

eg.

-04-07′” “–where=table2.foreignKey=table1.primaryKey” database table1 table2 > archive.txt