• 关于mydumper的.metadata文件丢失


    今天要进行MySQL的数据迁移,所以把数据库通过mydumper工具备份的文件解压后。通过myloader进行导入


    可是导入的时间出现这个报错:

    ** (myloader:766): CRITICAL **: the specified directory is not a mydumper backup


    很奇怪,明明以往导数据都是通过myloader命令能够导入成功的,如今居然是报错说这个文件夹不是mydumper的备份文件
    查看myloader的源码。例如以下
                    char *p= g_strdup_printf("%s/metadata", directory);
                    if (!g_file_test(p, G_FILE_TEST_EXISTS)) {
                            g_critical("the specified directory is not a mydumper backup
    ");
                            exit(EXIT_FAILURE);
                    }

    推断文件夹下假设 metadata 文件不存在。则异常退出,而我发现备份文件夹下却有一个 .metedata 文件,注意是有.前缀的。在linux系统下表示是隐藏文件

    于是对照了一下mydumper的版本号:
    myloader -V
    myloader 0.6.2, built against MySQL 5.5.21
    

    而原备份文件的机器是 myloader 0.2.3,表示两个版本号不同样,
    所以我第一反应是把旧机器的 /usr/local/bin/文件夹下的 mydumpermyloader 文件直接cp到新机器

    再用myloader的话,能够导入成功。问题解决。


    后面想了一下。再查看旧版本号的 myloader 源代码,发现推断文件是否存在是 .metadata ,即旧版本号导出的隐藏文件。在新版本号中已经不须要隐藏的。
    可能是作者认为不是必需隐藏该文件,并且隐藏文件会有一个隐患是easy cp 不完整。cp默认不拷贝隐藏文件,必须通过 cp -a 才干完整拷贝。



    所以。假设用myloader新版程序导入旧版本号的备份,能够把备份文件夹下的 .metadata文件改名为 metadata。也能够导入成功
    mv .metadata metadata





  • 相关阅读:
    Linux安装配置nginx
    Linux下apache安装php
    Linux安装配置apache
    Linux安装mysql
    安装Linux CentOS与用Xshell实现远程连接
    关于IIS上Yii2的Url路由美化
    安装android Studio和运行react native项目(跳坑篇)
    安装android Studio和运行react native项目(基础篇)
    第10章 同步设备I/O和异步设备I/O(3)_接收I/O请求完成通知的4种方法
    第10章 同步设备I/O和异步设备I/O(2)_同步IO和异步IO基础
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5415861.html
Copyright © 2020-2023  润新知