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

推薦する

Dockerはポートを介してコンテナに接続します

Dockerコンテナ接続1. ネットワークポートマッピングPythonアプリケーション用のコンテナを...

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成yumソースを設定する cd /tmp/docker vim Docker...

CSS 疑似要素を使用して複数の連続する要素のスタイルを制御する方法

CSS 疑似要素を使用して要素を制御する場合、一部の要素のスタイルを変更する必要があることがよくあり...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

Docker+nextcloudで個人用クラウドストレージシステムを構築

1. Dockerのインストールと起動 yum で epel-release をインストールします ...

Vue はシェイク機能を実装します (ios13.3 以降と互換性があります)

最近、shake.jsを使用して、shakeに似た機能を作成しました。ただし、shake機能はios...

Reactで例外を適切にキャプチャする方法

目次序文エラー境界エラー境界を超えてトライ/キャッチwindow.onerror、エラーイベント未処...

CocosCreatorゲームにおける魚群アルゴリズムの詳細な説明

序文最近CocosCreatorを学びたいと思ったので、エディターをダウンロードして起動しました。誰...

Docker で MySQL をデプロイする詳細なプロセス (Docker でデプロイされる一般的なアプリケーション)

以前にも紹介しました: docker (一般的なアプリケーションのデプロイ): docker dep...

XHTML 入門チュートリアル: テキストの書式設定と特殊文字

<br />このセクションでは、XHTML でテキストの書式設定と特殊文字を実装する方法...

Innodb で MySQL の 2T テーブルをすばやく削除する方法の例

序文この記事は主に、MySQL の Innodb で 2T の大きなテーブルをすばやく削除する方法に...

Git サーバーを使用してデバッグ ブランチを表示し、修正する方法を 1 日 1 分で学習します。

デバッグブランチプロジェクトの通常の開発中に、以前にリリースされたバージョンにバグがある場合がありま...

HTML 挿入画像の例 (HTML 追加画像)

HTML に画像を挿入するには、画像を表示するための HTML タグが必要です。これは、img タ...

CSS スタイル分類入門(基礎知識)

CSSスタイルの分類1. 内部スタイル ---- インラインスタイルスタイルタグの使用 <ス...

興味深いカウントダウン効果を実現するjs

js興味深いカウントダウンケース、参考までに、具体的な内容は次のとおりですコード: <!DO...