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

推薦する

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

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

MySQLデータベースのマスタースレーブ同期の実際のプロセスの詳細な説明

目次インストール環境の説明MySQLデータベースサービスをインストールするメインライブラリを構成する...

静的リソースファイルのアクセスログをフィルタリングするNginxの実装

乱雑なログ日常的に使用される Nginx は、静的リソース サーバーとリバース プロキシ サーバーの...

CentOS8 デプロイメント LNMP 環境で mysql8.0.29 をコンパイルしてインストールする方法の詳細なチュートリアル

1. 前提条件何度かインストールしているので、エラーについてはこれ以上説明しません。ちょっとわかりに...

mySQLキーワードの実行優先度の説明

以下のように表示されます。表から条件フィールドでグループ化仮想テーブルとフィールドを作成し、フィール...

CentOS 7.x のマスターおよびスレーブ DNS サーバーの展開

1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...

Linux での MongoDB のインストールと設定のチュートリアル

MongoDBインストールYumを使用してインストールすることを選択する1. repoファイルを作成...

Vueバックグラウンド管理に多言語機能を追加する例

目次1.まず、main.jsページを設定します2. 対応するパスの下で言語パックを構成します。ここに...

Mysqlは日付範囲の抽出方法を指定します

データベースを操作する過程では、いくつかの指標を日付別にまとめたり、一定期間内の合計金額をカウントし...

JavaScript の Set データ構造の詳細な説明

目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...

JavaScriptカルーセルの実装について

今日もとても実践的な事例です。名前を聞くだけで高度で難しそうですよね?今日はカルーセル画像の真髄を簡...

CentOs システムで Python と yum をアンインストールするソリューション

事故の背景: 数日前、プロジェクトの必要性により、サーバーに python-mysql モジュールを...

検索エンジンのウェブサイトの入り口の無料コレクション

1: Baiduウェブサイトログイン入口ウェブサイト: http://www.baidu.com/s...

指定フィールドによるMySQLカスタムリストのソートの実装

問題の説明ご存知のとおり、MySQL でフィールドを昇順に並べ替える SQL は次のとおりです (i...

Linux システム構成 (サービス制御) の詳細な紹介

目次序文1. システムサービス制御1. システムctl 2. ターゲット3. 共通システムサービス4...