5

これについてWordpressフォーラムを見回しましたが、何も見つからなかったので、ここで試してみようと思いました.

新しいプラグインなどのテストに使用されるステージング/開発用の Wordpress セットアップがある場合、ステージング データベースのデータを本番データベースに戻すにはどうすればよいでしょうか? これを行うための「Wordpress のベスト プラクティス」の方法はありますか、それとも、あるデータベースから別のデータベースにテーブルを手動で移行する必要がありますか?

4

6 に答える 6

3

本番Wordpress DBのコピーをmysqldumpし、テストWordpressインストールに復元してから、テストDBのすべての「本番」設定とURLを修正するスクリプトがあります。

私の運用データベースとテスト データベースは同じサーバー上にありますが、mysqldump の設定を変更して、リモートの mysql サーバーからダンプし、ローカル サーバーに復元することは非常に簡単です。

ここに私のスクリプトがあります:

overwrite_test.coach_db_with_coache_db.sh

#!/bin/bash 
dbUser="co*******"
dbPassword="*****"
dbSource="coach_production"
dbDest="coach_test"
tmpDumpFile="/tmp/$dbSource.sql"

mysqldump --add-drop-table --extended-insert --user=$dbUser --password=$dbPassword --routines --result-file=$tmpDumpFile $dbSource
mysql --user=$dbUser --password=$dbPassword $dbDest < $tmpDumpFile
mysql --user=$dbUser --password=$dbPassword $dbDest < /AdminScripts/change_coach_to_test.coach.sql

change_coach_to_test.coach.sql

-- Change all db references from @oldDomain to @newDomain

SET @oldDomain = 'coach.co.za';
SET @newDomain = 'test.coach.co.za';
SET @testUsersPassword = 'password';

UPDATE `wp_1_options` SET `option_value` = REPLACE(`option_value`,@oldDomain,@newDomain) WHERE `option_name` IN ('siteurl','home','fileupload_url');
UPDATE `wp_1_posts` SET `post_content` = REPLACE(`post_content`,@oldDomain,@newDomain);
UPDATE `wp_1_posts` SET `guid` = REPLACE(`guid`,@oldDomain,@newDomain);
UPDATE `wp_blogs` SET `domain` = @newDomain WHERE `domain` = @oldDomain;
UPDATE `wp_users` SET `user_pass` = MD5( @testUsersPassword );

-- Only valid for main wpmu site
UPDATE `wp_site` SET `domain` = @newDomain WHERE `domain` = @oldDomain;
于 2010-08-22T00:21:20.820 に答える
1

2つの方法は、ツールでエクスポート/インポート機能を使用するか、データベースをコピーすることです。WordPressデータベースバックアッププラグインを使用して、本番データベースのコピーを毎週自分宛にメールで送信します。

ホストされたphp実装でアップロードできるファイルのデフォルト値はデフォルトで小さすぎる傾向があるため、php.iniファイルを頻繁に構成する必要があるため、インポート機能はワードプレスのブログを移動する際に問題になる可能性があります。

于 2009-09-19T04:08:42.250 に答える
1

おそらく、あなたは間違ったものを探しているだけです。バックアッププラグインはこれを簡単に処理できませんか? 私はそれらがすべての大きなCMSパッケージに存在することを知っています...

于 2009-09-18T23:03:44.253 に答える
1

私は、本番用のワードプレス Web サイトからデータベースをデスクトップ マシン上のオフライン開発コピーにプルして、サイトを変更し、既存のブログ コンテンツと履歴の完全なセットでテストできるようにしたいと考えていました。

データベースのオフライン バックアップを作成し、それをローカルの開発データベースにインポートするだけでは機能しないため、これは問題であることが判明しました。

本番データベースから開発データベースにデータを移動する際のこれらの問題を克服することは、おそらく他の方法にも使用できます-したがって、これらのガイドラインを使用して、やりたいことにも使用できると思います-開発データから始めて移動するだけですそれを生産する。

