一、备份目的:
用于恢复,对备份的数据要做恢复测试。
备份都是针对某一个数据库。
二、备份类型:
1、根据备份时服务器是否在线:
(1)、冷备 cold backup:离线备份。
(2)、温备 warm backup:只可读,不可写。
(3)、热备 hot backup:在线备份。
2、根据备份的数据集:
(1)、完全备份:full backup
(2)、部分备份:partial backup,只备份某些表
3、根据备份时的接口(直接备份数据文件还是通过mysql服务器导出数据):
(1)、物理备份 physical backup:
直接复制数据文件。
(2)、逻辑备份 logical backup:
把数据从库中提取出来保存为文本文件(无法保证浮点数的精度,索引也会丢失)。
mysqldump
4、根据备份时备份整个数据还是仅备份变化的数据
(1)、完全备份:full backup
(2)、增量备份:incremental backup
(3)、差异备份:differential backup
三、备份对象:
1、数据。
2、mysql配置文件。
3、代码:存储过程、存储函数、触发器。
4、OS相关的配置文件,如crontab配置计划以及相关的脚本。
5、跟复制相关的配置:二进制日志文件。
四、备份工具:
1、mysqldump:逻辑备份工具。
(1)、概述:
InnoDB热备,对MyISAm温备。
备份和恢复过程较慢,因是单线程备份工具。
很难实现“差异备份”或“增量备份”,只适用于“完全备份”或“部分备份”。
一般适用于备份1G以下的数据,不然太慢了。
(2)、用法:mysqldump [options] [db_name [tbl_name...]]
备份:
#mysqldump -uroot -h192.168.1.4 -p --databases testdb > /tmp/tdb.sql
恢复:
#mysql -uroot -h192.168.1.4 -p testdb < /tmp/tdb.sql
(3)、备份时要事先加锁--lock-all-tables即对MyISAM、InnoDB温备。
--lock-all-tables :请求锁定所有表之后再备份。
#mysqldump --databases testdb --lock-all-tables > /tmp/tdb.sql
(4)、如果某库的所有表都是InnoDB存储引擎,可以用--single-transaction实现对数据库进行热备。
注意,不要再使用--lock-all-tables选项,因--single-transaction自动加锁。
#mysqldump --databases testdb --single-transaction > /tmp/tdb.sql
(5)、备份代码:
--enents:备份时间调度器代码。
--routines:备份存储过程和存储函数。
--triggers:备份触发器。
(6)、备份时自动滚动日志:
--flush-logs:备份前,请求到锁之后滚动日志.
(7)、备份综述,使用mysqldump备份常用选项如下:
请求锁:--lock-all-tables或使用--single-transaction进行innodb热备。
滚动日志:--flush-logs
选定备份的库:--databases
备份代码:--enents 、--routines、--triggers
#mysqldump --databases testdb --lock-all-tables --flush-logs > /tmp/tdb.sql
#mysqldump --databases testdb --single-transaction --flush-logs > /tmp/tdb.sql
#mysqldump --databases testdb --single-transaction
--flush-logs --enents --routines --triggers > /tmp/tdb.sql
2、mysqldumper:也是逻辑备份工具,多线程的mysqldump。
一般适用于备份10G以下的数据。
3、lvm-snapshot:
接近于热备的工具,因为先请求全局锁,而后创建快照,并在创建快照完成后释放全局锁,
使用cp、tar等工具进行物理备份。备份和恢复速度较快。
很难实现“差异备份”或“增量备份”,只适用于“完全备份”。
并且请求全局锁需要等待一段时间,在繁忙的服务器上尤其如此。
4、SELECT部分备份工具,不会备份关系定义,仅备份表中的数据。
备份:SELECT clause INTO OUTFILE '/path/to/somefile'
恢复:LOAD DATA INFILE '/path/to/somefile'
5、Xtrabackup:有Percona提供的开源的备份工具
(1)、对InnoDB热备,增量备份。
(2)、对MyISAM温备,不支持增量备份。
(3)、物理备份速度快。
6、mysqlhotcopy:几乎冷备份。