• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用mysqlfrm回复frm表结构_mysql

mysql 搞代码 7年前 (2018-06-09) 164次浏览 已收录 0个评论

使用mysqlfrm恢复frm表结构

1、mysqlfrm安装

—————————–

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

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:[email protected]: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:[email protected]: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模式时,无法进行字符编码校验所致引起的。

再次看了下–server的文件:(重点看标红加粗的文字),建议:能用–server模式时,尽量使用–server同时保证提供mysqld环境与原生产环境的一致。

–server=server
Connection information for a server. Use this option or –basedir for the default mode. If provided with the diagnostic mode, the storage engine and character set information are validated against this server.

4、参考资料:

mysqlfrm官方文档 
https://dev.mysql.com/doc/mysql-utilities/1.5/en/mysqlfrm.html

欢迎大家阅读《使用mysqlfrm回复frm表结构_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用mysqlfrm回复frm表结构_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址