• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tellmeworld
V2EX  ›  程序员

30G 的数据库如何高效搬运到服务器?

  •  
  •   tellmeworld · Oct 12, 2022 · 5741 views
    This topic created in 1487 days ago, the information mentioned may be changed or developed.

    30G 的 mysql 数据表,大概 4000 万条数据,本地用 elasticsearch 做的全文搜索,要搬运到服务器,

    是直接把 mysql 数据库传到服务器上,然后服务器搭建 elasticsearch 慢慢建立索引比较好,

    还是本地直接全部 es 索引,然后把 mysql 和 es 索引数据直接搬到服务器? mysql 数据表还可以打包上传,es 索引数据也可以打包上传直接使用吗?

    31 replies  •  2022-10-13 23:46:23 +08:00
    Maxwe11
    Maxwe11
    Oct 12, 2022
    1
    mysql 和 es 我都很少用,但是这类使用习惯都是先分析,想清楚历史数据和增量数据以及使用的特征,先在服务器建好库分区分表索引,把数据直接扔上去再根据新结构插进去,这样逻辑清楚,兼顾未来使用,就几千万条数据而已,很快。
    yemoluo
    yemoluo
    Oct 13, 2022
    2
    30G dump 很快的,然后再压缩一下,估计没多少
    tellmeworld
    tellmeworld
    OP
    Oct 13, 2022
    3
    @GTim 都是文本,压缩完都还有 25G
    tellmeworld
    tellmeworld
    OP
    Oct 13, 2022
    4
    @Maxwe11 意思就是先上传数据,然后在服务器建立 es 索引?
    xsir2020
    xsir2020
    Oct 13, 2022
    5
    都是文本,不是压缩完更小吗?
    tellmeworld
    tellmeworld
    OP
    Oct 13, 2022
    6
    @xsir2020 都是实打实的文本,没有多少压缩空间的
    xsir2020
    xsir2020
    Oct 13, 2022
    7
    实打实的文本是啥意思?感觉我们聊的不在一个时空。
    yggd
    yggd
    Oct 13, 2022
    8
    @tellmeworld 纯文本压缩空间非常大啊
    zddwj
    zddwj
    Oct 13, 2022 via Android
    9
    可以跟本地数据库组个主从同步
    tellmeworld
    tellmeworld
    OP
    Oct 13, 2022
    10
    @xsir2020
    @yggd 纯文本压缩空间是很大,我是说压缩出来文件还是很大
    cco
    cco
    Oct 13, 2022
    11
    ES 可以打个快照,然后再恢复,mysql 就 dump 一个文件上传吧。30G 上传也没多久吧。撑死半小时吧。
    skys215
    skys215
    Oct 13, 2022
    12
    压缩,分块,多线程上传,合并,解压,导入
    wxdiy
    wxdiy
    Oct 13, 2022❤️2
    13
    你问这个问题的时间,估计就能够处理完了。do it
    xuanbg
    xuanbg
    Oct 13, 2022❤️1
    14
    你有这个问的功夫,直接上传也早传完了。才 30G ,没必要用什么奇技淫巧。
    king888
    king888
    Oct 13, 2022
    15
    才 30G ,直接传就完事,等待时间就当在摸鱼吧
    iPc666
    iPc666
    Oct 13, 2022❤️1
    16
    正确方法:压缩 mysql 上传到百度网盘,配合直链下载助手,生成直链使用 curl 链接下载到服务器上,比自己上传到服务器上快多了。
    user100saysth
    user100saysth
    Oct 13, 2022
    17
    @iPc666 厉害了
    godall
    godall
    Oct 13, 2022
    18
    @iPc666 需要百度超级会员,否则 10k 的速度,直接撞墙。
    RedisMasterNode
    RedisMasterNode
    Oct 13, 2022
    20
    这些数据都是不变的咩,其实既然是 mysql 就应该用 binlog 将变更数据发送到消息队列,再由消费者消费写入 ES ,做准实时的同步;

    存量的数据可以用 SELECT 的方式下发给消费者一并处理,也可以直接 SELECT 然后程序写入 ES 。至于要跑多少时间如果两个机器都在同一个网络内的话应该速度会挺快的,还是不要考虑跨网络的方案了叭
    fisherwei
    fisherwei
    Oct 13, 2022
    21
    30G 压缩完还是 25G ,你压缩的是 mysql 的 data 文件夹,还是 dump 文件?

    建议的做法是 dump 出来,然后压缩 dump 文件,传到数据库,重建数据库。
    建议用 xz 压缩。

    如果你有强力 CPU ,可以试试 -9e 级别的压缩,我曾经压缩 300G 的 mysql dump 文件,在一个 4 路 20 核 40 线程(共 160 线程)的机器上压了 8 个多小时才完成,160 核全跑满了,压缩完大概 20 多 g 。
    CaptainD
    CaptainD
    Oct 13, 2022
    22
    条条大路通罗马呀

    如果服务器外网带宽多,直接用 es dump 工具,把你本地的 es 同步到 server
    如果是小水管,那就麻烦点,可以把 es 的数据目录打包上传,再服务器配好环境放到指定目录下(用 docker 也可以,目录映射)


    我估计两种方法差不太多
    echo1937
    echo1937
    Oct 13, 2022
    23
    用 DB 备份工具,选择压缩备份,上传到公有云的对象存储(支持断续),然后服务器去下载。
    aru
    aru
    Oct 13, 2022
    24
    mysqldump 出来 再用 zstd 压缩,应该最终文件 3G 左右,随便怎么传
    aru
    aru
    Oct 13, 2022
    25
    除非你的数据是二进制 blob ,纯文件压缩效率很高的
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    Oct 13, 2022 via iPhone
    26
    mysql dump 出来重新加载一遍完事
    bthulu
    bthulu
    Oct 13, 2022
    27
    不能装 U 盘里, 插到机房电脑上么
    Maxwe11
    Maxwe11
    Oct 13, 2022
    28
    @tellmeworld 这个是我的习惯,因为我不是系统应用研发,我们是搞数据研发的,所以基础的业务数据行为数据等一些结构设计等,都不太符合我们做数据的要求,为了更满足我们处理的要求,一般都会有很多调整,处理好基本结构后再把数据插回去。
    iPc666
    iPc666
    Oct 13, 2022
    29
    @godall 换成阿里 /天翼 /迅雷 /夸克也可以,都支持
    zddwj
    zddwj
    Oct 13, 2022 via Android
    30
    传输大文件的话直接 rsync 命令,自带压缩跟断点续传,一步到位
    cnrting
    cnrting
    Oct 13, 2022 via iPhone
    31
    3T 再来考虑这个问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1184 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 00:32 · PVG 08:32 · LAX 16:32 · JFK 19:32
    ♥ Do have faith in what you're doing.