目录
本篇是系列性,由浅入深,主要是为了本人日后回看时再学习,如果道友对Mysql也是零基础的话,强烈建议从头开始看
Mysql的备份和恢复
为什么要备份?
灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击;误操作;测试;
要注意的要点:
可容忍最多丢失多少数据;
恢复需要在多长时间内完成;
需要恢复哪些数据;
(1)做还原测试,用于测试备份的可用性
(2)还原演练
备份类型:
完全备份,部分备份;
完全备份:整个数据集
部分备份:只备份数据子集
完全备份,增量备份,差异备份
增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分;
差异备份:仅备份最近一次完全备份以来变化的数据
热备份、温度备份和冷备份;
热备份:在线备份,读写操作不受影响;
温备份:在线备份,读操作可继续进行,但写操作不允许;
冷备份:离线备份,数据库服务器离线,备份期间不能为业务提供读写服务;
MyISAM: 温备
InnoDB:热备
物理备份和逻辑备份:
物理备份:直接复制数据文件进行的备份;
逻辑备份:从数据库中“导出”数据另存而进行的备份;
逻辑备份:与存储引擎无关;
规则备份时需要考虑的因素:
持锁的时长;
备份过程时长;
备份负载
恢复过程时长;
备份什么?
数据、额外的数据(二进制日志和InnoDB的事务日志)、代码(存储过程和存储函数、触发器、时间调度器等)、服务器配置文件;
设计备份方案:
完全备份+增量备份
备份手段:物理,逻辑;
备份工具:
mysqldump:逻辑备份工具,适用于所有存储引擎,温备;完全备份,部分备份;对InnoDB存储引擎支持热备;
cp,tar等复制归档工具:物理备份工具,适用于所有存储引擎;冷备:完全备份,部分备份;
lvm2的快照:几乎热备;借助于文件系统工具实现物理备份;
mysqlhotcopy:几乎冷备;仅适用于MyISAM存储引擎;
备份方案之备份工具的选择:
mysqldump+binlog:
mysqldump:完全备份;
复制binlog中指定实践范围的event;增量备份;
lvm2快照+binlog:几乎热备,物理备份;
lvm2快照:使用cp或tar等做物理备份;完全备份
复制binlog中指定实践范围的event;增量备份;
xtrabakup:
由Percona提供的支持对InnoDB做热备(物理备份)的工具;
对InnoDB:热备,支持完全备份
对MyISAM引擎:温备,只支持完全备份;
mysqldump工具介绍:
mysqldump:客户端,通过mysql协议连接至msyqld;
-A,--all-databases
MyISAM,InnoDB:温备
-x,--lock-all-tables:锁定所有表;
-l,--lock-tables:锁定备份的表;
InnoDB:
--single-transaction:启动一个大的单一事务实现备份;
-B,--databases db_name1 db_name2 …:备份指定的数据库
-C,--compress:压缩传输;
命令的语法格式:
mysqldump [OPTIONS] database [tables]:备份单个库,或库指定的一个或多个表
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3…]:备份一个或多个库;
mysqldump [OPTIONS] --all-databases [OPTIONS]:备份所有库
其它选项:
-E,--events:备份指定库的时间调度器;
-R,--routines:备份存储过程和存储函数;
--triggers:备份触发器
--master-data[=#]:
1:记录CHANGE MASTER TO 语句;此语句未被注释;
2:记录为注释语句;
--flush-logs,-F:锁定表之后执行flush logs命令;
注意:二进制日志文件与数据文件不应该放置于同一磁盘;
几乎热备:lvm2快照,流程:
1. 请求锁定所有表;
mysql> FLUSH TABLES WITH READ LOCK;
2. 记录二进制日志文件及事件位置;
mysql> SHOW MASTER STATUS;
3. 创建快照;
lvcreate -L SIZE -s -p r -n NAME /dev/VG_NAME/LV_NAME
4. 释放锁;
mysql> UNLOCK TABLES
5. 挂载快照卷,复制数据进行备份;
cp, rsync, tar等命令复制数据;
6. 备份完成之后,删除快照卷;