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
参考链接:
######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.复制表结构和数据