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

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

  •  1
     
  •   wuwukai007 2020-12-27 13:31:20 +08:00 5507 次点击
    这是一个创建于 1751 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 多台服务器上有相同的库,相同的表结构
      用的都是自增 ID,现在要 合并到一个 mysql 中, 会出现 ID 冲突,有没有成熟的工具可以做这个?
    第 1 条附言    2020-12-27 21:30:14 +08:00

    感谢各位回复

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

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

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

    不过你这需求真奇葩。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5522 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 07:50 PVG 15:50 LAX 00:50 JFK 03:50
    Do have faith in what you're doing.
    ubao 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