ここでの問題は次のとおりです。

  1. ブログ投稿のパーマリンク指定はすべて、オンライン バージョンの場合と同様にデータベースに保存されますが、私のオフライン コピーはドメイン アドレスではなく、localhost ディレクトリにあります。そのため、サイトをローカルで起動すると、css の書式設定と画像はすべて整っていますが (画像のリンクは相対的です)、実際のブログ投稿は表示されません。
  2. サイト全体のリンクの多くはインターネットに戻るため、アーカイブ、コメント、カテゴリ、またはメインの投稿に移動しようとすると、データベースにとどまる代わりにインターネットに送り返されます。ローカル マシン。

これを正しく行っていることを確認するために、ローカル マシンにインストールしていた wordpress を吹き飛ばし、最初からやり直しました。

クリーンで新しいワードプレスのインストールと、そのための真新しいデフォルトの新しく作成されたローカルデータベースができたら、phpMyAdminでデータベースを開き、wp_postsを調べました

テーブル。その中に、各レコード (つまり、各投稿) には、その投稿の場所を示す "guid" というタイトルの列があります。たとえば、新しいデフォルトの最初のもの

インストールには、次の「guid」値が含まれています。

http://localhost/wordpress/?p=1

オンライン バージョンの wp_posts テーブルを見ると、代わりにこの場所にオンラインのサイトへの URL が表示されます。

これらすべての外部参照をインポートすることになるため、テーブルをローカル インストールに大量にインポートすることはできません。ローカル バージョンをローカルでナビゲートできなくなります。

そこで、オンライン サイトのデータベースのバックアップ コピーを作成し、.sql ファイルとしてローカルに保存しました。次に、そのファイルをテキスト エディターで開きました (素晴らしいフリー ソフトウェアである notepad++ を使用しましたが、任意のテキスト エディターを使用できます)。私が気をつけなければならなかったこと:

  • なんらかの理由で、私のオンライン サイトのテーブルは、たとえば「wp_posts」ではなく、「wp_something_posts」です...テーブル名に余分な文字が含まれています。
  • localhost/wordpress の代わりに自分のオンライン URL を含む http://... への参照

シンプルにするために、投稿だけを行いましょう。オンライン データベースから作成した .sql のバックアップ コピーで、wp_posts テーブルの先頭を見つけます。次のようになります。

--

-- Table structure for table `wp_posts`

--



DROP TABLE IF EXISTS `wp_posts`;

