2010-12-19 12 views
0

同じ定義の2つのテーブルがある場合、どのようにデータを毎日バックアップしますか?私はいくつかの変更がに行われるよう、それが増分バックアップであればそれは好ましいであろう あるテーブルから別のテーブルへのmySQLの毎日のバックアップ

  • をbackup_tableするmain_tableからすべての行をコピーし、午前12時00分で、毎日この

    • のようなものを実行するためのMySQL Administratorを使用することができますbackup_tableのreccordsと私はそれらの変更を一掃するために新しいバックアップをしたくありません。

    おかげ

  • 答えて

    2

    まずは、同じサーバー上のあるテーブルから別のテーブルへのデータのコピーはバックアップではありません。

    ここで、MySQL 5.1.6以降を使用している場合は、イベントスケジューラを使用してそのような動作をスケジュールできます。

    http://dev.mysql.com/doc/refman/5.1/en/events.html

    それはこの

    INSERT INTO 
        secondarydatabase.tableName 
    SELECT pr.* FROM 
        primarydatabase.tableName AS pr 
    LEFT JOIN 
        secondarydatabase.tableName AS sec 
    USING(primaryKeyColumn) 
    WHERE sec.primaryKeyColumn IS NULL 
    

    のようなクエリを実行しているのと同じくらい簡単でなければなりません(これは、新しい行をコピーします、既存の行の変更はコピーされません)

    実際のバックアップについては、

    http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html

    +0

    +1イベントスケジューラの場合。 – rkg

    0

    はい、あなたは間違いなくそれを行うことができます。 http://dev.mysql.com/doc/refman/5.0/en/batch-mode.html

    スクリプトを慎重に書くと、テーブルを削除せずに新しい行を挿入するだけでデータを失う心配がありません。テーブルの各行にタイムスタンプが格納されている場合は、作業が非常に簡単になります。タイムスタンプを使用して、最後のバッチ実行以降に変更または追加された新しい行をロード/更新することができます。

    ただし、挿入を行う前に、現在のテーブルのバックアップを作成することをお勧めします。インポートが成功した場合は、バックアップテーブルをクリーンアップすることができます。

    関連する問題