Mysql Dump

MySQL备份有逻辑备份与物理备份

逻辑备份有MySQL自带的mysqldump工具

物理备份有开源的Xtrabackup(免费版 ibbackup 热备份)

今天总结一下,mysqldump

dump 整个库(包含函数、存储过程、触发器等) mysqldump -uroot -pxxxx  –all-databases –single-transaction –triggers –routines –events -P3306 |gzip >test.tar.gz
dump 整个库 mysqldump -uusername -ppassword –all-databases  –single-transaction  |gzip >test.tar.gz
dump 多个DB-带数据 mysqldump -uusername -ppassword  –single-transaction  –databases db1 db2 > db1db2.sql
dump 单个DB-不带数据 mysqldump 数据库名 -uroot -p > xxx.sql
dump 单张表 mysqldump -uusername -ppassword db1 table1  > tb1tb2.sql
dump 多张表 mysqldump -uusername -ppassword db1 table1 table2 > tb1tb2.sql
dump 表的部分数据,带where条件 mysqldump -uroot -proot –databases db1 –tables a1 –where=‘id=1‘  >/tmp/a1.sql
dump 字段是字符串,并且导出的sql中不包含drop table,create table mysqldump -uroot -proot –no-create-info –databases db1 –tables a1 –where=”id=‘a‘”  >/tmp/a1.sql
dump 表结构,不带数据 mysqldump -uroot -proot –no-data –databases db1 >/tmp/db1.sql
dump 数据 mysqldump -t 数据库名 -uroot -p > xxx.sql
dump 跨服务器(h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错 mysqldump –host=h1 -uroot -proot -C –databases db1 |mysql –host=h2 -uroot -proot db2 (-C代表压缩)
参数–single-transaction

该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎(它不显示加锁通过判断版本来对比数据),仅InnoDB。本选项和–lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用–quick 选项。

参数–quick, -q

不缓冲查询,直接导出到标准输出。默认为打开状态,使用–skip-quick取消该选项。