CREATE TABLE `wp_posts` (

...等々。その上から、ファイルの先頭にあるデータベースの開始を示すコメントのすぐ下まですべてを強調表示し ( -- Database: 'your database name' と表示されます)、削除します。次に、wp_posts テーブルの最後に移動し、それ以降のすべてを削除してから、ファイルの最後まで削除します。これで、ファイルには投稿のみが含まれ、他には何も含まれなくなりました。

これを別のドキュメントとして保存します。それをposts.sqlなどと呼んでください。

さて、このposts.sqlファイルでは、2 つの検索/置換アクションを実行する必要があります。

  1. テーブル wp_something_posts の名前のすべてのインスタンスを見つけて、wp_posts に置き換えます。テーブル名に関する限り、オンライン データベースのバックアップ コピーがクリーン ローカル インストールと一致しない場合にのみ、これを行う必要があります。このファイル内のテーブル名は、ローカルにインストールされた wordpress データベースがこのテーブル名として持っているものと一致する必要があります。これらの名前を一致させないと、投稿を別の名前の新しいテーブルにインポートすることになり、まったく役に立ちません。
  2. http://... のすべてのインスタンスを検索し (省略記号を自分の URL に置き換えます)、 http://localhost/wordpress (またはサイトの開発バージョンへのローカル URL は何でも) に置き換えます。

このファイルを再度保存して、これらの変更が設定されていることを確認します。

これで、phpMyAdmin を使用してローカル マシンの wordpress データベースにアクセスし、[インポート] タブを選択して、作成したposts.sqlファイルにセレクターを移動し、インポートします。これにより、そのファイル内のすべてのデータがローカルの wp_posts テーブルに取り込まれます。

それが終了したら、ローカルのワードプレス サイトを参照します。そこにすべての投稿が表示されます。万歳!

作成したコメント、タグ、カテゴリ、および静的ページなどを取り込みたい場合は、他のいくつかのテーブルに対して同様のことを行う必要がある場合があります。

これは複雑なプロセスであることを認識しています。おそらく、この作業を簡単にするツールがどこかにあるので、誰かがそのツールを知っているなら、私はそれについて知りたいです. 私が説明した方法よりも手動でこれを行うためのより良い方法を誰かが知っている場合は、それも知りたいです!

それまでは、これが私がそれを行う方法を見つけた方法です。うまくいけば、それがあなたを正しい方向に導くのに役立ちます.

于 2009-11-10T10:16:49.703 に答える
0

シリアル化されたオブジェクトを処理する必要があります。これを処理するためのクライアント側のHTML5ユーティリティを次に示します。すべてjavascriptであるため、非常に高速です。

別の方法は、bashスクリプトをデプロイメントにフックすることです。したがって、サイトがデプロイされると、dbはバックアップされ、新しいドメインで逆シリアル化されます。

于 2012-03-22T20:52:34.740 に答える
0

これは、ワードプレスのコアアーキテクチャの問題を要約したものです...しかし、データベースに保存されているドメイン名と絶対URLの問題を解決するプラグインを作成しました。

http://wordpress.org/extend/plugins/root-relative-urls/

これにより、@oddbillで概説されている問題が解決されます。ただし、そのフィールドがリンク生成に使用されることはないため、GUID列にURLが含まれていることについてはあまり心配しないでください。

@markratledgeは、基本的に次のような長いドキュメントへのリンクをいくつか提供します。

//書き出す

mysqldump -u[username] -p[password] [database] > backup.sql

//輸入

mysql -u[username] -p[password] [database] < backup.sql

コメントとトラックバックのすべてが失われないように、ステージングから本番環境にプッシュする場合は、comments / messages_metaテーブルを除外する必要があります(@DavidLaingのアプローチはそれらを一掃します)。これは、コンテンツの変更のみを行うことを前提としています。ステージング環境。本番環境とステージング環境に変更を加える場合は、データを大規模に上書きするのではなく、データを同期するスクリプトを作成する必要があります...そのタスクを頑張ってください。投資する前に、作成および変更されたタイムスタンプ列を追加することをお勧めします。現在のスキーマでは時間がかかりすぎます。

そして最後に、@ RussellStueverのアプローチはほとんどの状況に適しています。ホストにマップされたサイトと本番サイトを閲覧しているときは、必ず知っておいてください。一部のブラウザは、物理的に閉じて新しいプロセスを開始するまで、DNSルックアップを数日間キャッシュするためです。その時点で、ホストの切り替えには時間がかかる場合があり、頻繁に切り替えるとイライラする場合があります。また、iPhoneでテストする必要がある場合は、最初にサイトをライブで公開するか、ほとんどのモバイルデバイスでhostsファイルを変更できないため、アウトバウンドインターネットリクエストをローカルサーバーに再マッピングできる優れたルーターを使用する必要があります。

私のプラグインを使用すると、通常の落とし穴なしに、http:// localhost /、http://staging.server.local/、またはhttp://www.production.comから開発およびテストできます。そして、データを移行するには、データのエクスポートとインポートと同じくらい簡単で、検索と置換の手順やデータベース設定の微調整は必要ありません。

また、インポート/エクスポートツールに依存しないでください。通常のワードプレスのインストールですべてをキャプチャするわけではなく、不必要な検索と置換の手順が必要です。

于 2011-11-09T06:10:01.907 に答える