V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2020-03-18 10:15:42 +08:00 · 2690 次点击
    这是一个创建于 1706 天前的主题,其中的信息可能已经有所发展或是发生改变。
    mysql5.6 数据 utf8mb4 转到 mysql5.7 版本 的,总是掉一小部数据 用 mysqldump 备份恢复的,有什么办法能丢失的数据尽量少些?

    数据大约 2 万条 150M

    mysqldump -u root -p xxx > xxx.sql

    mysql -u root -p xxxx < xxxx.sql

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

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

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

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

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

    跟数据库版本应该无关,应该跟配置有关。你需要做的是,先同步数据库设定,配置。
    然后,你应该这样测试:另找一台 mysql5.6 导入,看是否报错。不出错的话,配置不变,软件升级。
    python30
        14
    python30  
    OP
       2020-03-19 14:06:47 +08:00
    @ps1aniuge
    不重要的数据。没必要太较真了
    要是重要数据就按你这步聚操作了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6192 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 02:54 · PVG 10:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.