Heim  >  Artikel  >  Datenbank  >  So verwenden Sie mysqlfrm, um die FRM-Tabellenstruktur wiederherzustellen

So verwenden Sie mysqlfrm, um die FRM-Tabellenstruktur wiederherzustellen

一个新手
一个新手Original
2017-10-17 10:08:433564Durchsuche

1. mysqlfrm-Installation

----------------------------

Da mysqlfrm Teil des MySQL-Utilities-Tools ist, können wir MySQL-Utilities installieren, das entsprechende Quellcodepaket herunterladen und es kompilieren und installieren.

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

Nach Abschluss der Installation sind mysqlfrm und andere ausführbare Dateien im entsprechenden Python-Ausführungsverzeichnis verfügbar.

2. Einführung in mysqlfrm-bezogene Parameter

------------------------ - -----

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

3. Verwenden Sie mysqlfrm

------------------- - -----

Verwenden Sie den --basedir-Modus zur Wiederherstellung:

[ 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.

Verwenden Sie den --server-Modus zur Wiederherstellung:

[ 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.

Ist Ihnen aufgefallen, dass der mit --basedir wiederhergestellte Varchar-Wert dreimal so hoch ist wie im --server-Modus? Dies sollte daran liegen, dass mysqlfrm bei Verwendung des basedir-Modus keine Überprüfung der Zeichenkodierung durchführen kann. .

Sehen Sie sich die --server-Datei noch einmal an: (Konzentrieren Sie sich auf den roten und fetten Text), Vorschlag: Wenn der --server-Modus verwendet werden kann, versuchen Sie, --server zu verwenden und stellen Sie sicher, dass die mysqld Es wird eine Umgebung bereitgestellt, die mit der ursprünglichen Produktionsumgebung übereinstimmt.

--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.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie mysqlfrm, um die FRM-Tabellenstruktur wiederherzustellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn