zoukankan      html  css  js  c++  java
  • 使用mysqlfrm恢复frm表结构的方法

    1、mysqlfrm安装

    由于mysqlfrm是mysql-utilities工具一部分,那么我们安装mysql-utilities即可,下载好对应的源码包,进行编译安装

    shell> wget https://cdn.mysql.com/archives/mysql-utilities/mysql-utilities-1.6.5.tar.gz

    shell> tar -xvzf mysql-utilities-1.6.4.tar.gz shell> cd mysql-utilities-1.6.4 shell> python ./setup.py build shell> python ./setup.py install

    安装完成后,在相应的python执行目录下,就能mysqlfrm等执行文件了。

    2、mysqlfrm相关参数介绍

    --basedir :如 --basedir=/usr/local/percona-5.6.21
    
    --server : 如 --server=user:password@192.168.1.100:3306
    
    --diagnostic : 开启按字节模式来恢复frm结构
    
    --user :启动MySQL用户,通过为mysql

    3、mysqlfrm使用

    使用--basedir模式恢复:

    [ 16:35:29-root@br3cy1sw:~ ]# mysqlfrm --basedir=/usr/local/percona-5.6.21/ /root/t1.frm --port=3434 --user=mysql --diagnostic
    
    # WARNING The --port option is not used in the --diagnostic mode.
    
    # WARNING: The --user option is only used for the default mode.
    
    # WARNING: Cannot generate character set or collation names without the --server option.
    
    # CAUTION: The diagnostic mode is a best-effort parse of the .frm file. As such, it may not identify all of the components of the table correctly. This is especially true for damaged files. It will also not read the default values for the columns and the resulting statement may not be syntactically correct.
    
    # Reading .frm file for /root/t1.frm:
    
    # The .frm file is a TABLE.
    
    # CREATE TABLE Statement:
    
    CREATE TABLE `root`.`t1` (
    
    `a` int(11) NOT NULL,
    
    `b` int(11) DEFAULT NULL,
    
    `c` int(11) DEFAULT NULL,
    
    `d` varchar(600) DEFAULT NULL,
    
    PRIMARY KEY `PRIMARY` (`a`),
    
    KEY `idx_t1_bc` (`b`,`c`)
    
    ) ENGINE=InnoDB;
    
        #...done.

    使用--server方式恢复:

    [ 16:35:10-root@br3cy1sw:~ ]#mysqlfrm --server=user:password@192.168.1.100:3306 /root/t1.frm --port=3434 --user=mysql --diagnostic
    
    WARNING: Using a password on the command line interface can be insecure.
    
    # WARNING The --port option is not used in the --diagnostic mode.
    
    # WARNING: The --user option is only used for the default mode.
    
    # Source on 192.168.1.100: ... connected.
    
    # CAUTION: The diagnostic mode is a best-effort parse of the .frm file. As such, it may not identify all of the components of the table correctly. This is especially true for damaged files. It will also not read the default values for the columns and the resulting statement may not be syntactically correct.
    
    # Reading .frm file for /root/t1.frm:
    
    # The .frm file is a TABLE.
    
    # CREATE TABLE Statement:
    
    CREATE TABLE `root`.`t1` ( `a` int(11) NOT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL,
    
    `d` varchar(200) COLLATE `utf8_general_ci` DEFAULT NULL,
    
    PRIMARY KEY `PRIMARY` (`a`),
    
    KEY `idx_t1_bc` (`b`,`c`)
    
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
        #...done.

    注意到没有,使用--basedir恢复出来的varchar竟然是--server模式的3倍;这应该是mysqlfrm在使用basedir模式时,无法进行字符编码校验所致引起的。

  • 相关阅读:
    【原创】简单快速软件开发平台,C/S架构二次开发平台
    【原创】进销存快速开发框架 (Winform三层架构+DevExpress+MsSQL)
    MES软件开发工具
    Winform C/S架构TMS物流运输管理系统司机车辆GPS+手机APP定位参考设计
    C#权限管理框架介绍|C/S系统快速开发框架权限系统设计
    C# Winform程序调用WebApi接口实现增删改查(CRUD)实例源码教程
    ASP.NETWebApi实例教程:如何部署和发布WebApi到IIS服务器详解
    Web后端开发框架|WebApi后端主流开发框架介绍
    Asp.Net开源服务端框架,WebApi后端框架(C#.NET)
    Winform布局开源框架,Winform控件框架,插件化框架
  • 原文地址:https://www.cnblogs.com/kcxg/p/11111042.html
Copyright © 2011-2022 走看看