Maison > base de données > tutoriel mysql > Comment utiliser mysqlfrm pour restaurer la structure de la table frm

Comment utiliser mysqlfrm pour restaurer la structure de la table frm

一个新手
Libérer: 2017-10-17 10:08:43
original
3612 Les gens l'ont consulté

1.installation de mysqlfrm

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

Puisque mysqlfrm fait partie de l'outil mysql-utilities, nous pouvons installer mysql-utilities, télécharger le package de code source correspondant, puis le compiler et l'installer.

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
Copier après la connexion

Une fois l'installation terminée, mysqlfrm et d'autres fichiers exécutables seront disponibles dans le répertoire d'exécution python correspondant.

2. Introduction aux paramètres liés à mysqlfrm

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

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

3. Utilisez mysqlfrm

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

Utilisez le mode --basedir pour restaurer :

[ 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.
Copier après la connexion

Utilisez le mode --server pour restaurer :

[ 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.
Copier après la connexion

Avez-vous remarqué que le varchar restauré à l'aide de --basedir est 3 fois supérieur à celui du mode --server ? Cela devrait être dû au fait que mysqlfrm n'est pas en mesure d'effectuer la vérification de l'encodage des caractères lors de l'utilisation du mode basedir ? .

Regardez à nouveau le fichier --server : (concentrez-vous sur le texte en rouge et en gras), suggestion : Lorsque le mode --server peut être utilisé, essayez d'utiliser --server et assurez-vous que le fichier mysqld L'environnement est fourni conformément à l'environnement de production d'origine.

--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.
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal