Mysqlのデータディレクトリをバックアップから抽出し、古いテーブルからスキーマを取得する必要がありますが、それは別のマシンからのバックアップです。
今日、これを行う方法について多くのチュートリアルを読みましたが、失敗するように見えるたび、またはmysqlがハングまたはクラッシュするためにmysqlを再インストールしなければならなくなりました。私は以下を試しました:
.frm
ファイルから回復いろいろな順番や組み合わせで試してみました。
.frm
ファイルからスキーマを抽出できる外部ツールはありますか?ファイルを開くと、列名が表示されます。私は一見したが、これを可能にする何かを見つけることができないようです。
前もって感謝します。
TwinDBでは、mysqlfrm
へのWebインターフェイスを構築しました。それは無料で使いやすいです。
テーブル構造を回復するには、.frmファイルをアップロードするだけです。
手順は次のとおりです。 1. https://recovery.twindb.com/ を開きます。 「Recover Structure」をクリック
一連の.frmファイルを含むアーカイブをアップロードすることもできます。サイトはそれらを完全に回復します。
私は以前にこのような質問に答えました
Dec 21, 2011
: InnoDBのテーブル圧縮?Feb 03, 2012
: FRMファイルからMySQLテーブル構造を復元する方法Apr 23, 2012
: 。frmおよび.ibdファイルからテーブルを復元しますか?.ibd
ファイルをデータディクショナリに接続する際に Chris Calendarのブログ を参照しました。
.ibd
と.frm
がない場合、MySQLが innodb_file_per_table offで実行されている可能性があります。 Feb 03, 2012
の投稿を参照してください。これがLinuxの場合は、必ず実行してください
cd /var/lib/mysql
chown -R mysql:mysql *
mysqlを開始する前。
試してみる !!!
その最後のブログの下部にそれは言う:
はい、私は夢中です!どこで入手できますか?
.frmリーダーユーティリティは、新しいリリース-1.3.0 Alphaの一部です http://dev.mysql.com/downloads/tools/utilities/ で個別にダウンロードできます。プラットフォームリポジトリまたはソースリポジトリを選択してダウンロードするだけです。
私たちはあなたのコメントを歓迎し、このユーティリティがあなたの診断と回復ツールキットを拡張するのを助けることを望みます。
良いお知らせがあります。 MySQLユーティリティのWindowsバージョンをインストールしました。 mysqlfrmプログラムをコマンドラインからテストしました。 mysqlスキーマのuser.frmから.frm
情報を取得することをテストしました。ここに私が得たものがあります:
C:\MySQL_5.6.10\data\mysql>mysqlfrm --server=root:rootpassword@localhost mysql:user.frm --port=3307
# Source on localhost: ... connected.
# Starting the spawned server on port 3307 ... done.
# Reading .frm files
#
# Reading the user.frm file.
#
# CREATE statement for user.frm:
#
CREATE TABLE `mysql`.`user` (
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
`User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
`x509_subject` blob NOT NULL,
`max_questions` int(11) unsigned NOT NULL DEFAULT '0',
`max_updates` int(11) unsigned NOT NULL DEFAULT '0',
`max_connections` int(11) unsigned NOT NULL DEFAULT '0',
`max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
`plugin` char(64) COLLATE utf8_bin DEFAULT '',
`authentication_string` text COLLATE utf8_bin,
`password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
#...done.
C:\MySQL_5.6.10\data\mysql>
それは実際に動作します。データベースは、デスクトップコンピューターでポート3306を使用して実行されています。生成されたプロセスを実行するには、ポートとして3307を指定する必要がありました。
LinuxボックスからWindowsマシンに.frm
を移動して、同じことを行うことができます。
試してみる !!!