• 使用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模式时,无法进行字符编码校验所致引起的。

  • 相关阅读:
    初级模拟玩骰子猜大小游戏
    会员号的百位数字等于产生的随机数即为幸运会员
    课外作业1:将一个double类型的小数,按照四舍五入保留两位小数
    git idea tag push
    java进程资源监控
    websocket
    kafka win10搭建 单机版
    kafka细节知识---mark
    Springboot 1.5.7整合Kafka-client
    redis安装 centos
  • 原文地址:https://www.cnblogs.com/kcxg/p/11111042.html
Copyright © 2020-2023  润新知