V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
xiaoleis
V2EX  ›  数据库

全库数据迁移,咨询个靠谱的解决方案。

  •  1
     
  •   xiaoleis · Apr 2, 2020 · 3482 views
    This topic created in 2230 days ago, the information mentioned may be changed or developed.

    将 A 数据库的数据全部迁移至 B 数据库:

    1. 均为 Oracle 数据库
    2. B 库表结构的字段精度、唯一约束、主键都可能有改动。 表名一致。
    3. 涉及大约四千张表。
    Supplement 1  ·  Apr 2, 2020
    4. 大约 2000 个 g 的数据。
    5. 表结构变更有什么更好的处理方式呢?
    6. 新的应用版本运行在 B 库上, 需将 A 库的数据迁移到 B 库上, 切换数据源。
    35 replies    2020-04-18 19:18:49 +08:00
    sunziren
        1
    sunziren  
       Apr 2, 2020
    四千张表,我了个乖乖。
    xiaoleis
        2
    xiaoleis  
    OP
       Apr 2, 2020
    @sunziren 对,大概 2000 个 g 的数据, 头大。
    xcstream
        3
    xcstream  
       Apr 2, 2020
    硬盘镜像
    sun1991
        4
    sun1991  
       Apr 2, 2020
    直接拷贝数据库文件, 挂载到新的 instance, 然后再改表结构?
    shakaraka
        5
    shakaraka  
    PRO
       Apr 2, 2020
    阿里云 dts
    rrfeng
        6
    rrfeng  
       Apr 2, 2020   ❤️ 1
    1. 备份做好
    2. 能停机迁移就停机迁移,不要强行 0 停机时间。
    dexterzzz
        7
    dexterzzz  
       Apr 2, 2020 via Android
    stand by 啊
    enrolls
        8
    enrolls  
       Apr 2, 2020
    alibaba/DataX 这个看看
    xiaoleis
        9
    xiaoleis  
    OP
       Apr 2, 2020
    @rrfeng 每天都有备份。还涉及及表结构的变动。
    xpresslink
        10
    xpresslink  
       Apr 2, 2020
    复制库文件,到新服务器挂 instance 最省事儿
    xiaoleis
        11
    xiaoleis  
    OP
       Apr 2, 2020
    @wunonglin
    @enrolls 涉及到表结构的变更,有什么更好的处理策略吗?
    chendy
        12
    chendy  
       Apr 2, 2020
    既然是 oracle,找 oracle 的人或者找个做 oracle 的公司来迁移?…
    wangyzj
        13
    wangyzj  
       Apr 2, 2020
    oracle 到 oracle ?
    xiaoleis
        14
    xiaoleis  
    OP
       Apr 2, 2020
    @wangyzj 是,oracle ---> oracle
    wangyzj
        15
    wangyzj  
       Apr 2, 2020
    @xiaoleis 用 tsm 或者其他工具恢复一个一模一样的库作为 b
    然后跑 dll 修改脚本
    对 b 做日志追加数据同步
    上线前做最后的 dll 变更和索引重建
    直接切换到 b
    gemini767
        16
    gemini767  
       Apr 2, 2020
    选择了 oracle 当然请人迁移啊!
    长痛就是请人维护
    短痛就是去 O,如果强 OLAP 可以选 pg
    psirnull
        17
    psirnull  
       Apr 2, 2020
    1 、数据泵导出 初始化
    2 、OGG 同步追平
    3 、申请检修,切换业务数据源
    4 、验证
    5 、停止 OGG
    6 、原数据库停用,下线
    slyang5
        18
    slyang5  
       Apr 2, 2020
    迁移的时候 数据库 还要对外服务吗 ???
    koolob
        19
    koolob  
       Apr 2, 2020
    感觉买 oracle 的服务应该可以。如果出问题,可以赔偿损失。
    saximoer
        20
    saximoer  
       Apr 2, 2020
    停机时间要求多少呢?
    不同停机时间的方案不一样
    zlowly
        21
    zlowly  
       Apr 2, 2020
    17 楼是比较稳妥的方案。
    特点是业务系统停机时间比较短,特别是用 OGG 来追平数据,可以较好的适应对你需求里的 B 表结构可能发生变更这个特殊点。
    hantsy
        22
    hantsy  
       Apr 2, 2020
    找 Oracle 吧,有 Oracle 数据库,应该有服务可以打折吧。
    yiyi11
        23
    yiyi11  
       Apr 3, 2020 via Android
    17 楼方案加一
    公认标准方案。
    我试过几 T 的数据量都是这样迁移,不过只有几十张表,单表高达 21 亿条数据,依然很稳。
    xiaoleis
        24
    xiaoleis  
    OP
       Apr 3, 2020
    @slyang5
    @saximoer 计划的停机时间是 一晚上, 晚八点到早八点
    xiaoleis
        25
    xiaoleis  
    OP
       Apr 3, 2020
    @zlowly
    @yiyi11 现在统计的结果是有 700 多张表发生了结构变更。如果因为结构变更,数据冲突无法插入,就不好办了。
    xiaoleis
        26
    xiaoleis  
    OP
       Apr 3, 2020
    @hantsy 要是有经费。 ^-----^
    boshok
        27
    boshok  
       Apr 3, 2020
    @psirnull 可以
    realpg
        28
    realpg  
    PRO
       Apr 3, 2020
    都选 oracle 了还能没有经费……
    realpg
        29
    realpg  
    PRO
       Apr 3, 2020
    另外,也不是不能没有经费。
    如果没有经费,这个迁移项目最值钱的精髓就是方案设计了……
    方案做万无一失,怎么也值几十 K
    会做的人不可能让你白嫖或者打折
    LightLolo
        30
    LightLolo  
       Apr 3, 2020
    可以 dump 分表分块导出
    可以 OGG 同步搞
    可以用 kettle 做数据抽取
    slyang5
        31
    slyang5  
       Apr 3, 2020
    @xiaoleis 你不是都 停机导数据了么? 会什么会有结构变更???
    zlowly
        32
    zlowly  
       Apr 5, 2020
    @xiaoleis 对于如果因为结构变更,数据冲突无法插入,最坏的结果,也就是 B 库不能用而已,这个时候还没切换,A 库还是正常提供业务的,顶多就是浪费了时间而已,慢慢再梳理调整 B 库数据结构罢了。
    zlowly
        33
    zlowly  
       Apr 5, 2020
    大约的流程就是
    0 、准备好 B 库以及变更数据结构脚本,A 、B 库上安装 OGG 并做好相关配置
    1 、A 上启动 OGG 抽取投递进程
    2 、A 库上导出数据,传输到 B 库导入
    3 、B 库上运行变更数据结构脚本
    4 、B 库上启动 OGG 应用进程
    5 、停止业务应用,等待 A 、B 库上 OGG 完成所有抽取投递应用
    6 、更改业务数据源到 B 库
    7 、启动业务应用
    可以看到这种方案只在最后三步才需要停顿业务,前面实施时间完全可以很充裕(特别是 2T 数据量的导入导出一个周末,稍微不顺利还真不一定搞得定),所以真正对业务影响比较短。这些过程,应该先进行演练,最后三步用业务测试环境来进行最后验证。如果 AB 数据结构变化过大,单靠 OGG 也不一定能适应,就还需要其它方案来弥补。
    xiaoleis
        34
    xiaoleis  
    OP
       Apr 7, 2020
    @zlowly 感谢回复。已经在做技术方案, 实际的情况可能比描述的还要复杂。
    065535
        35
    065535  
       Apr 18, 2020
    阿里的 DTS,很棒的迁移工具
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1696 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 222ms · UTC 16:28 · PVG 00:28 · LAX 09:28 · JFK 12:28
    ♥ Do have faith in what you're doing.