备份类型:
根据备份时是服务器是否在线:
热备份(HOT):
读写操作不受影响
温备份(WARM):
进可以执行读操作,写操作不能执行
冷备份(COLD):
读写操作均不能进行
根据备份时对数据文件的操作:
物理备份:
直接复制数据文件。速度快,但是跨平台移植可能受到底层文件系统格式的影响。
逻辑备份:
将数据导出至文本文件中。速度慢。但是保存文件中会丢失浮点数精度。可以使用文本处理工具进行二次处理。移植性强。备份出来的数据可能比原数据占用空间还大。
根据备份时的数据大小:
完全备份(full):备份全部数据
增量备份(incremental):仅备份上次完全备份或增量备份后变化的数据。
差异备份(differnetial):仅备份上次完全备份以来变化的数据。占用空间比增量大。
增量备份和差异备份的区别:
虽然都是对变化的数据备份,但是增量在还原时要还原此前一系列的增量+完全备份的内容。差异备份还原时只要选择最近一个备份+完全备份的内容即可。
需要备份的东西:
数据、服务器配置文件、二进制日志、事务日志
二进制日志注意点:
备份时除了使用FLUSH LOGS以外,建议将sync_binlog的值设置为1,这样可以在安全性上保证事务不会没有写入日志。
还原的时候先暂时关闭二进制日志记录功能,还原过程没必要记录二进制日志中。
备份策略:
考虑以下2点:
1.数据在某个周期的变化量
2.数据还原是所需时间
备份方案:
完全+增量
完全+差异
热备份:
MyISAM:不支持热备份,可以使用温备份
InnoDB:支持热备。可以使用xtrabackup(物理备份)和MySQLdump等工具。
备份工具:
MYSQL自带:
mysqldump 逻辑备份,对MyISAM可以实现温备份。InnoDB可以实现热备。
mysqlhotcopy 物理备份,冷备份工具。基于perl脚本,使用FLUSH TABLES和LOCK TABLES以及scp完成备份。
SELECT INTO OUTFILE SELECT语句,只能对单张表操作。
文件工具:
cp
冷备份,直接复制文件
lvm
使用逻辑卷快照功能,实现几乎热备。需要手工执行FLUSH TABLES 和LOCK TABLES,然后创建快照,创建完成后执行UNLOCK TABLES,复制快照文件。
注意:MyISAM可以直接锁表,但是对InnoDB而言,因为可能会涉及到事务的操作,例如从日志同步到磁盘中,或者事务未同步到磁盘中。此时如果锁表还得等待事务同步完成。
商业工具:
ibbackup
InnoDB
开源工具:
xtrabackup
#mysqldump [OPTION] DBNAME[TBNAME1,...]
默认要提前手工创建数据库,因为备份中不包含CREATE DATABASE命令。
[OPTION]
-u USERNAME
-p PASSWORD
-h HOST
--master-data = 0|1|2 是否记录当前的二进制文件和事件位置
0 不记录二进制日志文件及其事件位置
1 以CHANGE MASTER TO的方式记录位置,可用于恢复后直接启动从服务器。
2 以CHANGE MASTER TO的方式记录位置,但是记录默认被注释。
--lock-all-tables 锁定所有表
--lock-tables
--flush-logs 执行日志滚动
--single-transaction 启动热备事务,适用于InnoDB,借助于MVCC生成一个隔离级别为REPEATABLE-READ的事务。这样无论后台如何变化,看到的数据都不会发生变化。 会自动处理表锁,不能和--lock-all-tables或者--lock-tables同时使用。