多台 mysql 中用的 相同表名,自增 ID ,现在要合并到一个库中, ID 冲突如何解决呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
wuwukai007

多台 mysql 中用的 相同表名,自增 ID ,现在要合并到一个库中, ID 冲突如何解决呢?

  •  1
     
  •   wuwukai007 Dec 27, 2020 5918 views
    This topic created in 1949 days ago, the information mentioned may be changed or developed.
    • 多台服务器上有相同的库,相同的表结构
      用的都是自增 ID,现在要 合并到一个 mysql 中, 会出现 ID 冲突,有没有成熟的工具可以做这个?
    Supplement 1    Dec 27, 2020

    感谢各位回复

    • 现在采用 : 新库重新建表 + insert 去掉 id 字段
    • 表有关联的,我已经在新的库重新建表了,insert 把自增id 删了,晚上挂在跑,明天看看有没有问题
    23 replies    2020-12-28 16:44:26 +08:00
    yulitian888
        1
    yulitian888  
       Dec 27, 2020
    上策:另立新 ID,好像并不需要什么特别的工具哦!
    中策:给每个不同的源库加上不同的前缀数字,比如 A 库来的叫做 32000xxxx,B 库来的叫做 98000xxxx,补以适当的补位数即可。好像,也不需要什么特别的工具哦!
    下策:发个问题,坐等别人介绍工具
    roundgis
        2
    roundgis  
       Dec 27, 2020 via Android
    如果有 unique index
    你如何判是不是相同的呢
    encro
        3
    encro  
       Dec 27, 2020
    没有,如果做了表关联的话。
    wuwukai007
        4
    wuwukai007  
    OP
       Dec 27, 2020
    @yulitian888 表太多了,几百张表,数据量也比较大,好几台服务器,自己弄估计费劲!
    buhi
        5
    buhi  
       Dec 27, 2020
    不合并不就完事了, 首先合并是图啥
    wuwukai007
        6
    wuwukai007  
    OP
       Dec 27, 2020
    @roundgis 有一个类似产品 ID 的 字段,和创建时间可以锁定唯一,
    notejava
        7
    notejava  
       Dec 27, 2020
    重新生成分布式 ID,再将相关联表的 ID 离线重新绑定。
    xiaofan2
        8
    xiaofan2  
       Dec 27, 2020   2
    大家都是数据量太大了做拆分 你这反而给他合并起来了 这就是传说中的分久必合?
    wuwukai007
        9
    wuwukai007  
    OP
       Dec 27, 2020
    @xiaofan2 上面要求,硬着头皮干呗。
    loading
        10
    loading  
       Dec 27, 2020 via Android
    前面加一位不就好了
    例如
    100000 数 012345
    200000 字 012345
    yulitian888
        11
    yulitian888  
       Dec 27, 2020
    @wuwukai007 不管多少张表,在不借助其它工具的情况下,操作基本只考虑一种 sql 句式了
    insert into 目标表 select 字段 1,字段 2... from 源表
    然后,加一个变量进去很复杂?
    insert into 目标表 select 前缀+字段 1,字段 2... from 源表
    表再多也不过就是把前缀做成变量而已。用工具不是一样道理吗,将一个如上查询结果集作为导出范围,一模一样啊
    wa8n
        12
    wa8n  
       Dec 27, 2020 via iPhone
    自己写工具,合并表时生成新的 id 同时更新关联 id 。话说之前帮别人写了个工具,工具写完人联系不上了
    opengps
        13
    opengps  
       Dec 27, 2020   1
    你们最初拆分的时候就不合理,应当用不一样的起始种子和步长,现在要合并,就直接按照库做分段吧,比如 A 库占用 1-100000,B 库占用 10001-20000,这样来融合
    alonehat
        14
    alonehat  
       Dec 27, 2020
    是都从 1 开始自增的?有关联关系吗,没有的话直接数据库对拷或者写个批量插入工具不插 ID 继续自增就是了;有关联关系的话那考虑到关联也只能新加几个个字段区分,改成组合外键
    mmdsun
        15
    mmdsun  
       Dec 27, 2020 via Android
    批量 insert 不插入 ID 字段不就可以了么。

    难道说表关联也是用的自增 ID ?
    elintwenty
        16
    elintwenty  
       Dec 27, 2020
    这个问题难道不是先要看有没有关联的情况吗?没有关联就随意处理了
    fox0001
        17
    fox0001  
       Dec 27, 2020 via Android
    建立新库,新增两个字段:
    1 )新建新的主键字段,标记数据唯一。
    2 )新建机器编号字段,标记数据来自哪个机器。

    这样,涉及关联的话,就用旧 ID 与机器编号去关联现有数据
    mingl0280
        18
    mingl0280  
       Dec 27, 2020
    并库不并表,表加前缀。
    we3613040
        19
    we3613040  
       Dec 28, 2020
    连表都合并了?那当初为啥要拆。。。。。
    nano91
        20
    nano91  
       Dec 28, 2020
    @wuwukai007 你有没有考虑过这么大的数据量合并完了以后,你的服务还有可用性吗?
    wangritian
        21
    wangritian  
       Dec 28, 2020
    上面要求?兄弟这种不合理的要求一定要据理力争啊,到时候查询扛不住再分库分表你不是白干了
    wuwukai007
        22
    wuwukai007  
    OP
       Dec 28, 2020
    @nano91 @wangritian 之前是分库+ 分表,发现 分表就可以满足了,现在调整成 把多个库 合并,在分表。
    prodcd
        23
    prodcd  
       Dec 28, 2020
    新建一个表,使用新的自增 id,增加 2 个字段,old_server 、old_id 备用,等啥事都没有了可以考虑删掉

    不过你这需求真奇葩。
    About     Help     Advertise     Blog     API     FAQ     Solana     1167 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 93ms UTC 18:15 PVG 02:15 LAX 11:15 JFK 14:15
    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