システムコールでMySQLDumpを使用して、あるデータベースからテーブルをエクスポートし、別のデータベースに(選択的に)インポートします。私の問題は、ソースデータベースサーバーでは、一部のテーブルが別の(暗号化された)ディレクトリにあり、ターゲットサーバー上にターゲットデータディレクトリが存在しないことです。基本的に私が望むすべて'DATA DIRECTORY'を持たないMySQLDump
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `AnExampleTable` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`type_id` int unsigned DEFAULT NULL COMMENT 'FK The system type.',
`resource` varchar(64) DEFAULT NULL COMMENT,
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ActionSystemPendingId`),
UNIQUE KEY `resource_type` (`type_id`,`resource`),
KEY `created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 DATA DIRECTORY='/mnt/mysqlEncrpyted/';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40000 ALTER TABLE `AnExampleTable` DISABLE KEYS */;
-- data inserts
/*!40000 ALTER TABLE `AnExampleTable` ENABLE KEYS */;
/*!40103 SET [email protected]_TIME_ZONE */;
/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40111 SET [email protected]_SQL_NOTES */;
:暗号化されたディスクに保存されているこれらのテーブルには
mysqldump --skip-opt --skip-comments --no-create-db --disable-keys
--extended-insert --quick --create-options --login-path=sourcedb
source_database_name source_table |
mysql --login-path=targetdb target_database_name
は、ダンプは次のようになります。
私の現在のコマンドは次のようになりますを行うにはsed
に頼らなくても、クエリからのドロップがDATA DIRECTORY='/mnt/mysqlEncrpyted/'
になります。
これは(私が言ったように)システムコールを介して行われ、いくつかのテーブルは特別なデータディレクトリには存在しないため、正常です。私が望むのは、それを取り除く旗です。
最後に、私はsedを通してそれをパイプしました。かなりの解決策ではありませんが、うまくいきました。 – samlev
mysqldumpの出力フォーマットを理解し、ダンプファイルをストリームとして書き直すことができる、my-dump-filterと呼ばれる、最終的にはリリース予定のユーティリティを書きました。名前のリストからスキーマ全体を含める/除外する、ストレージエンジンを変更する、テーブル定義とデータを別々のファイルに分割する、DEFINER文を削除する(Amazon RDSの場合)ウィッシュリストにデータディレクトリを削除または変更することを追加します。 –