开发者社区> 问答> 正文

怎么把mysql和mongodb数据同步

想用mongodb查询,mysql查询慢,有没有办法 把mysql的数据同步到mongodb上面

展开
收起
蛮大人123 2016-02-14 13:48:02 5645 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    由于mongodb目前只提供bson格式(也支持json)啦,而本人的老大又有些对nosql
    惶恐(算是基于对纯内存的稳固性的不信任吧)。故而迫切需求将基于mongodb的数据做一个mysql的备份。google了一圈也没找着类似需求(是不是这个需求太过于BT了?)。
    既然mongodb无法对sql直接支持,目前的做法只能是遍历取出数据了(幸而这也不慢)。主要卡在数据如何塞入mysql,不是dba,一时半会还真只想到边取边插入的办法,于是乎,mysql不干了。
    于是乎,发现了(终于)强大的mysqlimport.
    最终组织的数据文本是这个样子:

    "","1","1","0","0","","1","0","url","264442626","0","0","0","0","1","20101218","6","0","0"
    "","1","1","0","0","","1","0","url","264442626","0","0","0","0","1","20101218","6","0","1"

    `
    mysqlimport -h xxx.xxx.xxx -u root -pxxxxxx -L --fields-terminated-by=, --fields-enclosed-by=" test ./201012_link.txt
    `
    解释:
    数据文本就是以行为单位,以逗号为分隔符,以双引号包夹为完整字段内容,按照mysql表的字段顺序排列。
    mysqlimport是mysql自带的工具,具体参数内容可以help。

    这里关键要注意到是数据文本的第一列,这里是置的空字符串。如果空字符串对应的列有自增长或者默认值之类的,数据库内容会自动替换成对应的自增长数字等。

    到这里,我的备忘算是结束了。不过真正的大杀器连尖尖角都还没有露出来。

    --据说,mongodb slave同步是用的xml。
    --据说,这个xml是可以获取到的。
    --据说,sphinx这个强大的分词工具是支持xml的。
    --据说,bson是可以压缩存放的。

    2019-07-17 18:42:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载

相关镜像