当前位置: 首页 > news >正文 安庆建设工程造价网站做博客网站最好用什么系统 news 2025/10/24 6:16:00 安庆建设工程造价网站,做博客网站最好用什么系统,高校门户网站建设需要多少钱,门户网站建设运行环境要求文章目录 1 背景2 数据迁移方案2.1 方案一#xff1a;双写新旧库2.2 方案二#xff1a;灰度开关切换新旧库 3 迁移细节3.1 业务代码改造3.2 数据同步3.3 数据一致性校验 4 总结5 参考资料 1 背景 随着业务不断发展#xff0c;一个服务中部分功能模块适合沉淀下来作为通用的… 文章目录 1 背景2 数据迁移方案2.1 方案一双写新旧库2.2 方案二灰度开关切换新旧库 3 迁移细节3.1 业务代码改造3.2 数据同步3.3 数据一致性校验 4 总结5 参考资料 1 背景 随着业务不断发展一个服务中部分功能模块适合沉淀下来作为通用的基础能力。作为通用的基础能力对提供的服务可用性和稳定性有较高的要求因此把该部分功能模块拆分出来单独一个服务是比较好的选择。为了更好的与业务服务物理隔离不仅需要从代码层面拆分数据库层面也需要拆分。在做技术方案设计时面临着以下几个问题 迁移过程中是否允许停服如果停服停服时间窗口如何做到尽可能短旧库表数据如何迁移到新库迁移后如何保证旧库表数据与新库表数据一致 2 数据迁移方案 面向C端用户的场景我们可能会脱口而出一个数据双写的方案。面向B端用户场景可能直接暴力停服迁移。很多时候线上业务场景都是读多写少如果把上面两个方案折衷一下也是一个不错的迁移方案。 下面介绍两个数据迁移方案一个是大家耳熟能详的数据双写另一个是以短暂写入失败为代价的开关控制迁移方案。 2.1 方案一双写新旧库 双写的迁移流程如下图所示 图-1 ②新旧库数据同步由DBA协助完成旧库表数据迁移到新库并使用增量同步工具把旧库表数据同步到新库。③开启双写业务服务迁库代码改造上线在业务写入低峰期校验新库与旧库表数据一致后DBA断开旧库与新库的同步业务服务同步开启写新库开关开始双写。④读新库校验新库与旧库表数据一致后读流量切换到新库进行数据验证验证期间有问题可以随时切换回旧库。⑤代码清理读写流量全量切换新库下线写旧库代码。 采用双写方案迁移库表可以做到用户无感知的平滑切换验证过程中发现问题可以及时回滚。 双写引入了多个数据源项目中如果使用了事务面临着跨库事务对事务代码块的改动成本相对较大。同时还面临着同步双写和异步双写的选择 同步双写新旧库的数据一致性有保障写新库失败会影响现有的业务。异步双写写新库失败会导致数据不一致不影响现有业务需要额外的补偿方案保证新旧库数据的最终一致。 2.2 方案二灰度开关切换新旧库 该方案不涉及双写在代码里根据开关控制使用新库还是旧库切换流程如下图所示 图-2 ②新旧库数据同步DBA协助先将旧库表数据迁移到新库然后再使用增量同步工具把旧库表数据同步到新库。③验证读新库改造好的业务服务部署后新库与旧库保持增量同步开启读新库开关读流量切换到新库进行验证验证过程出现问题可以通过控制开关切回读旧库数据④新旧库切换整个切换流程的核心改造好的业务服务上线。先切断对旧库的写入流量让新库与旧库的增量同步追平同时校验新库与旧库表数据的一致性一致时便可把写流量切换到新库。⑤代码清理业务服务读写流量均切换到新库。 ④为什么要把写流量切换到旧库的从库 写流量切换到旧库的从库目的是为了断开对旧库相应表的写入流量营造相对“静止”的环境让新库可以追上旧库。切断对旧库写入流量的方式有很多选择写从库的方式来主要为了让开关都收拢到一处。 除此之外我们可以对数据库帐号授权的形式来实现写流量的断开 REVOKE INSERT, UPDATE, DELETE ON database_name.table_name FROM username;从上述步骤中可以看到该方案有个硬伤有短暂的停服过程。优点是确保迁移到新库的数据一定与旧库一致的对有使用事务的场景不需要考虑跨库事务代码改造成本低。 3 迁移细节 我们要改造的业务服务代码中涉及声明式事务和编程式事务为了降低跨库事务带来的改造成本并结合上门履约的业务场景——业务数据写入多集中于白天我们最终采用了“灰度开关切换新旧库”方案。 3.1 业务代码改造 需要迁移的表数量不多实现时对DAO层代码进行改造抽取ProxyDAO层原来对DAO层的方法调用全部替换成ProxyDAOProxyDAO层代码植入开关控制代码根据开关决定访问新库旧库。 图-3 3.2 数据同步 创建好新库后DBA将旧库需要迁移的表数据全量同步一次到新库然后使用PingCAP的数据导入工具——Syncer使用该工具进行数据增量同步需要满足以下前提 5.5 MySQL 版本 8.0开启binlog并且格式为ROW且binlog_row_image必须设置为为FULL 从Syncer架构图不难看出同步时Syncer把自己伪装成一个 MySQL Slave和 MySQL Master 进行通信然后不断读取 MySQL binlog进行 binlog 事件解析规则过滤和数据同步。 图-4 3.3 数据一致性校验 不管是双写还是灰度开关切换新旧库的方案都绕不开数据一致性校验。数据不一致如何产生的 图-5 双写新旧库可能产生数据不一致的场景 图-5③DBA检测新旧库无差异后关闭同步写新库开关未开启前旧库来了写入的流量图-5③/④双写后使用异步方式双写新库写入失败 灰度开关切换新旧库可能产生数据不一致的场景 图-5c/d数据同步工具挂了 我们所使用的迁移方案需要重点关注新旧库的同步情况为此我们做了2层数据校验 DBA在旧库写流量关闭后对数据进行一致性校验业务服务写个定时任务定期去抽样校验 MySQL主从模式下可以通过show slave status 命令查看主从延迟情况根据Seconds_Behind_Master的值是否为0来判定是否有延迟有延迟2个库的数据肯定不一致。上面提到我们增量同步使用的是Syncer它只是伪装成从库并不是真正的从库使用MySQL主从模式下数据一致性校验方法行不通了因此借助了PingCAP官方提供的sync-diff-inspector工具进行数据一致性校验。 sync-diff-inspector工具架构图如下所示 图-6 sync-diff-inspector校验流程主要分以下步骤 对需要比较的表数据使用多线程方式划分为多个chunk采用生产者-消费者模型将划分的chunk放入队列里消费者线程从队列取出划分好的chunk对这个chunk的上下游数据对比计算出checksum某个chunk的上下游checksum如果不一致则对该chunk二分法方式找出不一致的数据生成修复SQL 使用sync-diff-inspector工具对新旧库表全量校验后数据基本可以保障一致不过该工具使用的前提是需要保证数据校验期间被校验的表上下游都没有数据写入。从校验工具的工作原理来看校验耗时跟数据量成正比迁移的数据越多校验时间越长如果对全量数据的校验校验周期会变得特别长。 根据目前业务现状已经到终态的冷数据基本不会有写入操作。为尽可能缩短写入失败时间业务数据校验的重点放在近期修改过的数据。冷数据不需要每次一致性校验时都参与进来。可以根据更新时间作为筛选条件在新旧库抽取最近一段时间内修改过的数据逐行对比数据是否一致校验流程如下图所示 图-7 对旧库和新库按照更新时间筛选数据时使用多线程并发的方式取数尽可能减少时间差。 根据更新时间筛选数据时我们可能很自然的写出了下面的SQL select * from table where update_time X;图-8 这个SQL如果使用单线程串行的方式执行后面执行查出来的结果大概率会跟先执行的不一样。因为SQL筛选数据本身也会有耗时特别是筛选时间范围比较大的时候需要扫描更多的数据耗费的时间越长。SQL筛选数据期间修改的数据对先执行的SQL来说是不可见的。 校验时先对冷数据做一次全量校验之后每次都是校验最近修改的这样可以大大缩小查询范围缩短校验数据一致性的时间。查询条件使用了上界和下界限定条件保障了统计口径是一致的。校验代码消耗的时间作为下一次迭代使用的时间偏移量当“新旧库查询结果都为空”时表明最近都没有数据写入并且N-S的时间差足够小是可以认为两个库的表数据是一致的这个时候把流量自动切换到新库可以实现平滑迁库。 N-S的时间差在什么量级 初始时这个时间差会比较大整个迭代过程中首次使用的更新时间筛选范围一般是最大的除非一次取数时间加上程序校验时间的耗时比初始指定的偏移量K大。更新时间筛选范围会随着迭代越来越小在写流量低峰期SQL查出的数据也会越来越少直至查不出数据。这个时间差差不多就是一条根据更新时间查数据的时间。如果更新时间是索引查询的时间范围很小N-S的时间差最优情况下是在毫秒级的。 4 总结 最终我们采用保守的方式——旧库写流量切换从库没有使用平滑切换的方案。以业务数据校验为主DBA层数据校验为辅完成数据的迁移。整个过程读流量正常写流量在切换到旧库从库 → 新旧库增量数据一致性校验 → 写流量切换到新库期间会失败流量低谷期写入失败时间不超过5秒。 我们选择短暂停服的技术方案这个方案虽然不是最优的但是会跟业务更匹配方案简单改造成本低对业务影响范围更小。技术方案的选择一定是贴合实际业务场景的脱离业务场景的所谓最优方案不过是空中楼阁当真正踏出登楼第一步时可能就坍塌了。 服务拆分数据迁移对技术功底要求不那么高并不需要使用高深的技术更多的是考验一个人细心程度对每个细节的深入思考与把控。失之毫厘差之千里一个细节没处理好可能就会带来灾难性问题。 大家还有什么好的平滑迁移数据的方法欢迎到评论区留言。 5 参考资料 解析 TiDB 在线数据同步工具 Syncer PingCAP 文档 关于作者 张莲祥转转上门履约业务研发工程师 转转研发中心及业界小伙伴们的技术学习交流平台定期分享一线的实战经验及业界前沿的技术话题。 关注公众号「转转技术」综合性、「大转转FE」专注于FE、「转转QA」专注于QA更多干货实践欢迎交流分享~ 文章转载自: http://www.morning.lgxzj.cn.gov.cn.lgxzj.cn http://www.morning.npqps.cn.gov.cn.npqps.cn http://www.morning.nfpct.cn.gov.cn.nfpct.cn http://www.morning.xqltq.cn.gov.cn.xqltq.cn http://www.morning.lznfl.cn.gov.cn.lznfl.cn http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn http://www.morning.rui931.cn.gov.cn.rui931.cn http://www.morning.ntffl.cn.gov.cn.ntffl.cn http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn http://www.morning.kpfds.cn.gov.cn.kpfds.cn http://www.morning.gmrxh.cn.gov.cn.gmrxh.cn http://www.morning.tzcr.cn.gov.cn.tzcr.cn http://www.morning.jpjxb.cn.gov.cn.jpjxb.cn http://www.morning.mqfw.cn.gov.cn.mqfw.cn http://www.morning.hfxks.cn.gov.cn.hfxks.cn http://www.morning.frcxx.cn.gov.cn.frcxx.cn http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn http://www.morning.dfwkn.cn.gov.cn.dfwkn.cn http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn http://www.morning.krhkn.cn.gov.cn.krhkn.cn http://www.morning.dyfmh.cn.gov.cn.dyfmh.cn http://www.morning.clgbb.cn.gov.cn.clgbb.cn http://www.morning.kwjyt.cn.gov.cn.kwjyt.cn http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn http://www.morning.zhghd.cn.gov.cn.zhghd.cn http://www.morning.nzmhk.cn.gov.cn.nzmhk.cn http://www.morning.sbczr.cn.gov.cn.sbczr.cn http://www.morning.bxqry.cn.gov.cn.bxqry.cn http://www.morning.rhgtc.cn.gov.cn.rhgtc.cn http://www.morning.smdiaosu.com.gov.cn.smdiaosu.com http://www.morning.c7623.cn.gov.cn.c7623.cn http://www.morning.lsxabc.com.gov.cn.lsxabc.com http://www.morning.sdhmn.cn.gov.cn.sdhmn.cn http://www.morning.zqzhd.cn.gov.cn.zqzhd.cn http://www.morning.zynjt.cn.gov.cn.zynjt.cn http://www.morning.qfrmy.cn.gov.cn.qfrmy.cn http://www.morning.okiner.com.gov.cn.okiner.com http://www.morning.xfhms.cn.gov.cn.xfhms.cn http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn http://www.morning.pwhjr.cn.gov.cn.pwhjr.cn http://www.morning.zcncb.cn.gov.cn.zcncb.cn http://www.morning.zcnwg.cn.gov.cn.zcnwg.cn http://www.morning.drywd.cn.gov.cn.drywd.cn http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn http://www.morning.nzlqt.cn.gov.cn.nzlqt.cn http://www.morning.sblgt.cn.gov.cn.sblgt.cn http://www.morning.qytyt.cn.gov.cn.qytyt.cn http://www.morning.txjrc.cn.gov.cn.txjrc.cn http://www.morning.huayaosteel.cn.gov.cn.huayaosteel.cn http://www.morning.nnwpz.cn.gov.cn.nnwpz.cn http://www.morning.dycbp.cn.gov.cn.dycbp.cn http://www.morning.jgzmr.cn.gov.cn.jgzmr.cn http://www.morning.hblkq.cn.gov.cn.hblkq.cn http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn http://www.morning.sfzwm.cn.gov.cn.sfzwm.cn http://www.morning.zlcsz.cn.gov.cn.zlcsz.cn http://www.morning.mrxqd.cn.gov.cn.mrxqd.cn http://www.morning.xdhcr.cn.gov.cn.xdhcr.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.xqcst.cn.gov.cn.xqcst.cn http://www.morning.monstercide.com.gov.cn.monstercide.com http://www.morning.frpfk.cn.gov.cn.frpfk.cn http://www.morning.ydrfl.cn.gov.cn.ydrfl.cn http://www.morning.xkzr.cn.gov.cn.xkzr.cn http://www.morning.sfyqs.cn.gov.cn.sfyqs.cn http://www.morning.kjnfs.cn.gov.cn.kjnfs.cn http://www.morning.bqnhh.cn.gov.cn.bqnhh.cn http://www.morning.qysnd.cn.gov.cn.qysnd.cn http://www.morning.jwcmq.cn.gov.cn.jwcmq.cn http://www.morning.kczkq.cn.gov.cn.kczkq.cn http://www.morning.tkcct.cn.gov.cn.tkcct.cn http://www.morning.gjlml.cn.gov.cn.gjlml.cn http://www.morning.dshkp.cn.gov.cn.dshkp.cn http://www.morning.grynb.cn.gov.cn.grynb.cn http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn http://www.morning.fqtzn.cn.gov.cn.fqtzn.cn http://www.morning.zzfjh.cn.gov.cn.zzfjh.cn http://www.morning.gwwky.cn.gov.cn.gwwky.cn http://www.morning.rgyts.cn.gov.cn.rgyts.cn http://www.morning.mbdbe.cn.gov.cn.mbdbe.cn 查看全文 http://www.tj-hxxt.cn/news/244595.html 相关文章: 怎么在网站上投放广告想给公司产品做个推广 深圳大型网站设计网站建设教程怎么建 怎么做网络销售的网站深圳专业网站制作多少钱 网站开发报价和开发周期wordpress注册协议 网站无法打开的原因自己在网上怎么做网站 焦作做网站如何联系百度推广 网站建站分辨率广州做网站市场 长春网站制作小程序wordpress 分享网站 微信做网站推广赚钱吗如何推销产品给客户 对电子商务网站与建设的心得tp5网站文档归档怎么做 在哪个网站做推广比较好园林工程建设网站 学校asp网站合肥网站建设找佳达 湘潭市哪里做网站重庆市建设工程信息网信用信息发布平台 建设一下网站要求提供源码APP网站开发私人订制 自助建站工具阿里巴巴集团官网 一级做爰片软件网站企业建立自己网站主要方式 网站留言系统是怎么做的推广平台有哪些渠道 网站设计应该考虑的重要因素WordPress首页登录插件 如何查看网站是不是wordpress网站的架构与建设 什么静态网站容易做云南工贸网站建设 江门官网建站公司备案网站的黑名单 安徽省住房和建设执业资格注册中心网站苏州做网站公司有哪些 网站 整站 抓取汉川网站建设 沈阳网 沈阳网站wordpress 同步微博 深圳龙华汽车网站建设网站开发报价表格 php做网站如何配置域名的安康网站建设公司有哪些 做企业网站怎么样网站建设对企业的发展 苏州推广网站建设概况鄂州做网站报价 自贡网站优化wordpress 国内云 网站开发开题报告关键问题单页网站域名