张棚飞-腾讯云CDB海量数据的备份与恢复

张棚飞老师对数据备份及恢复展开由浅入深的分析。面对海量数据的挑战,为实现系统高可用、按时备份、数据安全保证及恢复速度快的目标,腾讯云CDB从整体架构上进行优化,借助多种工具,对海量数据的备份与恢复做出了深入探索。

展开查看详情

1. 数据库技术沙龙-深圳站 腾讯云CDB海量数据的备份与恢复 -- ArkStore 张棚飞(腾讯高级工程师) 1

2.目录-ArkStore 1. 功能介绍 2. 设计目标 3. 整体架构 4. 工具介绍 5. 未来展望 2

3.功能介绍 3

4.腾讯云CDB介绍 腾讯云规模最大的MySQL产品 4

5.为什么要备份 1.灾难恢复(误删数据、机器坏掉、业务需 要回档等等) 2.审计,查看过去某个时间点的快照 5

6.功能介绍-1 自动备份 (1)每天自动发起数据备份(默认都是物理备份) (2)可指定时间段发起 (3)可指定数据备份保留时长 (4)自动备份binlog (5)可指定binlog备份保留时长 6

7.功能介绍-2 手动备份 (1)可通过页面或接口发起 (2)支持物理备份和逻辑备份 (2)逻辑备份支持指定库表备份 7

8.功能介绍-3 回档 (1)指定时间点恢复 (2)原则上不覆盖原实例 8

9.设计目标 9

10.海量数据备份的挑战 1. 每天产生PB级的备份数据 2. 单个实例最大6TB 3. 12小时内完成备份 4. 带宽资源成本高 5. 保证备份可靠性 6. 缩短恢复时间 10

11.设计目标 1. 系统高可用 2. 按时完成备份 3. 保证数据安全 4. 恢复速度尽量快 11

12.整体架构 12

13.整体架构 调度器 MySQL 中转机 apply log agent agent 物理冷备 物理冷备 压缩传输 压缩上传 MySQL agent 压缩上传 存储介质 物理冷备/逻辑冷备/binlog 13

14.调度器-高可用 zookeeper 调用方 ha_scheduler 1. zookeeper选主 2. ha_scheduler无状态 3. 任务状态存DB 4. DB采用主备半同步 DB 14

15.调度器-功能 根据优先级调度: 任务调度 binlog导入>binlog备份>数据导入>手动备份>自动备份 1. 每日低峰期自动发起全量备份(发起时间可设置) 调度器 自动备份 2. 失败备份任务自动重试 3. 超过15小时没完成备份则告警 1. 根据机型、任务类型给每个任务分配带宽资源 带宽控制 2. 限制每个实例机所有任务的总带宽 3. 限制集群所有任务的总带宽 15

16.调度器-任务调度 重新入队 用贪心法分配带宽 否 出队 是 总带宽 相应实例机 任务队列 计算带宽 足够 资源足够 是 入队 重新入队 否 任务下发到agent 处理下一个任务 计算优先级 发起任务

17.agent-直连模式 实例机 agent 无状态,仅执行调度器的指令 资源隔离(cgroup) MySQL 备份/导入工具 apply log 流式分块并行上传和下载 上传/下载工具 单个任务上传/下载的带宽控制 在slave备份, 减小对用户的影响 存储介质 压缩上传,减少带宽开销 17

18.agent-中转模式 中转机 agent 实例机 apply log applyapply log log 物理备份 MySQL 备份工具 接收工具 压缩上传 上传工具 在中转机落盘,apply log后上传 恢复时无需apply log,速度更快 存储介质 18

19.存储介质 存储介质 腾讯云COS CFS HDFS 支持多种存储介质,均带有多副本,安全可靠 19

20.工具介绍 20

21. 物理备份-1 MySQL实例 实例机器 apply log 流式传输 压缩 xtrabackup xbstream 解压 缩短单个实例备份时长,减少对用户的影响: 1. 不在实例机落盘,直接上传 2. 分块并行上传(平均400M/s) 上传工具 下载工具 加快恢复速度: 1. 大部分实例使用物理备份 存储介质 2. xbstream集成解压,不落盘直接解压 对开源版本xtrabackup的定制: xtrabackup (1)apply log提速(速度平均提高25%~80%) (1.1)apply log时,开启dummy index cache (1.2)apply log时,page buffer被淘汰时不等待flush (2)支持redo log过大时提前加上FTWRL全局读锁 xbstream (1)集成qpress压缩和解压 21 (2)支持流式输出到stdout

22. 物理备份-2 MySQL实例 流式传输 实例机器 不需apply log xtrabackup xbstream 解压 xbstream 中转机 下载工具 xbstream 压缩 在中转机落盘, apply log后上传 上传工具 存储介质 备份时间越长,redo log越大 尽量缩短单个实例的备份时长,以便减少redo log 因此调度器需要尽量给单个备份任务分配更大带宽 22

23.逻辑备份-单线程 MySQL实例 MySQL实例 mysqldump 导入 流式传输 解压工具 压缩工具 下载工具 上传工具 存储介质 对开源版本的mysqldump的定制: (1) 解决导入routiues/events时依赖用户名的问题(先备份mysql库) (2) 修复binary字符集下对中文库名调用mysql_select_db失败的问题(改用use db) (3) 修复导出大量myisam表时句柄溢出的问题 23

24.逻辑备份-多线程 MySQL实例 MySQL实例 流式传输 mydumper myloader 多个数据流上传/下载 存储介质 对开源版本的mydumper和myloader做了定制: mydumper (1)支持指定多库多表(原版只支持单库多表) (2)支持备份数据不落盘直接上传cos (3)保存库表名的链表插入优化,遍历库表名的速度大幅提升(每次插入表头) (4)解决某些队列阻塞pop操作导致mysql连接超时断掉的问题(改成非阻塞,定期ping) myloader (1)支持从cos下载数据,不落盘,直接导入MySQL实例 24

25.未来展望 DBS 自建IDC 冷备 灾备 腾讯云 DBS 其他云 敬请期待…… 25

26.THANK YOU 26