Naoya Murakami
visio****@gmail*****
2014年 6月 14日 (土) 23:18:33 JST
Groongaユーザの村上です。 ベクターカラムがあるテーブルを含むDBを、mysqldumpで生成したSQLファイルから復旧する際に問題が発生しました。 > > > このうち、postsはMroongaストレージエンジンのテーブル、vector_tagsはposts.vector_tagsカラムをベクターカラムとして使うための従属的なMroongaテーブルとします。 > このDBをダンプして復旧しようとすると、CREATE TABLE postsが走る時点でエラーになってしまいます。 > Groongaのダンプ系のコマンドでは参照関係を考慮してダンプしてくれ ますが、MySQLではGroongaの構造までは考慮しないのでこうなり うるでしょうね。 本件について、ストレージエンジンのMroongaでMySQLのクライアント コマンドのmysqldumpをどうこうするってのは、できなそうだなーって 感じました。 (感じただけで、調べたわけではないのでできるかどうかはわかりません。) 私には根本的な解決方法は示せませんが、私ならきっと以下のどちらかで アプローチすると思います。 案1 ・mysqldumpでダンプされるテーブルの順番の規則をソースなり 実行してみるなりして調べる。 その規則にのっとって、リファレンスベクター用の参照先テーブルは、 参照元のテーブルよりもダンプ時に後に来るようにつくる。 たとえば、テーブル名順にダンプされるなら、かならず後ろに来るように 適当な接頭辞つけるとか。 案2 ・データのみダンプ、テーブル定義のみダンプ、特定テーブルを除くといった mysqldumpのオプションを駆使して、参照関係にあるテーブルのみが先に 作られるように実行するスクリプトを作る。 http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html 一ユーザの意見で参考になるかはわかりませんが、よければご検討ください。 以上、よろしくお願いします。