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取消该选项。
 posted on 2018-11-14 11:50  xibuhaohao  阅读(469)  评论(0编辑  收藏  举报