mysqldump备份mysql数据库

备份还原数据库 (Linux and windows)
Usage: mysqldump [OPTIONS] database [table1 table2...]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
#mysqldump [OPTIONS] db_name [OPTIONS] [tables] > bak_path_And_filename
备份:(mysqldump命令必须在mysql安装的bin目录下运行)
1.导出表结构和数据
Mysqldump -u”root” –p”pw” [db_Name] > d:\*.sql
2.只导出表结构
Mysqldump -u”root” -p”pw” -d [db_Name] > d:\*.sql
3.只导出表数据
Mysqldump -u”root” -p”pw” -t [db_Name] > d:\*.sql
4.导出指定的某些表(-t,-d)
Mysqldump -u”root” -p”pw” -B[db_Name] --table [tablelist] > d:\*.sql
5.导出一个表的部分数据
mysqldump -u”root” -p”pw” [db_Name] [table_name] -where=” conditions” > d:\*.sql
还原--导入数据:
Mysql -u”root” -p”pw”
Use db_Name
mysql db_Name < d:\*.sql 或者 source d:\*.sql


mysqldump支持下列常用选项(参数OPTIONS):
-?, --help
帮助
1.连接路径:
-u, --user=name
与服务器连接时,MySQL使用的用户名。缺省值是你的当前登录名。
-p, --password[=name]
与服务器连接时,MySQL使用的口令。缺省值是你的当前用户口令。
-h, --host=name
与服务器连接时,MySQL连接的数据库服务器IP。缺省主机是localhost。
-P, --port=#
与服务器连接时,MySQL数据库服务器使用的TCP/IP端口号。用于连接localhost以外的DB服务器时使用
2.数据筛选:
-A, --all-databases
选择所有的数据库
-B, --databases
指定操作数据库
--tables
指定操作表
-t, --no-create-info
只导出数据,而不添加CREATE TABLE语句。
-d, --no-data
不导出任何数据,只导出数据库表结构。
-w, --where=name
指定欲导出数据条件
3.字符集控制:
--default-character-set=name
指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1 字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。
--set-charset
在输出文件中添加“SET NAMES default_character_set”使用默认字符集,--skip-set-charset取消默认
4.输出控制:
--opt
这只是一个快捷选项,等同于同时添加--add-drop-table,--add-locks,--create-options,--quick,--extended-insert,--lock-tables,--set-charset,--disable-keys选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 --skip-opt 禁用。注意,如果运行mysqldump 没有指定 --quick 或 --opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。如果想每条记录对应一个insert语句,只需要加--extented-insert=false,[zzx@localhost ~]$ mysqldump --extended-insert=false -uroot test t1> a
-q, --quick
该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。
-T, --tab=name
对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据–fields-xxx和 –lines–xxx选项来定。
-c, --complete-insert
导出的数据采用包含字段名的完整 INSERT 方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到max_allowed_packet 参数的影响而导致插入失败。因此,需要谨慎使用该参数。
5.其他常用参数:
-x, --lock-all-tables
在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。
-l, --lock-tables
它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项。
--single-transaction
该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用 --quick 选项。
--add-drop-database
在创建数据库之前添加:DROP DATABASE语句
--add-drop-table
在每个create语句之前增加一个drop table
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
-F --flush-logs
备份前刷新日志,通常结合锁定表参数使用
--compatible = name
它告诉 mysqldump,导出的数据将和哪种数据库或哪个旧版本的 MySQL 服务器相兼容。值可以为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。

以下为网络转载一些该命令的常用方法:
备份MySQL数据库的命令,可以加选不同的参数选项来实现不同格式的要求。
mysqldump -h主机 -u用户名 -p密码 数据库名 > 文件
最常见的mysqldump使用可能制作整个数据库的一个备份:
mysqldump –opt database > backupfile.sql
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
仅仅备份数据库结构
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
备份服务器上所有数据库
mysqldump –all-databases > allbackupfile.sql
还原MySQL数据库的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
还原压缩的MySQL数据库
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
将数据库转移到新服务器
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename


下面的例子为备份mysql数据库命令:

#!/bin/bash
#1.var
dbname=xxx1
dbuser=xxx2
dbpwd=xxx3
dblanguage=gbk
filename="$dbname"_"`date +%Y%m%d`"

#2.Deiectory
basedir="/opt/backup"
remodir="/"

#3.tar.gz
/usr/local/mysql/bin/mysqldump --opt --extended-insert=false --default-character-set=$dblanguage -u$dbuser -p$dbpwd -S /tmp/mysql.sock $dbname > /opt/backmysql/$filename".sql"
cd /opt/backmysql
tar -zcf $filename".tar.gz" $filename".sql"

#4.Delete
rm -rf $filename".sql"

猜你喜欢

转载自zhangjianbin.iteye.com/blog/1728052