スキーマ転送と他のサーバーへのデータベースの再構築

スキーマ転送と他のサーバーへのデータベースの再構築

新しいテーブルの追加や他のテーブルの変更など、開発中にデータベーススキーマを大幅に変更しました。実装に約15時間かかったすべての変更を繰り返すことなく、このスキーマをサーバーに転送し、新しいテーブルを構築し、他のテーブルを再構築する簡単な方法はありますか?

答え1

もちろんです。しかし、あらかじめ計画を立てれば簡単にできます。

多様性

sqlデータベース移行(スキーマの変更など)を作成するときは、変更をカプセル化するステートメントを生成する必要があります。データを含む既存のテーブルに列を追加する場合は、sql変更を説明するステートメントを生成できる必要があります。たとえば、

ALTER TABLE `myTable`.`local`
   ADD COLUMN `last_update` timestamp NULL AFTER `location_name`,
    ...;

各変更を追跡するステートメントを含むファイルをアーカイブしてから、本番sqlテーブルでそのステートメントを正しい順序で実行しても問題ありません。追跡している場合は、この種類のコンテンツをバージョン管理に追加することもできます。これは、すでにこれらのサポートを提供しているフレームワークの助けを借りずにこれを行うための最良の方法です。

新しいテーブル

新しい方が簡単です。すべてのインデックスとデータ型がわかるまで作業を続け、スキーマをファイルにダンプします.sql。本番サーバーでこのコマンドを実行すると、テーブルがそこにあるはずです。

mysqldump -d -h localhost -u root -pmypassword databasename > dumpfile.sql

-dデータではなくスキーマのみをダンプする必要があります。

難しい道

増分変更の実行リストを維持しない場合や、スキーマを大幅に変更しないと、少し難しくなります。運用表と開発表のスキーマを手動で比較し、移行を手動で作成する必要がある場合があります。既存のデータがフィールド定義に収まらないほどテーブルを変更しすぎていないとします。

本番テーブルからスキーマをダンプし、それを開発システムの他のデータベースにインポートしてから、そこから移行を作成できます。ただし、古いスキーマから新しいスキーマへの移行を作成するだけで済みます。新しいスキーマを設計するよりもスピードが速くなることに注意してください。

関連情報