MySQL の frm ファイルからテーブル構造を復元する 3 つの方法 [推奨]

MySQL の frm ファイルからテーブル構造を復元する 3 つの方法 [推奨]

mysql が正常に実行されている場合、テーブル構造を表示することは難しくありません。

しかし、場合によっては MySQL が失敗し、この方法が実行できなくなることがあります。

障害が発生すると、通常は新しい MySQL インスタンスを使用して現在のデータを復元します。

テーブルを作成することは非常に重要なステップであり、テーブル構造を見つけるための他の方法が必要です。

テーブル構造はどこで定義されていますか?

通常、関心のあるユーザー データは、実際には MySQL データ ディレクトリに保存されます。
テーブル構造の定義など、他のメタデータも例外ではありません。

mysql データ ディレクトリのファイル構造は非常に明確です。

• カタログ マッピング データベース
• frmファイルにはテーブル構造の定義が格納されます
•ibdataファイルはmysqlメタデータとその他の

テーブルで定義された構造は frm ファイル内に存在し、もちろんメタデータを管理する ibdata にもレコードが存在します。

frm ファイルが存在する場合、テーブル構造を復元するのは比較的簡単です。
ただし、drop table を実行すると frm ファイルが削除され、この記事で紹介する方法は役に立ちません。
この場合、ibdata からテーブル構造を復元することができますが、これは以下の説明の範囲外です。

テーブル構造の解析

以下は、frm ファイルから create table コマンドを解析する 3 つの方法です。

mysqlfrm

mysqlfrm は、mysql ユーティリティ ツールの 1 つです。
frm ファイルを分析し、テーブル作成コマンドを生成するために使用されます。
更新されなくなり、その機能の一部は MySQL シェルの新しいバージョン (バージョン 8 以降) に組み込まれました。

mysql ユーティリティには python2 環境が必要ですが、インストールは非常に簡単です。

$ tar -xvzf mysql-ユーティリティ-1.6.5.tar.gz
$ cd mysql-ユーティリティ-1.6.5
$ python setup.py ビルド
$ python setup.py をインストール

mysqlfrm は、frm を解釈するための 2 つのモードをサポートしています。

直接分析

このモードは比較的簡単で、frm ファイルをバイトごとに分析し、できるだけ多くの情報を抽出します。

このモードでは、--diagnostic パラメータを使用する必要があります。

$ mysqlfrm --diagnostic /data/sakila/actor.frm

MySQL サンプル分析

このモードでは、新しい mysql インスタンスを使用して frm 分析作業を完了します。
新しい MySQL インスタンスを起動する方法を指定するには 2 つの方法があります。

1. 現在のMySQLサービスから起動し、--serverを使用してMySQLサービスを指定します。

$ mysqlfrm --server=root:pass@localhost:3306 --port=3310 /data/sakila/actor.frm

次に、新しいMySQLインスタンスを起動し、--basedirを使用してMySQLプログラムパスを指定します。

$ mysqlfrm --basedir=/usr/local/bin/mysql --port=3310 /data/sakila/actor.frm

--port は、現在のポート 3306 との競合を避けるために、新しいインスタンスのポートを指定します。

dbsake

これは偶然発見したツールです。ドキュメントでは次のように紹介されています。

dbsake - MySQL 用の (s)wiss-(a)rmy-(k)nif(e)

作者は MySQL に非常に精通した人物に違いありません。このツールはダウンロード、インストールから使用までシンプルでわかりやすいです。

$ curl -s get.dbsake.net > dbsake
$ chmod u+x dbsake
$ ./dbsake frmdump [frmファイルパス]

オンラインサービス

こうした問題に焦点を当てたオンラインサービスもいくつかあります。
私はtwindbをオンラインで使用しましたが、とても良い経験でした。関連するツールセットも素晴らしいです。

「Recover Structure -> from .frm file」エントリから frm をアップロードすると、create table コマンドが取得されます。

最後に

