V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
irisdev
V2EX  ›  程序员

mysql 怎么迁移数据库到另一台机器

  •  1
     
  •   irisdev · 148 天前 · 3499 次点击
    这是一个创建于 148 天前的主题,其中的信息可能已经有所发展或是发生改变。

    换电脑了,想把之前电脑 mysql 的表和数据都迁移到新电脑(都是 windows),看网上的方案都挺麻烦,请教一下大家有没有什么比较简单的迁移方法,因为表不是很多,如果很复杂的话可以直接重建表了

    48 条回复    2022-05-10 21:22:33 +08:00
    liprais
        1
    liprais  
       148 天前 via iPhone   ❤️ 2
    Mysqldump 呗
    eason1874
        2
    eason1874  
       148 天前   ❤️ 3
    shell 运行

    mysqldump -u root --all-databases > /home/databases.sql

    压缩,迁移到新电脑,解压缩,然后登录 mysql

    mysqldump -u root

    source /home/databases.sql
    irisdev
        3
    irisdev  
    OP
       148 天前
    ok 的,谢谢上面两个老哥,备份完了
    vibbow
        4
    vibbow  
       148 天前   ❤️ 1
    直接复制粘贴 mysql 数据目录就行呀
    irisdev
        5
    irisdev  
    OP
       148 天前
    @vibbow 我下次试试,楼上老哥说的用 mysqldump 还蛮方便的,不解压直接把 sql 运行一遍也行
    yazoox
        6
    yazoox  
       148 天前
    @irisdev 兄弟,能把完整流程过程中,运行的命令,详细写一份出来么?学习一下。
    谢谢
    chengyiqun
        7
    chengyiqun  
       148 天前
    @irisdev
    @yazoox
    学习学习
    mu666
        8
    mu666  
       148 天前
    亲测,直接复制数据目录就行
    CheckMySoul
        9
    CheckMySoul  
       148 天前
    1. 备份恢复:mysqldump 导出成 sql 文件导入到新数据库,或者通过 xtrabackup 备份再恢复(推荐)
    2. 关旧的数据库,数据库文件和配置文件复制到新电脑再启动
    crazytudou
        10
    crazytudou  
       148 天前
    直接把目录复制进去,然后添加到服务,启动,完事
    cloverzrg2
        11
    cloverzrg2  
       148 天前
    用 docker ,才不管你的是什么东西,直接打包过去就行了 😆
    mobbdeep
        12
    mobbdeep  
       148 天前
    @eason1874 问下倒数第二句的 mysqldump 是干啥,把新电脑上数据库备份吗
    irisdev
        13
    irisdev  
    OP
       148 天前
    就是 2l 老哥说的(不过在 windows 上稍微有点不一样)
    进入 mysql 安装 bin 目录下,运行
    mysqlddump -u root -p -all-databases > /f/beifen.sql
    然后就可以在 f 盘下看到 beifen.sql 了
    之后我也没在新电脑还原了,直接打开新电脑的 mysql ,把 beifen.sql 运行一遍就好了(这里可以用图形化工具,我用的 sqllog)
    @chengyiqun
    irisdev
        14
    irisdev  
    OP
       148 天前
    @yazoox 如上
    chengyiqun
        15
    chengyiqun  
       148 天前
    @irisdev emmmm 我自己用的 mysql 是精简版, 没有 mysqldump ...
    其实 navicat 这种, 用导出导入 csv 也挺不错的.
    csv txt 不用担心爆内存, 导出其他的可能会爆内存.
    irisdev
        16
    irisdev  
    OP
       148 天前
    @chengyiqun 学到了
    julyclyde
        17
    julyclyde  
       148 天前
    @cloverzrg2 建议还是加强学习
    julyclyde
        18
    julyclyde  
       148 天前
    @chengyiqun 为什么 csv 不会爆内存?
    chengyiqun
        19
    chengyiqun  
       148 天前
    @julyclyde csv 和 txt 都是纯文本文件. 一条记录写一行.
    我猜, 可能是用的流式查询, 然后写文件直接通过有缓冲的 writer, 直接在文本后面追加, 这样的话, 数据量再大都不会很耗费内存, 最多就是花时间多.
    julyclyde
        20
    julyclyde  
       148 天前
    @chengyiqun mysqldump 产生的 insert 语句也可以一条记录一行的
    禁用 extended insert 就行了
    chengyiqun
        21
    chengyiqun  
       148 天前
    @julyclyde 学习了
    hefish
        22
    hefish  
       148 天前
    别说是 mysql , 我 oracle 都是直接复制数据库文件的。哈哈。
    julyclyde
        23
    julyclyde  
       148 天前
    @hefish mysql InnoDB 的情况,内存里会有一部分未落盘的 redo log 的
    hefish
        24
    hefish  
       148 天前
    @julyclyde 没事,负载没有那么大。
    eason1874
        25
    eason1874  
       148 天前
    @mobbdeep #12 哈哈,是我打错了,本来是想写登录 mysql -u root
    eason1874
        26
    eason1874  
       148 天前
    @irisdev mysqldump 导出的就是 SQL 语句,source 是执行 sql 文本文件里的全部语句。mysqldump 后直接复制字符串去执行,效果一样的。压缩是为了减小传输体积,不过你量小,压缩反而麻烦了,这个步骤确实多余,可以跳过
    mobbdeep
        27
    mobbdeep  
       148 天前
    @eason1874 理解,新机器没数据库的话应该要先 create database 再 source,不知道是不是我云了
    eason1874
        28
    eason1874  
       148 天前
    @mobbdeep 如果你只导出表格,导入时就得先有数据库。导出 --all-databases 就不用,导出结果会包含 CREATE DATABASE
    stevefan1999
        29
    stevefan1999  
       148 天前 via Android
    🐶弄個集群然後把么遷移的機器加進去 等他同步完畢了把原先的 master down 了再 promote 新加的到 master
    stevefan1999
        30
    stevefan1999  
       148 天前 via Android
    這樣做的好處是在線遷移可以無縫遷移 缺點是複雜
    asmile1993
        31
    asmile1993  
       148 天前
    mysqlddump -u root -p -all-databases > /f/beifen.sql ,这种备份方式获取到的是非一致性备份,不可用的,恢复之后,数据很可能对不上,要加上--master-data=2 和 --single-transaction 这两种方式。

    mysqldump --master-data=2 --single-transaction -A >db_full_backup_`date +%Y%m%d`.sql
    qwerthhusn
        32
    qwerthhusn  
       148 天前
    @chengyiqun mysqldump mysql 这些是客户端,
    encro
        33
    encro  
       148 天前
    navicat ,图形界面,数据库同步。数据量不大的话。
    xuanbg
        34
    xuanbg  
       148 天前
    直接复制文件过去就可以
    smallYear
        35
    smallYear  
       148 天前
    冷备份,直接复制目录就可以
    struggle001
        36
    struggle001  
       148 天前
    @smallYear 冷备份需要拷贝 mysql 目录,还必须版本一直,最初的 innodb 的类型的在 ibdata1 里,如果不拷贝 ibdata1 文件,那就狒狒了,建议还是 mysqldump 出来之后再导入最好。
    bthulu
        37
    bthulu  
       148 天前
    哪用这么麻烦, 直接 navicat 数据传输就行了
    aaa5838769
        38
    aaa5838769  
       148 天前
    Mysqldump 是最简单的
    keepeye
        39
    keepeye  
       148 天前
    冷迁移方式很多,最简单的就是数据库版本一致直接拷贝 data 目录。。热迁移需要借助一些工具了,大概就是搭建一个主从,然后 slave 切换到 master
    bruce0
        40
    bruce0  
       148 天前
    @vibbow 我有一次升级 mysql, 好像是从 5.5 升到 5.7, 先备份的 sql, 然后导不进去,报错. 最后用的复制目录, 直接启动, 原来的数据都在 0.0
    aaniao002
        41
    aaniao002  
       148 天前 via Android
    为什么不试试 var 下的数据库文件直接粘过去?
    qile1
        42
    qile1  
       148 天前 via Android
    @hefish 能不能给说说怎么复制文件,我用数据泵备份,还原一直不成功,说是表空间问题,复制文件该怎么操作
    jolanyu
        43
    jolanyu  
       148 天前
    kettle
    xiangyuecn
        44
    xiangyuecn  
       147 天前
    楼上有人不怕丢数据就用 navicat

    mysqldump 安全可靠
    hefish
        45
    hefish  
       147 天前
    @qile1 我的 oracle 跑在 zfs 的分区上,所以先给 zfs 分区做一个快照,然后把这个快照的内容复制出来就可以了。
    只要注意机器名一样就能把服务出来。
    在负载不重的机器上,zfs 的 snapshot95%以上的概率能成功。
    flynaj
        46
    flynaj  
       147 天前 via Android
    版本相同的话直接复制 data 目录就行
    qile1
        47
    qile1  
       144 天前 via Android
    @hefish 那我安装相同版本的 oracle ,然后服务器名字弄一样,复制文件就可以用是不是?
    hefish
        48
    hefish  
       144 天前
    @qile1 都不用安装,我整个把 /opt/oracle 复制了过去。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2064 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 12:26 · PVG 20:26 · LAX 05:26 · JFK 08:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.