推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
python30
V2EX  ›  Python

mysql5.6 数据 utf8mb4 转到 mysql5.7 版本 的,总是掉一小部数据 用 mysqldump 备份恢复的,有什么办法能丢失的数据尽量少些?

  •  
  •   python30 · Mar 18, 2020 · 3542 views
    This topic created in 2386 days ago, the information mentioned may be changed or developed.
    mysql5.6 数据 utf8mb4 转到 mysql5.7 版本 的,总是掉一小部数据 用 mysqldump 备份恢复的,有什么办法能丢失的数据尽量少些?

    数据大约 2 万条 150M

    mysqldump -u root -p xxx > xxx.sql

    mysql -u root -p xxxx < xxxx.sql

    有什么办法能丢失的数据尽量少些?
    14 replies  •  2020-03-19 14:06:47 +08:00
    gz911122
        1
    gz911122  
       Mar 18, 2020
    试试 datax 阿里的
    EarthChild
        2
    EarthChild  
       Mar 18, 2020   ❤️ 2
    MySQL 数据库同步神器 - Gravity
    原始地址: https://github.com/moiot/gravity

    同步地址: https://gitee.com/yunwisdoms/gravity
    或许比 Datax 好用。
    我对阿里系的不感兴趣。。。如相比 fastjson 我更倾向 jackson
    xsm1890
        3
    xsm1890  
       Mar 18, 2020
    为了你这个问题我还测试了下从 5.6 到 5.7 使用 utf8mb4,结果是不存在数据丢失的问题。按理来说,mysql 不会有这么低级的 bug 存在。是不是你表一直在进行业务操作,没有在 mysqldump 的时候保证数据版本的一致性啊
    xyjincan
        4
    xyjincan  
       Mar 18, 2020
    备份文件再恢复到 5.6 有数据丢失吗?
    FFLY
        5
    FFLY  
       Mar 18, 2020
    mysqldump 都不锁表?
    CallMeReznov
        6
    CallMeReznov  
       Mar 18, 2020
    @EarthChild #2 这个实时性如何?
    在实时性不强(更新较少的场景)能当简易的"从库"使用吗?
    Reficul
        7
    Reficul  
       Mar 18, 2020
    mysqldump 为啥会少数据。。。
    akira
        8
    akira  
       Mar 18, 2020
    mysqldump dump 下来的是文本文件,这个文本文件在导入的时候 ,不排除有部分 sql 语句识别有问题。 找到有问题的数据,针对性处理一下
    python30
        9
    python30  
    OP
       Mar 18, 2020
    谢谢大家。

    centos7.5 mysql5.6 utf8mb4 备份到 win7 mysql5.7 utf8mb4 试了几次,具体错误忘了。大概是字符集相关的错

    至于为什么丢数据。也没有深入

    最终还是用 mysqldump --skip-extended-insert -u root -p 没解决丢数据
    但是 100 多 M 就少了两条。还算能接受
    hefish
        10
    hefish  
       Mar 18, 2020
    这要看是 mysql 的哪个版本,mariadb,percona server 还是 oracle mysql。
    不同版本,表现还真不同。
    个人是规规矩矩用 oracle mysql。percona 也行。mariadb 就。。。出过几次问题。自己 dump 出来的,居然导不进。导到一半报错。
    python30
        11
    python30  
    OP
       Mar 18, 2020
    @xyjincan 再恢复到 5.6 正常。一条不丢。
    python30
        12
    python30  
    OP
       Mar 18, 2020
    @hefish 确实。以前没注意这方面的事。
    ps1aniuge
        13
    ps1aniuge  
       Mar 19, 2020
    dump 出来,再恢复,恢复不了。那谁还敢用啊! 1 字节,1bit 都不应该错!

    跟数据库版本应该无关,应该跟配置有关。你需要做的是,先同步数据库设定,配置。
    然后,你应该这样测试:另找一台 mysql5.6 导入,看是否报错。不出错的话,配置不变,软件升级。
    python30
        14
    python30  
    OP
       Mar 19, 2020
    @ps1aniuge
    不重要的数据。没必要太较真了
    要是重要数据就按你这步聚操作了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   861 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 21:19 · PVG 05:19 · LAX 14:19 · JFK 17:19
    ♥ Do have faith in what you're doing.