【1】下载安装
【1.1】下载
linux:wget https://downloads.mysql.com/archives/get/p/30/file/mysql-utilities-1.6.5.tar.gz
【1.2】二进制编辑安装
#前置条件,python2.6及以上
tar -xvzf mysql-utilities-1.6.5.tar.gz
cd mysql-utilities-1.6.5python ./setup.py build
python ./setup.py install
【1.3】检查是否安装好
mysqlfrm --version
【2】参数介绍与使用
【2.1】参数介绍
--basedir :如 --basedir=/usr/local/percona-5.6.21
--server : 如 --server=user:password@192.168.1.100:3306
--diagnostic : 开启按字节模式来恢复frm结构--user :启动MySQL用户,通过为mysql
【2.2】使用 --basedir 模式
(1)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 forthe 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 forthe columns and the resulting statement may not be syntactically correct.
# Reading .frmfile for /root/t1.frm:
# The .frmfileis 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;
【2.3】使用--server方式恢复
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 forthe default mode.
# Source on192.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 forthe columns and the resulting statement may not be syntactically correct.
# Reading .frmfile for /root/t1.frm:
# The .frmfileis 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.