mysqldump 常用参数详解:

--databases:备份多个数据库,选项后跟多个库名。备份文件中会包含USE db_name。

--events    :  备份事件

--routines:备份存储过程和函数

--ignore-table=TableName :指定不需要备份的表

--tables:覆盖--databases 或 -B 选项。该选项后的名称参数均被认为是表名。备份指定的表

--default-character-set:指定备份文件的编码,和数据库编码无关 

--lock-all-tables:通过在备份期前加read lock锁定所有库的所有表。会自动关闭—single-transaction和—lock-tables。

--lock-tables:在备份数据库时对当前库添加read lock.

--master-data:在备份文件中添加二进制日志文件名和位置信息,会自动开始--lock-all-tables

--single-transaction:在备份前设置事务隔离级别为REPEATABLE READ并向server发送START TRANSACTION语句。

仅对事务型表如InnoDB有用。与--lock-tables互斥。对于大文件备份--single-transaction与--quick结合使用。

--flush-logs:刷新日志,生成一个新的二进制日志,主要用户做增量备份

--max-allowed-packet:可发送或接受的最大包分组长度 

--no-autocommit:在INSERT前后添加set autocommit=0和commit。

--order-by-primary:将备份的表中的行按主键排序或者第一个唯一键排序。

当备份MyISAM表且将被载入到InnoDB表时很有用,打包备份本身的时间会较长。

--quick:强制mysqldump将查询得到的结果直接输出到文件,不缓存到内存中





1.备份一个DB 

mysqldump -u$dbuser -p$dbpwd --databases DBName | gzip  >  /home/backup/DBName.sql.gz


2.备份多个DB:参数--databases 之后直接跟DBName,用空格隔开就行(我以前总以为是逗号隔开)

mysqldump -u$dbuser -p$dbpwd --databases DBName01 DBName02 | gzip  >  /home/backup/DBName.sql.gz


3.备份过程中忽略指定的表

mysqldump -u$dbuser -p$dbpwd --databases DBName01 DBName02 --ignore-table=DBName01.Table01 | gzip  >  /home/backup/DBName.sql.gz

note:这里的表名必须写成DBName.TabName


4.备份过程中忽略多张指定的表

mysqldump -u$dbuser -p$dbpwd --databases DBName01 DBName02 --ignore-table=DBName01.Table01 --ignore-table=DBName01.Table02 | gzip  >  /home/backup/DBName.sql.gz


5.备份指定的表:

mysqldump  -u$dbuser -p$dbpwd  --databases DBName01  --tables TabName | gzip > /home/backup/DBName.sql.gz 

note:这里的表名不能写成DBName.TabName


6备份多张表:

mysqldump  -u$dbuser -p$dbpwd  --databases DBName01  --tables TabName01 TabName02 TabName03  | gzip > /home/backup/DBName.sql.gz 



参考链接:

http://blog.csdn.net/zyz511919766/article/details/12853133


http://hunanpengdake.iteye.com/blog/1902209



######2016-09-09 add #####################


几个特殊参数的解释

--master-data

--single-transaction  


在单独使用--master-data参数时,会自动添加--lock-all-tables,锁定所有的表,直到备份完成结束


为了减少对整个db的影响,在备份的时候 --master-data 和--single-transaction配合使用


mysqldump -uroot -p'1234' --databases dbname  --single-transaction --master-data >  1.sql


备份原理如下:


1.flush tables ;   # 关闭所有表,减少加锁时对真个数据库的影响

2.flush tables with read lock  ;  

3.set session 设置会话级别为rr ;   # 设置会话的隔离级别为rr ,这个可能和下面的快照有关,

4.start transaction with consistent  snapshot  ;  #建立快照

5.show master status      # 获得 binlog  postions

6.unlcok    # 释放锁

7.复制表结构和数据