一、参数说明

—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这间压缩传输

二、全库备份

  1. 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

八、恢复

  1. 在shell环境重定向导入
shell> mysql < all_databases.sql
  1. 在mysql里导入
mysql> source all_databases.sql
  1. 边解压边导入
gunzip < all_databases.sql.gz | mysql -u root –p 123456
  1. 恢复单表
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