叮咚买菜的上云历程 2023.08.10 讲师介绍 千明杰 叮咚买菜资深DBA,数据库工程师,有多年主流数据库运维经验,在公司主要着力于数据库自动化运维与数据库性能调优方面。 致力于食品健康、美味与创新 让人们吃得好,让生活更美好 目录Menu •怎么选? 选型过程中叮咚买菜主要考虑的因素 •怎么上? 如何将叮咚买菜现有的数据库迁移至云MySQL? •怎么用? 叮咚买菜的云MySQL数据库架构部署 选型过程 叮咚买菜业务:生鲜即时配送+新零售电商 •即时业务需求 高并发 数据一致性 •非即时业务需求 数据库访问时延 稳定性 数据一致性 数据库安全 •使用需求 易用性 运维工具完善 自建 云MongoDB 云MySQL 自建成本高物理资源不足 版本引发的性能问题周边生态工具不完善 为什么上云? 为什么选择云MySQL? 迁移过程 同构数据库丝滑上云,异构数据库改造迁移 自建云MongoDB云MySQL Master Slave Slave MongoDB-3.2 Master Slave Slave DTS cMongoDB-4.0 Master Slave Slave 业务层改造 MySQL-5.7 业务层 改造 架构部署 客户端/用户 痛点 业务需求; 地域A VIP访问地址 A1区 A2区 A2区 主实例 只读实例 只读实例 只读实例 强同步复制 强同步复制 本地备份链路 备实例 备份中心 备实例 备实例 热点/爆款问题:流量、数据量无法预估,业务高峰需停服扩容,资源弹性扩展能力高; 运维难题:运维上百套数据库,DBA人力紧缺; 解决方案 读写分离:数据库读写分离,动态添加只读,实现弹性扩展; 高性能:通过云数据库MySQL的高性能满足订单、商品库、促销库的跨可用区部署(全组件支持); 运维:采用DBbrain进行数据库全生命周期管理,降低数据库管理和运维门槛; 最新功能 数据库代理 CPU弹性扩容 有效降负载,保持连接稳定轻松应对流量高峰 自动读写分离:有效降低主实例的读负载,通过添加只读就可实现水平扩展能力; 事务拆分:将一个事务中的读、写拆分到不同的实例上去执行; 防闪断:提供无损的应用连续性,运维中的调整不会导致连接和事务的中断; 连接池:有效解决连接数过多或短连接业务频繁建立新连接导致实例负载过高的问题; 快速响应和变更:基于云环境通过动态分配CPU资源,可实现CPU资源的手动/自动调整和弹性扩展; 弹性控制成本:在高峰期时为用户提供更加稳定的服务,同时在业务需求下降时又可以自动缩减资源,减少浪费,降低费用; 感谢观看! Thankyou userid:414195,docid:136849,date:2023-08-17,sgpjbg.com 云数据库MySQL上云最佳实践 潘怡飞 目录Menu •云数据库MySQL核心能力 •自建迁移上云方案 •云数据库运维最佳实践 云数据库MySQL核心能力 云数据库MySQL架构 VIP1# 只读(在线) TGW(R) 上海二区 VIP0# 读写 TGW(W/R) 异步、半同步、强同步 VIP2# (全局读写分离) proxy VIP3# 只读(离线) TGW(R) 广州四区 VIP5# TGW(R) 异步、半同步、强同步 基础能力: •双节点、三节点、异步、半同步、强同步; •RO组逻辑隔离,TP与AP业务隔离; •跨可用区透明切换、两地三中心灾 MasterSlave0# replication replication 灾备实例master replication 灾备实例slave 备节点; •1830天任意时间回档数据; RO0# 上海五区 Slave1# RO1#RO2#RO3# RO4#RO5#RO6# RO0# RO1#RO2#RO3# 冷备/binlog备份中心 增强能力: •proxy自动读写分离; •全链路审计日志; •参数自调优; •内核能力:instantDDL、异步删除大表、SQL限流; 性能 高性能参数模版 能力说明 高性能参数模版优化提供了高性能/高稳定性两套模版,以满足用户不同业务的需求;提供公式设置参数,以使得变配后依然能够提供良好的性能;开放innodb_buffer_pool_size相关参数,减少OOM概率且为降低内存超用比提供了基础 能力说明 云数据库MySQL配置参数多达几百个,同时每个参数的范围从几十到几万,甚至几十万不等。对于DBA而言仅能够通过经验进行配置。而通过高效的机器学习手段,对于不同负载进行迭代学习,TPS提升有15%-55% 参数智能调优 安全 MySQL 数据库实例 MySQL 部分库表 回档恢复能力 droptablerecycletable 部分库表极速回档 •弥补目前采用物理备份之后,部分库表回档效率较低的场景 回收站 recycle _bin •支持表被误删后随时恢复 •Droptable不删除物理文件,只移入回收站 •降低droptable对IO和BP造成冲击 SQL误操作 MySQL time1time2 Flashback DMLFlashback,误操作回滚效率大幅度提升 安全 能力说明 MySQL time1time2 数据库使用过程中的误操作可能会给业务带来严重的影响,常见的恢复手段如回档、克隆等方式操作较为繁琐且耗时较长,而通过备份集恢复则需要额外的系统资源,在数据量较大时恢复时间不可控。 TXSQL在InnoDB引擎上设计和实现了闪回的功能,无需复杂的恢复操作,通过简单的SQL语句即可查询或恢复误操作前的历史数据,节省了大量宝贵的时间,保证业务平稳运行。 自建迁移上云方案 数据库迁移工具-DTS 迁移能力: •厂家支持:支持自建和友商(阿里云,AWS) •源数据库:支持9种(mysql、redis、mongoDB、perconna、sqlserver、tdsql以及PG) •数据迁移:通常支持结构迁移、全量迁移以及全量+增量迁移 •断点续传:支持断点续传 •数据一致性检查 约束限制: •只支持迁移基础表和视图,暂不支持函数、触发器、存储过程等对象 •相互关联的数据对象需要同时迁移,否则会导致迁移失败 •数据库版本,例如mysql要求源5.5以上版本 1.设置源和目标库2.设置迁移方式和对象 3.数据一致性校验 9 数据库割接方案 常见迁移方案 停写时长 数据一致性 回滚风险 业务情况 客户案例占比 读写一刀切 低 低 中 数据库停写,业务无需改造 80% 先切读再切写 低 低 低 数据库停写,业务需读写分离 20% 方案要点: 1.数据同步:使用DTS进行全量+增量的整个实例同步方式。 2.业务停写:当DTS显示源目标端数据差距和延时均为0,业务停写。 3.数据备份:源库做数据备份。 4.源目标端数据一致性检查。 5.业务切换:业务读写流量指向目标数据库。 6.数据同步:建立数据同步任务。 7.流量切换及试运行。回滚方案: 由于存在数据同步任务,两端数据一致,回滚代价较低 1 全量割接割接方案 割接前准备: 1.确认增量数据同步数据量以及延时为0 2.确认目标端应用环境版本和源端一致 3.目标端应用功能,业务流程和压测符合预期 4.割接演练停服时间符合预期 5.割接回滚的决策标准 割接步骤: 1.源端应用A停服且可观测。(各层均没有应用A业务流量以及数据库读写业务) 2.停写后,确认源和目标两端数据一致性 3.业务功能测试 4.业务测试通过,A应用全量业务切换DNS到云上的新系统 11 云数据运维最佳实践 MySQL智能化运维平台 感谢观看! Thankyou 全场景构建云上MySQL 可用性方案分享 讲师介绍 MYSQL产品线负责人 程昌明 腾讯云数据库MySQL产品线负责人,在高可 用解决方案、信息安全、系统规划、性能优化、灾难恢复与信息系统整合方面拥有丰富的实践经验。曾为网络运营商、银行、能源(国网、南网)及政府等各行业的关键业务系统,提供整体解决方案以及数据库设计。 前言 随着企业和机构越来越多地采用在线服务和混合工作负载环境,大家既需要维持运营标准,也越来越多地要求基础架构能处理更高系统负载的需求。要实现高可用性,这些基础架构必须达到定义好的可量化的成果,而不仅满足于"更好地运行"。 目录Menu •根据业务特征识别可用性需求 •如何构建不同可用性架构 •可用性架构快速验证 •如何兼顾可用性及性能 根据业务特征识别可用性需求 单机故障 •需要存在主数据处理系统以及备用数据处理系统 •在必要的情况下备用数据处理系统可切换为主数据处理系统 •数据处理系统需要定期备份,可实现故障后恢复 •主、备用数据处理系统不可部署在同一个物理资源上 01 单可用区故障 •主数据处理系统与备用数据处理系统需要部署在不同可用区 •主数据处理系统与备用数据处理系统使用同一网络域 •主、备用数据处理系统数据实时同步 •主、备用数据处理系统具备自动资源、网络切换能力 02 地域级故障 •主数据处理系统与备用数据处理系统部署在不同地域 •主、备用数据处理系统资源配置独立的运行管理资源 •主、备用数据处理系统数据实时同步 •具备跨地域的备份恢复能力 03 数据一致性 根据RPO要求,最高需要支持到RPO=0,实现数据零丢失 04 可用性级别 如何构建不同可用性架构 可用性架构 1 2 3 4 5 单点故障:通过多节点架构,防止数据库出现淡点故障,异常时自动切换,保障服务可用性;在三节点架构下,还提供RPO=0的强同步模式 多AZ部署:依托于腾讯云内部稳定且高速网络环境,实现跨AZ的部署模型,当单个AZ出现故障时能够自动切换至可用AZ 灾备实例:通过灾备实例构建跨地域的数据同步链路,在必要时可以将灾备实例提升为主实例,通过外网、云联网等方案进行网络打通连接 数据库代理:数据库代理可以实现就近访问以及计划内连接保持能力,防止切换后因垮可用区导致性能出现明显下降 异地备份:使用异地备份,可以最小成本实现跨地域容灾,实现跨地域实例恢复等能力 可用性级别-业务 业务类型 游戏 电商 零售 汽车 金融 传媒 交通 医疗 教育 文旅 SaaS 故障影响大 故障场景 单点、AZ级故障 地域级故障 突发请求量过大 数据一致性错误 客户流失 多节点架构 多AZ部署 多AZ只读组 分布式组件 内核优化 强同步 灾备实例 灾备提升为主 跨地域RO组 金牌网络链路 异地备份 异地恢复 CPU弹性 数据库代理 SQL限流 并行查询 参数调优 热点更新 经济损失 单点、AZ级故障 地域级故障 突发性能请求 产品口碑 功能模块 稳定性建设 9 可用性架构快速验证 混沌演练平台 混沌演练报告 行业经验库演练模版 记录实验问题生成演练报告 新建演练任务 安全护栏指标监控 可视化故障注入 演练全生命周期管理 •演练基本信息 •动作执行日志 •可视化演练资源分布图 •实时指标监控 •演练数据统计 •故障问题复盘 1 2 4 5 混沌演练平台 演练目标:验证CLB、自建服务、CDB、Redis等服务对于过载、冗余场景故障时,是否能够正常提供服务 稳态指标:云监控配置基础性能指标和告警 实验假设:分别对业务不同层次应用进行故障注入,能够实现业务稳态指标观测实验方法:通过腾讯云混沌演练平台选择对应云产品故障进行操作 结果验证:通过调用云监控/云压测的结果,观测业务影响 客户收益: 业务对于数据库重度依赖,数据库单可用区出现过载情况时,业务会卡住 模拟高负载导致单点异常时,是否能够通过CPU弹性、SQL限流等能力来验证系统恢复时间是否符合预期 通过随机注入故障找到系统可用性卡点并进行完善 如何兼顾可用性及性能 自动负载均衡(Loadbalancing) •路由请求过程中