0

私はMysqlデータのバックアップと復元システムに取り組んでいますが、それをどのように使用するかについては固執しています。私が考えるかもしれないオプション

テーブルワイズバックアップ方式

Dateandtimeとdirectoyを使用してディレクトリを作成すると、すべてのデータベースとそのテーブル名を含む1つの定義テキストファイルに加えて、テーブル構造とテーブルINSERTを含むテーブルごとに個別のファイルが作成されます。

テーブルワイズ復元方法

ディレクトリと定義ファイルを読み取って、日付とテーブル名に関してバックアップをソートします。ユーザーは、復元するすべてのテーブルまたは1つの特定のテーブルのいずれかを選択できます。

これらのバックアップファイルを別のサーバーに自動的にアップロードする必要があるため、この目的でPHPを使用します。

質問

1-上記のバックアップと復元の方法は有効ですか?

2-データベースごとに1つのファイルを書き込むことができるが、データベース内の選択されたテーブルまたはすべてのテーブルのみを復元する方法はありますか?

3-そのようなアプリケーションのために私が心に留めておかなければならない重要なポイントは何ですか?

あいまいな点があれば教えてください。

4

1 に答える 1

4

簡単なシェルスクリプトで mysqldump を試してみてください。テーブルをダンプするように拡張できます。データベースのみをダンプするようになりました。

#!/bin/bash

USER="username"
PASSWORD="password"
OUTPUTDIR="./"
MYSQLDUMP=`which mysqldump`
MYSQL=`which mysql`

# get a list of databases
databases=`$MYSQL --user=$USER --password=$PASSWORD \
 -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

# dump each database in turn
for db in $databases; do

    # skip internal databases
    if [ "$db" == "information_schema" ] || [ "$db" == "mysql" ]; then
        continue
    fi  

    # dump whole database 
    echo "$db"
    $MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD \
    --databases $db > "$OUTPUTDIR/$db.sql.bak"

    # get a list of tables inside database
    tables=`$MYSQL --user=$USER --password=$PASSWORD \
     -e "USE $db;SHOW TABLES;" | tr -d "| " | grep -v Tables_in_$db`

    # dump tables
    for tbl in $tables; do
        echo "$db.$tbl"
        $MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD \
         $db $tbl> "$OUTPUTDIR/$db.$tbl.sql.bak"
    done
done
于 2013-03-09T15:37:05.603 に答える