工程已上线,之前是分库分表的mysql,因为升级改造,需要把这些放在一个库一个表里,请问有啥好办法吗??

解决方案 »

  1.   

    你的分库分表,是在同一个mysql上,还是说你的服务器上启动了多个mysql实例。如果是单个实例,上面分库分表,直接建个库,然后建个新的表,把其他几个库的数据插入到这个新库的新表中。引用的时候直接:insert into 库名.表名(所有列)
    select * from 分库.表名
      

  2.   

    如果不在同一个msyql上,可以用mysql的federated引擎,跨mysql查数据
      

  3.   

    兄弟你们说的招太low了,因为他现在那个分库分表那个是正在运行的程序的(是在一个mysql上),如果只是简单的查询插入,那你怎么保证插入数据这期间没有新用户注册,或者没有增删改?(工程不能停,目前有个你们说的这种查询插入的程序,不让用)说最好用binlog,但是还是不太懂迁移这东西,而且两个库的结构也不一样,一个是分库分表的,我们的是单个库单个表的。
      

  4.   

    方法low不low取决于你的具体问题。你在问题中没有说工程不能停的问题,那么直接搜索插入是最简单有效的方法。“分库分表的mysql,因为升级改造,需要把这些放在一个库一个表里”
    是以前向分库分表中插入,以后就想一个库一个表中插入的意思吗?
      

  5.   

    你结结的问题点上在哪里?
    是分库分表 到 音库表的合并操作如何实现?
    还是操作过程中要避免对正在运行的程序的影响?
    还是迁移后的程序要如何在线改到新的单库音表?比如你自己提的 binlog, 如果是合并,并且能够保证数据不冲突,你可以建一个新的 mysql 实例,用 replication 把多个表表工程不停,切换的时候始终是需要停的
    新的和旧的结构都不一样了,程序还得改,这不是单迁移数据库能够搞定的
      

  6.   

    如果表结构无差异,数据不冲突,你可以把新表放在新的 mysql 实例,通过 repliication 做合并(通过 CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB= 将多库对应到一个库)
      

  7.   

    结构不一样,写程序或写脚本是必然的,效果取决 于写的东东有没有考虑所有可能的情况
    binlog 本身无法解决这种问题,只是提供了一种可以增量读取数据变化的方式,但你的目标结构和源是不一样的,所以就算你从这里读取,也要将读出的东西转换为目标所需要的数据,这个过程得写程序,也不那么轻松