一、备份目的:


用于恢复,对备份的数据要做恢复测试。

备份都是针对某一个数据库。


二、备份类型:


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:几乎冷备份。