2008-09-02 9 views
6

私はSSHアクセス権を持たない(私はFTPアクセスしか持っていない)サーバー上にかなり小さなMySQLデータベース(Textpatternインストール)を持っています。私は定期的にライブデータベースを必要に応じて私のローカルのdevサーバにダウンロードする必要があります。つまり、私はスクリプトを実行したい、あるいはcronジョブを実行したいと思っています。これを行う良い方法は何ですか?SSHなしで、ライブのMySQLデータベースをローカルのテストDBにダウンロードするには?

注意すべきいくつかのポイント:

  • ライブサーバーは、Linux、Apacheの2.2、PHP 5.2とMySQL 4.1
  • ローカルサーバが(そうPHPを使用してオプションで)同じことを実行しているが、OSさを実行していますWindowsの
  • ローカルサーバが(そうルビーを使用している有効なオプション)
  • ライブMySQLはデシベル異なるIPアドレスからのリモート接続を受け入れることができます上のRubyを持っている
  • 私は、リモートサーバー上のレプリケーションを有効にすることはできません

アップデート:私はBLAMの答えを受け入れてきた。それは美しく簡単です。私はそれを考えなかったとは信じられません。しかし、1つの問題がありました。プロセスを自動化したいのですが、提案されたソリューションはユーザーにパスワードを要求します。

mysqldump -u USER --password=MYPASSWORD DATABASE_TO_DUMP -h HOST > backup.sql

答えて

5

データベースにリモートからアクセスできるので、Windowsマシンのmysqldumpを使用してリモートデータベースを取得できます。コマンドラインから:

cd "into mysql directory" 
mysqldump -u USERNAME -p -h YOUR_HOST_IP DATABASE_TO_MIRROR >c:\backup\database.sql 

プログラムは、データベースのパスワードをお尋ねし、ファイルcを生成します:あなたはデータを挿入するには、Windowsマシン上で実行することができます\バックアップ\のdatabase.sqlに。

かなり小さいはずの小さなデータベースです。

1

MySQLのレプリケーションはオプションです:ここでパスワードを渡すのmysqldumpコマンドを少し変更したバージョンがありますか?あなたはそれが絶えず複製されることを望まないなら、それをオンまたはオフにすることさえできます。

これは複製時にgood articleでした。

0

サーバー上のすべてのデータベースにSELECT * FROM ...を実行してからDROP DATABASE ...を実行し、ローカルコピーに一連の新しいINSERTを追加する(Ruby)スクリプトを作成しました。 SHOW DATABASESクエリを実行してデータベースを動的に一覧表示できます。ここでは、テーブル構造は変更されないと仮定していますが、テーブルの変更をサポートする場合は、SHOW CREATE TABLE ...クエリとそれに対応するCREATE TABLEステートメントを各データベースの各テーブルに追加することもできます。データベース内のすべてのテーブルのリストを取得するには、SHOW TABLESクエリを実行します。

スクリプトを作成したら、スケジュールされたジョブとして設定して、必要なだけ実行することができます。

0

@マークBiek

オプションMySQLのレプリケーションですか?あなたはそれが絶えず複製されることを望まないなら、それをオンまたはオフにすることさえできます。

ありがとうございますが、私はサーバーで複製を有効にすることはできません。それは操作のための余裕がほとんどない共有サーバーです。私はこれに注意するために質問を更新しました。

0

ライブデータをコピーする頻度と実行の速さによっては、両方のマシンにphpMyAdminをインストールすることもできます。 DBをエクスポートしたりインポートしたりすることはできますが、手動で行う必要があります。それが小さいDBの場合(それはそうであると思われます)、ライブデータをあまりにも頻繁にコピーする必要はありません。必要なものに対してはうまくいく可能性があります。

2

私が使用しているものは次のとおりです。これにより、ライブサーバーからデータベースをダンプし、ローカルサーバーにアップロードします。 mysqldump -hlive_server_addresss -ulive_server_user -plive_server_password --opt --compress live_server_db | mysql -ulocal_server_user -plocal_server_password local_server_db

あなたはバットファイルからこれを実行することができます。スケジュールされたタスクを使用することができます。

関連する問題