12 GBの.sqlファイルのインポートに36時間以上かかるのはなぜですか?


16

単純なtype site.sql | mysqlコマンドで12 GBの.sqlファイルがインポートされるまで、36時間待っていました。ibdata1現在も40 GB近くのまだ成長していることがわかります。

トリガーとストアドプロシージャが.sqlの最後にあることを考慮すると、MySQLはデータとキーインデックスを追加するだけだと思います。

site.sqlは、別のサーバーから次のコマンドを使用して生成されました。

mysqldump -R -e --databases site --add-drop-database --add-create-database --add-drop-table -C --single-transaction --triggers

何がかかっているの?


3
mysqlはどのくらいのCP​​Uを使用していますか?値が低い場合は、おそらくディスクにバインドされていることを意味します
デレクダウニー

2
.sqlファイルのインポートは実際にはそれほど速くありません...実際には、タブdelimまたはCSVにダンプしてから空のデータベースを構築して使用する方が高速LOAD DATA INFILEです。また、データベース全体を移動するときは、同じメジャーバージョン内にとどまっている場合にサーバー間でデータベースを移動するという私の答えを参照しください。(特に中止して再起動する必要がある場合)
ジョー

回答:


23

これを試して:

$ ps -ef|grep [m]ysql

プロセスIDを特定します

$ strace -cp <pid>

それから10秒か1分おき^Cます。これにより、プロセスがどこで時間を費やしているのかがわかります。たとえば、あなたが見readwrite支配しているのであれば、ディスクを待っているだけです。


4
+1は新しいコマンド(strace)を習ったばかりだからです。
デレクダウニー

2
これは、gdbとともに素晴らしいツールです。私は彼らのアプリがもうハングしているとは言いません。スタックしているものやスピンしているものを正確に伝えるか、コアからコード行とソースファイルの名前を伝えます。さらに強力なのはdtraceです。
ガイウス

3
StraceはLinux-Solaris equivはトラスです。DtraceはMacで使用できます。
ガイウス

そうです。今すぐ読んでいきましょう。
デレクダウニー

注意:知っておくべき素晴らしいコマンドですが、注意してください、このコマンドはMySQLインスタンスをクラッシュさせました。理由がわからない。MySQLがクラッシュする前に、サーバーは数分間応答しなくなりました。
dabest1

7

主キーを持つInnoDBテーブルはありますか

  1. 複数の列を含む?
  2. 広いVARCHARを持っていますか?
  3. そして、多くの非ユニークインデックス?
  4. ワイドキーを持つ1つ以上の非ユニークインデックス?

これらの条件のいずれかにより、おそらく、インデックス内の大きなBTREEノードが各BTREEノードに非常に少ないリーフを持つ可能性があります。プライマリキーのクラスターキーは、クラスター化されていないキーの各一意でないキーエントリにも添付されます。

別の考慮事項:InnoDBデータページの合計は、InnoDBインデックスページよりも大幅に少ないですか?

次のクエリ(MB単位)で確認できます。

SELECT SUM(data_length)/POWER(1024,2) InnoDBData,
SUM(index_length)/POWER(1024,2) InnoDBIndexes
FROM information_schema.tables WHERE engine='InnoDB';

追加の考慮事項:ロードするDBサーバーでバイナリロギングが有効になっていますか?ある場合は、ロードしているサーバーでこれを実行してください。

mysql -h... -u... -p... -A -e"SET sql_log_bin=0; source site.sql"

これが役立つことを願っています!!!


6

読み込んでいるテーブルにはトリガー、インデックス、制約がありませんか?どのハードウェアとOSを実行していますか?ストレージはどのように構成されていますか?

私はオラクルに精通していますが、トリガー、インデックス、制約のないテーブルでの12Gインポートは200GB / hで簡単に行なえます。トリガーが何をするかに応じて、1つのトリガーでプロセスをカタツムリにすることができます...

これがお役に立てば幸いです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.