11

現在のテーブルに列を追加する必要があります。

このテーブルは昼夜を問わずよく使われます。ここにあるalterコマンドを使用して変更する必要があることがわかりました

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

開発サーバーでテストしました。

完了するまでに約2時間かかりました。これを本番サーバーで実行したいですか?

これは私のウェブサイトを停止しますか?

4

4 に答える 4

14

2012年1月7日UTC午前0時からメンテナンスを行うというメッセージをサイトに表示してみませんか。

このようにして、データを壊したり、mysqlエラーが発生したりすることはありません。ALTERを実行し、完了したらサイトを再開します(正しいフィールドがあることを確認するために、コードを忘れないでくださいなど)。簡単な解決策。

Stackoverflowはそれを行います、なぜあなたのものではないのですか?

于 2012-01-07T01:02:25.197 に答える
1

はい、ALTER TABLEの間、すべての読み取りと書き込みがブロックされます。Webサイトでそのテーブルを使用する必要がある場合、リクエストはハングします。

pt-online-schema-changeを試してください。再構築が完了すると、変更をキャプチャして変更されたテーブルに対して再生しながら、読み取りと書き込みを続行できます。

開発サーバーで注意深くテストして、サーバーがどのように機能し、何を期待できるかを理解してください。

于 2012-01-07T00:42:47.657 に答える
0

Webサイトが停止することはありませんが、エラーが発生する可能性があります。

もちろん、アプリケーションのすべてのコードを見ずにこれに答える方法はありません。

肝心なのは、疑わしい場合はメンテナンスウィンドウをスケジュールすることです。

于 2012-01-07T00:41:28.153 に答える
-3
  1. しばらくの間、本番サーバーが本番データベースのdev db(または)ミラーを指すようにします。
  2. 本番環境でテーブルを変更する
  3. 本番データベースと通信するコードをデプロイします(新しい属性を使用)

PS:これは(私の経験に基づいて)より安全で確実な方法だと思います。

于 2012-01-07T00:42:48.963 に答える