質問

Magentoでオンラインストアを開発しています。このサイトはトラフィックが多く、TestingとProductionの2つのサーバーセットアップが必要になります。

私の質問は、オンラインストア、具体的にはMagentoがこれをどのように処理するかです。

私が考えていたのは:

  • 本番サイトをオフラインにする
  • 空のテストデータベース
  • 本番データベースからデータをコピーします。 (たぶん)
  • テスト
  • 本番サイトへのファイルとデータベースのコピー

Magentoにはエンタープライズオプションがありますが、これは自分で書きたいスクリプトです。

役に立ちましたか?

解決

本番サイトをオフラインにする必要はありません。

私が提案するもの(そしてこれをスクリプト化できるはずです)は、 mysqldump -u root -ppassword db_name>を実行するための実動サイトにあります。 db_name.sql を使用して、データベースのコピーを作成します。次に、filesディレクトリでrsync(LinuxとWindowsの両方で取得可能)を実行して、コピーするファイル(イメージ?)をテストマシンにrsyncします

本番環境にプッシュするテストを行った後、2つの方法のいずれかを実行できます。どちらか(そしてこの方法が好ましい)は、データベースに加えた変更をsqlファイルに保存し、実稼働サイトで実行すると同時に、変更されたファイルを同期します。または、mysqlを使用してすべてのクエリをファイルに記録してから、実稼働サイトでそれらを再生できます。

必要がなければ、本番サイトを停止しないことが最善です。

他のヒント

マスター/スレーブmySQLで、スレーブがスレーブデータベースから読み取り、ライブに書き込みたい場合。これは、local.xmlファイルで設定できます。 var / sessionおよびvar / cacheファイルの--excludeを使用して、ファイルのrsyncを実行できるはずです。また、ロゴが開発サーバーの場合、ロゴを除外することもできます。その後、ロゴを「テスト」と言うように変更して、Liveと混同しないようにすることができます。

実際、データベースに変更を加えた場合、古いコードから新しいコードに切り替えてデータベース移行スクリプトを実行する間、サイトをオフラインにする必要があります(ほんの数秒でも)。

あなたはそれを知ることに興味があるかもしれません

  • postgresにはトランザクションDDLがあります。移行スクリプトをトランザクションでラップし、途中で何かが壊れると、全体がロールバックされます(DROP TABLEを含む)

  • postgresは、列を追加するためにテーブルを書き換える必要はありません(MySQLが必要で、かなり遅いです)

  • MyISAMを使用する場合、多くの理由で運命にあります。その1つは、バックアップを行うとサイトが数分間オフラインになることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top