全库数据迁移,咨询个靠谱的解决方案。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaoleis
V2EX    数据库

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

  •  1
     
  •   xiaoleis 2020-04-02 16:00:25 +08:00 3160 次点击
    这是一个创建于 2028 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    1. 均为 Oracle 数据库
    2. B 库表结构的字段精度、唯一约束、主键都可能有改动。 表名一致。
    3. 涉及大约四千张表。
    第 1 条附言    2020-04-02 16:48:59 +08:00
    4. 大约 2000 个 g 的数据。
    5. 表结构变更有什么更好的处理方式呢?
    6. 新的应用版本运行在 B 库上, 需将 A 库的数据迁移到 B 库上, 切换数据源。
    35 条回复    2020-04-18 19:18:49 +08:00
    sunziren
        1
    sunziren  
       2020-04-02 16:14:57 +08:00
    四千张表,我了个乖乖。
    xiaoleis
        2
    xiaoleis  
    OP
       2020-04-02 16:26:08 +08:00
    @sunziren 对,大概 2000 个 g 的数据, 头大。
    xcstream
        3
    xcstream  
       2020-04-02 16:28:15 +08:00
    硬盘镜像
    sun1991
        4
    sun1991  
       2020-04-02 16:29:15 +08:00
    直接拷贝数据库文件, 挂载到新的 instance, 然后再改表结构?
    shakaraka
        5
    shakaraka  
    PRO
       2020-04-02 16:30:38 +08:00
    阿里云 dts
    rrfeng
        6
    rrfeng  
       2020-04-02 16:31:33 +08:00   1
    1. 备份做好
    2. 能停机迁移就停机迁移,不要强行 0 停机时间。
    dexterzzz
        7
    dexterzzz  
       2020-04-02 16:37:01 +08:00 via Android
    stand by 啊
    enrolls
        8
    enrolls  
       2020-04-02 16:38:54 +08:00
    alibaba/DataX 这个看看
    xiaoleis
        9
    xiaoleis  
    OP
       2020-04-02 16:41:25 +08:00
    @rrfeng 每天都有备份。还涉及及表结构的变动。
    xpresslink
        10
    xpresslink  
       2020-04-02 16:43:03 +08:00
    复制库文件,到新服务器挂 instance 最省事儿
    xiaoleis
        11
    xiaoleis  
    OP
       2020-04-02 16:43:39 +08:00
    @wunonglin
    @enrolls 涉及到表结构的变更,有什么更好的处理策略吗?
    chendy
        12
    chendy  
       2020-04-02 16:49:54 +08:00
    既然是 oracle,找 oracle 的人或者找个做 oracle 的公司来迁移?…
    wangyzj
        13
    wangyzj  
       2020-04-02 16:52:45 +08:00
    oracle 到 oracle ?
    xiaoleis
        14
    xiaoleis  
    OP
       2020-04-02 16:53:40 +08:00
    @wangyzj 是,oracle ---> oracle
    wangyzj
        15
    wangyzj  
       2020-04-02 16:59:49 +08:00
    @xiaoleis 用 tsm 或者其他工具恢复一个一模一样的库作为 b
    然后跑 dll 修改脚本
    对 b 做日志追加数据同步
    上线前做最后的 dll 变更和索引重建
    直接切换到 b
    gemini767
        16
    gemini767  
       2020-04-02 17:06:13 +08:00
    选择了 oracle 当然请人迁移啊!
    长痛就是请人维护
    短痛就是去 O,如果强 OLAP 可以选 pg
    psirnull
        17
    psirnull  
       2020-04-02 17:48:38 +08:00
    1 、数据泵导出 初始化
    2 、OGG 同步追平
    3 、申请检修,切换业务数据源
    4 、验证
    5 、停止 OGG
    6 、原数据库停用,下线
    slyang5
        18
    slyang5  
       2020-04-02 17:52:44 +08:00
    迁移的时候 数据库 还要对外服务吗 ???
    koolob
        19
    koolob  
       2020-04-02 18:29:47 +08:00
    感觉买 oracle 的服务应该可以。如果出问题,可以赔偿损失。
    saximoer
        20
    saximoer  
       2020-04-02 21:50:02 +08:00
    停机时间要求多少呢?
    不同停机时间的方案不一样
    zlowly
        21
    zlowly  
       2020-04-02 22:50:21 +08:00
    17 楼是比较稳妥的方案。
    特点是业务系统停机时间比较短,特别是用 OGG 来追平数据,可以较好的适应对你需求里的 B 表结构可能发生变更这个特殊点。
    hantsy
        22
    hantsy  
       2020-04-02 22:55:42 +08:00
    找 Oracle 吧,有 Oracle 数据库,应该有服务可以打折吧。
    yiyi11
        23
    yiyi11  
       2020-04-03 05:22:04 +08:00 via Android
    17 楼方案加一
    公认标准方案。
    我试过几 T 的数据量都是这样迁移,不过只有几十张表,单表高达 21 亿条数据,依然很稳。
    xiaoleis
        24
    xiaoleis  
    OP
       2020-04-03 09:03:58 +08:00
    @slyang5
    @saximoer 计划的停机时间是 一晚上, 晚八点到早八点
    xiaoleis
        25
    xiaoleis  
    OP
       2020-04-03 09:06:53 +08:00
    @zlowly
    @yiyi11 现在统计的结果是有 700 多张表发生了结构变更。如果因为结构变更,数据冲突无法插入,就不好办了。
    xiaoleis
        26
    xiaoleis  
    OP
       2020-04-03 09:08:10 +08:00
    @hantsy 要是有经费。 ^-----^
    boshok
        27
    boshok  
       2020-04-03 09:22:44 +08:00
    @psirnull 可以
    realpg
        28
    realpg  
    PRO
       2020-04-03 11:15:19 +08:00
    都选 oracle 了还能没有经费……
    realpg
        29
    realpg  
    PRO
       2020-04-03 11:16:55 +08:00
    另外,也不是不能没有经费。
    如果没有经费,这个迁移项目最值钱的精髓就是方案设计了……
    方案做万无一失,怎么也值几十 K
    会做的人不可能让你白嫖或者打折
    LightLolo
        30
    LightLolo  
       2020-04-03 12:11:07 +08:00
    可以 dump 分表分块导出
    可以 OGG 同步搞
    可以用 kettle 做数据抽取
    slyang5
        31
    slyang5  
       2020-04-03 17:12:35 +08:00
    @xiaoleis 你不是都 停机导数据了么? 会什么会有结构变更???
    zlowly
        32
    zlowly  
       2020-04-05 03:27:11 +08:00
    @xiaoleis 对于如果因为结构变更,数据冲突无法插入,最坏的结果,也就是 B 库不能用而已,这个时候还没切换,A 库还是正常提供业务的,顶多就是浪费了时间而已,慢慢再梳理调整 B 库数据结构罢了。
    zlowly
        33
    zlowly  
       2020-04-05 03:56:58 +08:00
    大约的流程就是
    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
       2020-04-07 16:04:04 +08:00
    @zlowly 感谢回复。已经在做技术方案, 实际的情况可能比描述的还要复杂。
    065535
        35
    065535  
       2020-04-18 19:18:49 +08:00
    阿里的 DTS,很棒的迁移工具
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     957 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 19:55 PVG 03:55 LAX 12:55 JFK 15:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86