备份恢复
备份恢复
内容概要
• 备份恢复策略 • 逻辑备份 • 物理备份 • 数据恢复 • 自动化备份恢复设计
备份策略
备份恢复策略 • RTO Recovery Time Objective,恢复时间目标,数据中心可容许服务中断的时间长度,可简单 地描述为企业能容忍的恢复时间
• RPO Recovery Point Objective,恢复点目标,企业能容忍的最大数据丢失量,可以按照时间计 算
备份方式 • 逻辑 1.mysqldump/mysqlpump 2.select…into outfile 3.主从延迟复制
• 物理 1.冷备: 关闭MySQL,拷贝数据文件 2.热备: innobackupex
• 日志备份 1.binlog实时备份
备份恢复策略
全量备份 逻辑备份 mysqldump 物理备份 innobackupex、冷备 增量备份 物理备份 innobackupex 主从冗余 不能避免数据误操作 主从延迟库备份 binlog应用落后主库一段时间
备份恢复策略
1.确定数据库的大小
select round(sum(data_length+index_length)/1024/1024) as total_mb, round(sum(data_length)/1024/1024) as data_mb, round(sum(index_length)/1024/1024) as index_mb from information_schema.tables;
2.数据库的可用性 维护窗口 业务低峰时段
备份恢复策略
3.存储引擎与锁策略
select table_schema,engine,round(sum(data_length+index_length)/1024/1024) as total_mb, round(sum(data_length)/1024/1024) as data_mb,round(sum(index_length)/1024/1024) as index_mb,count(*) as tables from information_schema.tables where table_schema not in (\’INFORMATION_SCHEMA\’,\’PERFORMANCE_SCHEMA\’,\’sys\’,\’mysql\’) group by table_schema,engine order by 3 DESC;
4.运行时间 确认备份运行的时间,便于执行合理的备份计划
备份恢复策略
5.备份验证 备份完成后,必须验证备份的有效性 6.灾备演练 定期组织灾备演练,测试数据恢复,能否达到RTO和RPO标准 7.常用的备份计划 • 每天一次全备 • 实时备份binlog • 每6小时备份一次核心表 • 1,3,5全备,2,4,6,7增量备份
逻辑备份
mysqldump
• 将数据备份成可执行的SQL语句。 • 备份方式: • 远程备份 • 本地备份 • 备份类型 • 一致性备份 • 全库备份 • 单表备份 • 备份时排除某些表 • 单表条件备份
mysqldump
• 备份指定的数据库中的某些表
mysqldump [options] db_name [tab1] …
• 备份一个或多个数据库
mysqldump [options] –database DB1 [DB2] …
• 备份所有数据库
mysqldump [options] –all-database
mysqldump • 常用参数 –tables 指定导出的表,–databases配合使用 –single-transaction 事务类型表一致性导出 –lock-tables 锁定表,导出后释放 –default-character-set 指定导出文本的字符集 –routines 导出存储过程,函数
mysqldump
–triggers 导出触发器 –hex-blob BLOB字段导出 –ignore-table 多张多次指定 , 注意=前后无空格, –ignore-table=eve.uainfo -w, –where=name 指定where条件,-w \’id =77643’ -t, –no-create-info 不备份表结构,只备份数据
mysqldump
-T, –tab=name 指定数据输出路径,只能在mysql服务器本地使用 –fields-terminated-by 指定字段分隔符 –replace Use REPLACE INTO instead of INSERT INTO –master-data 生成change master to语句,并指定一致性导出的binlog的位置 –set-gtid-purged Whether to add SET @@GLOBAL.GTID_PURGED to output
mysqldump
• –导出单个db mysqldump -uroot -pmysql1 –master-data=2 –single-transaction –triggers –routines -databases sakila >/home/mysql/insert.sql
• –导出多个db mysqldump -uroot -pmysql1 –default-character-set=utf8 –hex-blob –single-transaction -routines –triggers –databases employees sakila >/home/mysql/test/dumpdb.sql
• –导出单个table,导入时,先进入对应的db下 mysqldump -uroot -pmysql1 –default-character-set=utf8 -t –databases mysql –tables user > user.sql
mysqldump • –不导出某些表 –ignore-table=eve.uainfo 多张多次指定 , 注意=前后的空格 mysqldump -uroot -pmysql1 –default-character-set=utf8 –single-transaction –databases eve –ignore-table=eve.uainfo –ignore-table=eve.dimensions_info >ignoret.sql
• –load data格式 mysqldump -uroot -pmysql1 –databases eve –default-character-set=utf8 –singletransaction –tables TRACKINGCLICK -t –tab /mnt/howe/ –fields-terminated-by=\’,\’
mysqldump • replace –大表修复不重建表 mysqldump-uroot -pmysql1 –default-character-set=utf8 –hex-blob –single-transaction -routines –triggers -t –replace=TRUE –databases mysql –tables user >/mnt/howe/user.sql
• –修复行 where mysqldump -uroot -pmysql1 –default-character-set=utf8 –single-transaction -t -databases iruluplay –tables third_party_device -w \’id =77643\’ > 1.txt
• 单行insert导出 –skip-extended-insert mysqldump-uroot -pmysql1 –default-character-set=utf8 –skip-extended-insert -databases mysql –tables user >/mnt/howe/user.sql
mysqldump
• 对于较小的数据库非常理想,适合于5GB~20GB之间的数据库。 • 不适用于上百GB的数据库,也不适用于时间性要求非常强的恢复。