zoukankan      html  css  js  c++  java
  • 如何设计才可以让系统从未分库分表动态切换到分库分表上

    停机迁移方案

      网站或者app挂个公告,说0点到早上6点进行运维,无法访问

      接着到0点,停机,没有流量写入了,此时老的单库单表数据库静止了。然后你之前得写好一个导数的一次性工具,此时直接跑起来,然后将单库单表的数据读出来,写到分库分表里面去。

      导数完了之后,就ok了,修改系统的数据库连接配置啥的,包括可能代码和SQL也许有修改,那你就用最新的代码,然后直接启动连到新的分库分表上去。

     

    双写迁移方案

      简单来说,就是在线上系统里面,之前所有写库的地方,增删改操作,都除了对老库增删改,都加上对新库的增删改,这就是所谓双写,同时写俩库,老库和新库。

      然后系统部署之后,新库数据差太远,用之前说的导数工具,跑起来读老库数据写新库,写的时候要根据gmt_modified这类字段判断这条数据最后修改的时间,除非是读出来的数据在新库里没有,或者是比新库的数据新才会写。

      接着导完一轮之后,有可能数据还是存在不一致,那么就程序自动做一轮校验,比对新老库每个表的每条数据,接着如果有不一样的,就针对那些不一样的,从老库读数据再次写。反复循环,直到两个库每个表的数据都完全一致为止。

      接着当数据完全一致了,就ok了,基于仅仅使用分库分表的最新代码,重新部署一次,不就仅仅基于分库分表在操作了么,还没有几个小时的停机时间。

    转自:中华石杉Java工程师面试突击

  • 相关阅读:
    STM32 之 USB IP(USB模块) 详解(转)
    USB 协议分析之 HID 设备(转)
    Hibernate项目用Maven创建(转)
    eclipse查看hadoop中文件出现乱码
    用spring+hibernate+struts 项目记录以及常用的用法进等
    hibernate之处理视图
    Hadoop组件之-HDFS(HA实现细节)
    hadoop2.x NameNode 的共享存储实现
    Hadoop-2.X HA模式下的FSImage和EditsLog合并过程
    jQuery中读取json文件示例代码
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/10114824.html
Copyright © 2011-2022 走看看