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 コンポーネント ライブラリを構築する方法

推薦する

JavaScript ではおそらく switch 文を使う必要はない

目次スイッチも複雑なコードブロックもありませんPythonからのインスピレーション辞書を使用してスイ...

Docker を使用してフロントエンド アプリケーションをデプロイする方法

Dockerはますます普及しています。環境を軽量かつ柔軟に分離し、容量を拡張し、運用保守管理を容易に...

イメージを再構築せずにDockerにポートを動的に追加する方法

操作中に Docker コンテナの公開ポートを変更または追加する必要がある場合がありますが、実行中の...

SVNサービスバックアップ操作手順の共有

SVN サービスのバックアップ手順1. ソースサーバーとターゲットサーバーを準備するソースサーバー:...

プロセスごとにネットワーク帯域幅を監視する Linux ツール Nethogs のインストールと展開

概要Linux 用のオープン ソース ネットワーク監視ツールは数多くあります。たとえば、帯域幅の使用...

同じドメイン名を持つ Nginx プロキシのフロントエンドとバックエンドの分離プロジェクトの完全な手順

フロントエンド プロジェクトとバックエンド プロジェクトは分離されており、フロントエンドとバックエン...

ApacheBench でマルチ URL をサポートする方法

標準の ab は単一の URI でのストレス テストのみをサポートしており、実際のニーズを満たしてい...

Centos7.4 環境に lamp-php7.0 をインストールするチュートリアル

この記事では、Centos7.4 環境に lamp-php7.0 をインストールする方法について説明...

jQueryはマウスドラッグ画像機能を実装します

この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...

HTML チュートリアル: よく使われる HTML タグのコレクション (4)

導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...

MySQLクエリが遅い場合の理由と解決策

Python プログラムを書き、Mysql ライブラリを集中的に操作したためです。データ量が多くない...

スライディングカルーセル効果を実現する js

この記事では、スライディングカルーセル効果を実現するためのjsの具体的なコードを参考までに共有します...

Linux echo テキスト処理コマンドの使用法と例

Linux ヘルプ ドキュメントでの echo の説明は、Python や Java などのプログラ...

MySQL 8.0.15 のインストールと設定方法のグラフィック チュートリアル (Windows 10 X64)

最近私が学んでいるのは MySQL の知識なので、MySQL をインストールすることが非常に重要です...

Vue スキャフォールディング プロジェクトを作成するための詳細な手順

vue スキャフォールディング -> vue.cli大規模で完全に機能する Vue プロジェク...