これを使用すると、複数のツールをテストし、どのツールの回復コマンドがより完全で望ましいかを比較し、最適なものを選択できます。

参照:

•mysqlfrm 公式ドキュメント

•dbsake プロジェクト ドキュメント

要約する

上記は、frm ファイルから MySQL のテーブル構造を復元するために紹介した 3 つの方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL の完全なデータベース バックアップ データを使用して単一のテーブル データを復元する方法
  • MySQL で単一のデータベースまたはテーブルを復元する方法と、起こりうる落とし穴
  • 単一のMySQLテーブルを復元する手順
  • MySQL の完全なデータベース バックアップからデータベースとテーブルを復元する方法
  • InnoDB タイプの MySql によるテーブル構造とデータの復元
  • MySQL は、完全なデータベース バックアップから指定されたテーブルとライブラリを復元します。
  • MySQL シングルテーブル ibd ファイル回復方法の詳細な説明
  • MYSQLは.frmを使用してデータテーブル構造を復元します
  • mysqldump を使用して指定したテーブルをバックアップおよび復元する方法
  • MySQLはテーブルデータを復元するためにfrmファイルとibdファイルを使用します

<<:  Docker: /etc/default/docker の DOCKER_OPTS パラメータを変更しても反映されない

>>:  DevUI で独自の Angular コンポーネント ライブラリを構築する方法

推薦する

フロントエンドにアニメーション遷移効果を実装する方法

目次導入従来のトランジションアニメーションCSS トランジションアニメーションjsアニメーション従来...

CSS 円形ホローイングの実装(クーポン背景画像)

この記事では主に、クーポンの背景画像などでよく使われる CSS 円形ホローイングについて紹介し、皆さ...

フラッシュプラグインを使用してPCのカメラを呼び出し、TMLページに埋め込む方法

序文この記事を書いた主な理由は、チームリーダーが、ブラウザを使用してコンピューターのカメラを呼び出し...

MySQLでよく使われる文字列関数トップ10の詳細な説明

こんにちは、みんな!技術の話ばかりで髪は切らないトニーです。データベース関数は、何らかの機能を持ち、...

JSはビデオの再生速度を制御するための簡単なサンプルコードを実装します

導入以前、ある問題に気づきました。学習ビデオを視聴しているとき、動きが遅すぎる、先生が黒板に書くのに...

TypeScript の関数

目次1. 関数の定義1.1 JavaScript の関数1.2 TypeScriptの関数2. オプ...

Webpack3+React16コード分割の実装

プロジェクトの背景最近、webpackのバージョンが古いプロジェクトがあります。 リーダー層では今の...

Node.js のモジュール性、npm パッケージ マネージャーの説明

目次モジュール化の基本概念モジュール化とは何かモジュール分解の利点Node.js のモジュール性No...

JS Canvas インターフェースとアニメーション効果

目次概要Canvas API: グラフィックスの描画パス線種矩形アーク文章グラデーションと画像の塗り...

ネイティブ JS カプセル化 vue タブ切り替え効果

この記事の例では、ネイティブJSカプセル化vueタブ切り替えの具体的なコードを参考までに共有していま...

VMware 12 での Ubuntu 16.04 インストール チュートリアル

この記事では、VMware 12でのUbuntu 16.04のインストールチュートリアルを参考までに...

Vue で SuperMap を使用する練習

目次序文関連資料Vue プロジェクトが 2 次元ハイパーグラフを導入ハイパーグラフ 2D ケース引用...

MySQL シリーズ 3 基礎

目次チュートリアルシリーズ1. MySQL の紹介2. MySQLの開発履歴3. MariaDBの基...

startup.bat をダブルクリックすると Tomcat がクラッシュする問題の解決方法の詳細な説明

Tomcat を学習したばかりのプログラマーにとって、これはよくある間違いです。 1. 環境変数の問...

HTML メタの使用例

使用例コードをコピーコードは次のとおりです。 <!DOCTYPE html> <!...