/ 複製するには大きすぎるテーブルの/ MySQL ALTER TABLE - mysql

大きすぎて重複するテーブルのMySQL ALTER TABLE - mysql

MyISAMテーブルにカラムを追加するとき、MySQL作成>コピー>ドロップ>名前の変更を行います。私はそれがサーバーの残りの空きスペースに複製することができないほど十分に大きいテーブルを持っています。列を追加しようとするとディスクがいっぱいになります。ここで時間は問題ではありません。

MyISAMテーブルに列を追加する方法は、データを別のサーバーにコピーすること、切り捨てること、変更すること、そして元に戻すことです。 なし それは一時テーブルを作成し、すべてのデータを複製する?

回答:

回答№1の場合は3

手動で新しい空のテーブルを作成できますデータをチャンク単位で移動し(INSERT to new、DELETEから一定の行数)、古いテーブルを削除して新しいテーブルの名前を変更します。基本的にはMySQLが行うことですが、データをコピーするのではなくデータを移動するため、使用するスペースが少なくて済みます。


回答№2の場合は1

一般に、私は自分の最大のテーブルを再構築できるように十分な空きスペースを確保しようとします。これで私は走ることができます OPTIMIZE TABLE または ALTER TABLE 必要に応じて。

サーバーに別のディスクがマウントされていますか?

与えられたテーブルを再構築するにはスペースがきつすぎる場合、他のテーブルを一時的に別のディスクボリュームに移動することをお勧めします。これを行うには、MySQLを停止し、関連データファイル(MYDとMYI、またはibd)を移動してから、元の場所に新しい場所を指すシンボリックリンクを作成して、MySQLを起動します。テーブルの再構築が完了したら、そのプロセスを元に戻して、他のテーブルを元の場所に戻します。