V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
gancl
V2EX  ›  MySQL

新系统 oracle 转 mysql, 切换时怎么平稳过渡而不影响用户使用?

  •  1
     
  •   gancl · 2019-07-04 10:09:13 +08:00 · 5444 次点击
    这是一个创建于 1752 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.新的系统按模块一个个开发出来,不能一下子全部切换,那数据怎么打通:旧的系统还在用 oracle,新的系统某个模块已经在使用了,并且用的是 mysql. 2.如果切换困难,想问下 oracle 做商业软件成本有多高? 我们的系统是打算做成商业软件卖给别人的,私服搭建或放在云上都可以.

    12 条回复    2019-07-05 11:30:44 +08:00
    moodasmood
        1
    moodasmood  
       2019-07-04 13:00:41 +08:00 via Android
    我记得 oracle 按服务器处理器核心数收费吧,一个核心多少万
    linbiaye
        2
    linbiaye  
       2019-07-04 13:13:34 +08:00
    双写,读 mysql,mysql 找不到读 oracle,同时后台把 oracle 数据导入 mysql, 导入完毕丢弃 oracle
    7654
        3
    7654  
       2019-07-04 13:30:18 +08:00
    @moodasmood #1 56 核心,溜了,去问问系管花了多少钱。。
    leonardyang
        4
    leonardyang  
       2019-07-04 14:22:47 +08:00
    旧系统用 Oracle,新服务用 mysql,既然是按模块划分的,模块间数据访问完全从模块接口走就行了,前后端分离情况下前端也只是改访问接口,有啥问题
    peyppicp
        5
    peyppicp  
       2019-07-04 14:41:47 +08:00
    1.双读双写,以老库数据为准,然后更新新库数据。
    2.定时任务定时扫两边的某个表,肯定会扫出两边数据不同的记录,还是以老库为准,更新新库
    3.定时任务爆出的数据不同的条数逐渐减少到 0 为止,再运行一段时间
    4.双写单读,读新库,等定时任务完全无条数且稳定后,单读单写新库,此时数据库切换完成

    建议以上步骤以表维度进行
    hasdream
        6
    hasdream  
       2019-07-04 16:59:08 +08:00
    国内有几个用 oracle 数据库买授权的。
    reus
        7
    reus  
       2019-07-04 22:23:36 +08:00
    建议用 PostgreSQL,和 Oracle 更接近。MySQL 太弱。
    laozhoubuluo
        8
    laozhoubuluo  
       2019-07-04 23:24:45 +08:00
    有接口的肯定最省事,前置一个平台决定某个接口是给到老系统还是新系统。
    如果没有的话,双读双写 MySQL 事务又弱,系统改造弄套中间件处理太重,临时解决方案是上锁( O 库锁行,M 库锁行,O 库执行,M 库执行,O 库解行锁,M 库解行锁),除非是小系统否则并发受不了,而且还需要改造老软件,可行性很小。
    鉴于不是啥系统都是按接口设计的,尤其是老 oracle 系统基本都是操作关联页面,很难做到同时运行。

    另外我还没想明白一个事情,既然是商业软件,而且目标是替代原系统,那绝大多数模块应该是开发完的,完全可以先开发甲方要求的定制模块,完了建立测试系统从 oracle 导出数据做测试,测试好了直接一晚上割接解决。
    gancl
        9
    gancl  
    OP
       2019-07-04 23:44:03 +08:00
    @laozhoubuluo 系统太大了,没办法一晚上全切换,忘一切换失败,现场用户影响了会后果很严重. 也没信心这么多功能全做完了再一起切换.
    看样子只能用回 oracle 了, 听领导的话, 少操这方面的心了.
    laozhoubuluo
        10
    laozhoubuluo  
       2019-07-05 08:07:34 +08:00
    @gancl 如果要是能做到新模块和旧模块不并行运行,也可以考虑首先切换用户中心,完了新用户中心用户数据和老系统间加入接口,完了新模块数据在 MySQL,旧模块数据在 oracle,割接根据模块关系按批次走。
    问题就是还需要改造老软件,特大企业这么搞没问题,商业软件这么搞老系统那边真的不一定能改。
    laozhoubuluo
        11
    laozhoubuluo  
       2019-07-05 08:12:57 +08:00
    @gancl 总之保证多数一个模块同时只有一个生效的(除了用户中心这种特殊模块两段运行),这样压力会小很多。
    hanxiaomeng
        12
    hanxiaomeng  
       2019-07-05 11:30:44 +08:00
    oracle 按 CPU 付费的话一个十几万吧,按 User License(并发连接)一个 License 几千吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2921 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:59 · PVG 10:59 · LAX 19:59 · JFK 22:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.