一、参数说明
| —all-databases, -A | 备份所有数据库 |
|---|---|
| —databases, -B | 备份指定数据库 |
| —lock-all-tables, -x | 开始备份时加FLUSH TABLES WITH READ LOCK |
| —lock-tables, -l | 备份时依次对每张表加LOCK TABLES READ LOCAL ,用来备份MyISAM表 |
| —skip-lock-tables | 备份时不加锁表 |
| —single-transaction | 在备份开始前会把当前事务隔离级别设置为RR,然后开启一个事务快照来获得备份的一致性,只对InnoDB表有效,与—lock-tables互斥 |
| —master-data[=#] | 备份时会对数据库加全局读锁,备份完成后,在sql文件里生成change master语句,记录备份的位置点。可以利用这个特性搭建从库 |
| —no-data, -d | 备份表结构,不备份数据 |
| —no-create-info,-t | 备份数据,不备份表结构 |
| —tables | 备份指定表,会覆盖—databases选项 |
| —where, -w | 只导出满足where条件的记录 |
| —ignore-table | 不备份指定表 |
| —set-gtid-purged | 是否需要添加SET @@GLOBAL.GTID_PURGED 到备份出来的sql文件 |
| —insert-ignore | 把insert语句替换成insert ignore语句,类似的还有—replace |
| —dump-slave | 备份是记录master的位置,和master-data有点类似,但是只作用在从库进行备份是有用,如果同时现在刚忽略master-data选项。加上这个选项后会停止sql thread备份完后再开启。 |
| —events, -E | 备份事件调度器 |
| —routines,-R | 备份存储过程,函数 |
| —triggers | 备份触发器 |
| —compress | 在远程备份时,可以client和server这间压缩传输 |
二、全库备份
mysqldump -uroot -p --master-data=2 --single-transaction --routines --triggers --all-databases > all_databases.sql
备份直接压缩
mysqldump -uroot -p --master-data=2 --single-transaction --routines --triggers --all-databases |gzip >test.tar.gz
三、单库备份
mysqldump --databases db1 db2 > db1_and_db2.sql
四、单表备份
mysqldump -uroot -ppasswd --sing-transaction dbname tb1 tb3 tb5> db1_tb1_tb3_tb5.sql
五、备份表结构,不备份数据
mysqldump --no-data db1 > db1_schema.sql
六、备份数据,不备份表结构
mysqldump --no-create-info db1 > db1.sql
七、不锁表备份
mysqldump --routines --triggers --all-databases --skip-lock-tables > all_databases.sql
八、恢复
- 在shell环境重定向导入
shell> mysql < all_databases.sql
- 在mysql里导入
mysql> source all_databases.sql
- 边解压边导入
gunzip < all_databases.sql.gz | mysql -u root –p 123456
- 恢复单表
sed -n -e '/DROP TABLE IF EXISTS `table_name`/,/UNLOCK TABLES/p' full_bak.sql > table.sql
恢复单库
sed -n '/^-- Current Database: `database_name`/,/^-- Current Database: `/p'full_bak.sql >database.sql
