2011-01-26 16 views
1

サーバのクラッシュのため、一定時間内に作成されたいくつかの行をローカルのマシンにあるバックアップからサーバ上のライブDBに復元する必要があります。問題の行を選択するバックアップからのmysqlの部分的なリストア

私はBackupDatabaseなどから、このような何かをすることを計画:

SELECT * 
FROM access AS t1 
WHERE AccessId IN (
SELECT AccessId FROM access_completed AS t1 
WHERE (TIMEDIFF(CCompleteDateTime, "2011-01-24 02:00:00") < 23 AND TIMEDIFF(CCompleteDateTime, "2011-01-24 02:00:00") > 0) 
) 

私はライブデシベルに結果の行を挿入するにはどうすればよいですか?

+0

同じクエリで同時に実行しますか?もしそうなら、あなたは仕事をするための手続きを作成するほうがいいですね、望んだ時間に始めるために一つのトリガーを実行してください。何をしたいのですか? – B4NZ41

答えて

5

バックアップではSELECT ... INTO OUTFILEを、LOAD DATA INFILEではデータを読み込むことができます。

INTO OUTFILEは、MySQLがLOAD DATA INFILEを使用して解析できる形式で、選択したデータをローカルファイルにダンプします。だから、あなただけのダンプと、次のようにロードすることがあります。他のサーバー

そして、他のサーバー上にOUTFILE

SELECT * FROM [rest of your query] INTO OUTFILE '/tmp/outfile' 

コピー:

LOAD DATA INFILE /tmp/outfile' INTO TABLE access; 

をまたFEDERATEDで動作しますテーブル。これにより、メインサーバからバックアップデータベースに問い合わせることができます。あなたはINSERT INTO access ... SELECT ... FROM federated_access ...を行うことができます。

+0

素晴らしい - あなたは私の晩を救った – Muleskinner

関連する問題