这个工具也就是读取frm文件生成建表语句
默认的模式是再生个实例,使用--basedir选项或指定--server选项来连接到已经安装的实例。这种过程不会改变原始的.frm文件。该模式也需要指定--port选项来给再生的实例使用,该端口不能与现有的实例冲突。在读取.frm文件后,再生的实例将被关闭,所有的临时文件将被删除的。
诊断模式,需要指定 --diagnostic 选项。byte-by-byte读取.frm文件 尽可能多的恢复信息。该模式有更多的局限性,不能校验字符集;使用默认模式无法读取文件或者该服务器上没有安装MySQL实例就使用诊断模式。
安装
需要先安装mysql-connector-python

wget https://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-2.1.7-1.el6.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/dev.mysql.com/pub/Downloads/MySQLGUITools/mysql-utilities-1.6.5-1.el6.noarch.rpm
wget ftp.pbone.net/mirror/dev.mysql.com/pub/Downloads/MySQLGUITools/mysql-utilities-extra-1.5.6-1.el6.noarch.rpm

使用需要指定.frm文件的路径,也可以指定一个目录,该目录下的所有.frm文件将被读取

 

默认模式
mysqlfrm --server=root:ocm123@localhost --user=root --port=3307 /data/mysql/ht/tb.frm
mysqlfrm --basedir=/usr --port=3307--user=mysql /data/mysql/ht/tb.frm --show-stats

  

[root@redis01 ~]# mysqlfrm --server=root:ocm123@localhost --user=root --port=  /data/mysql/ht/tb.frm
WARNING: Using a password on the command line interface can be insecure.
# Source on localhost: ... connected.
# Spawning server with --user=root.
# Starting the spawned server on port ... done.
# Reading .frm files
#
# Reading the tb.frm file.
#
# CREATE statement for /data/mysql/ht/tb.frm:
# CREATE TABLE `ht`.`tb` (
`id` int() NOT NULL,
`name` varchar() DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 #...done.
[root@redis01 ~]# mysqlfrm --basedir=/usr --port= --user=mysql /data/mysql/ht/tb.frm --show-stats
# Spawning server with --user=mysql.
# Starting the spawned server on port ... ERROR Attempting to stop failed spawned server. Process id = .
ERROR: Spawn server operation failed. Clone server error: Unable to communicate with new instance. Process id = .. To diagnose, run the utility again and use the --verbose option to view the messages from the spawned server and correct any errors presented then run the utility again.
[root@redis01 ~]# mysqlfrm --basedir=/usr --port= --user=root /data/mysql/ht/tb.frm --show-stats
# Spawning server with --user=root.
# Starting the spawned server on port ... done.
# Reading .frm files
#
# Reading the tb.frm file.
#
# CREATE statement for /data/mysql/ht/tb.frm:
# CREATE TABLE `ht`.`tb` (
`id` int() NOT NULL,
`name` varchar() DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 # File Statistics:
# Last Modified : Sat Jun ::
# Creation Time : Sat Jun ::
# Last Accessed : Sat Jun ::
# Mode :
# Size : # Table Statistics:
# Engine : HEAP
# frm Version :
# MySQL Version : 5.7.
# frm File_Version :
# IO_SIZE :
# Def Partition Engine : None #...done.
诊断模式
mysqlfrm --diagnostic /data/mysql/ht/tb.frm --show-stats

  

[root@redis01 ~]# mysqlfrm --diagnostic /data/mysql/ht/tb.frm --show-stats
# 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 /data/mysql/ht/tb.frm:
# The .frm file is a TABLE.
# CREATE TABLE Statement: CREATE TABLE `ht`.`tb` (
`id` int() NOT NULL,
`name` varchar() DEFAULT NULL,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB; # File Statistics:
# Last Modified : Thu Jun ::
# Creation Time : Thu Jun ::
# Last Accessed : Fri Jun ::
# Mode :
# Size : # Table Statistics:
# Engine : INNODB
# frm Version :
# MySQL Version : 5.7.
# frm File_Version :
# IO_SIZE :
# Def Partition Engine : None #...done.

选项
某些引擎表在默认模式下不可读取的。如PARTITION, PERFORMANCE_SCHEMA,必需在诊断模式下可读。
要在创建语句中改变存储引擎,可使用--new-storage-engine 选项。如果有指定该选项,同时必须指定--frmdir选项,该工具生成新的.frm文件,前缀为new_,并保存在--frmdir目录下。
关掉所有信息除了CREATE 语句和警告或错误信息,使用--quiet选项。
使用--show-stats 选项统计每个.frm文件信息。
使用--user 选项指定再生的实例以哪个权限运行。
如果再生的实例超过10秒启动,需调大--start-timeout 选项参数。

mysqlfrm初步使用的更多相关文章

  1. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  2. CSharpGL(29)初步封装Texture和Framebuffer

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...

  3. Android自定义View初步

    经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...

  4. 初步认识Node 之Node为何物

    很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的.具体的概念了.    Node的目标 提供一种简单的构建可伸缩网络程序的方法.那么,什么是可伸缩网络程序呢?可伸缩 ...

  5. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

    [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website develop ...

  6. 基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  7. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

  8. CozyRSS开发记录14-RSS源管理初步完工

    CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添 ...

  9. 初步了解CPU

    了解CPU By JackKing_defier 首先说明一下,本文内容主要是简单说明CPU的大致原理,所需要的前提知识我会提出,但是由于篇幅我不会再详细讲解需要的其他基础知识.默认学过工科基础课. ...

随机推荐

  1. Python复习笔记(七)线程和进程

    1. 多任务 并行:真的多任务 并发:假的多任务 2. 多任务-线程 Python的 Thread模块是比较底层的模块,Python的 Threading模块 是对Thread做了一些包装,可以更加方 ...

  2. Windows Server 2008 R2中无法使用360免费Wifi的解决方案

    为了使主机和虚拟机在同一个无线网络中,而虚拟机的系统是Windows Server 2008 R2 64位的,使用360免费wifi,始终无法开启.在网上查找解决方案,终于找到了原因:Windows ...

  3. parseDouble()方法

    String a = "269"; double parseDouble = Double.parseDouble(b); System.out.println(“Double a ...

  4. 【51nod 1785】数据流中的算法

    Description 51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间.鼠标轨迹等特征计算用户对于网站的满意程度.   现有的统计工具只能统计某一个窗口中,用户的满意程 ...

  5. PySpider 爬虫系统

    PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI.采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器 ...

  6. Python学习之json序列化

    一.什么是序列化 在我们存储数据或者网络传输数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和传输的数据格式.这个过程叫序列化,不同的序列化结果也不同,但目的是一样的,都是为了存储和传输 在 ...

  7. String,StringBuffer,StringBulider

    StringBuffer.StringBuilder.String中都实现了CharSequence接口. CharSequence是一个定义字符串操作的接口,它只包括length().charAt( ...

  8. lua与C/C++交互概要

    转 http://blog.csdn.net/wildfireli/article/details/22307635 Lua生来就是为了和C交互的,因此使用C扩展Lua或者将Lua嵌入到C当中都是非常 ...

  9. Tomcat多应用启动报错:org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [].

    Loaded org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller$RunnableRemove from .M22/lib/tomca ...

  10. Vue 中循环绑定v-module表单

    子组件有一个列表要做输入验证 <template> <div> <el-form :model="value" ref="numberVal ...