1

phpMyAdmin には、テーブル (またはデータベース) 全体を .SQL ファイルにエクスポートするオプションがあります。

データベースの毎日および毎週のバックアップを作成するためにCRONジョブに貼り付けたいので、彼らがこれを行う方法を理解できません。しかし、それを行う単一のコマンドはないようです - ありますか?

4

4 に答える 4

3

これらのコマンドを PHP で実行し、次のコードをファイルにコピーして、cron ジョブで実行できます。

<?php

//Backup:

//ENTER THE RELEVANT INFO BELOW
$mysqlDatabaseName ='databasename';
$mysqlUserName ='username';
$mysqlPassword ='password';
$mysqlHostName ='localhost';
//$mysqlExportPath ='database.sql';

$mysqlImportFilename ='myownsit_obsolcms.sql';

//DONT EDIT BELOW THIS LINE
//Export the database and output the status to the page
$command='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' < ' .$mysqlImportFilename;
exec($command,$output=array(),$worked);
switch($worked){
    case 0:
        echo 'Import file <b>' .$mysqlImportFilename .'</b> successfully imported to database <b>' .$mysqlDatabaseName .'</b>';
        break;
    case 1:
        echo 'There was an error during import. Please make sure the import file is saved in the same folder as this script and check your values:<br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr><tr><td>MySQL Import Filename:</td><td><b>' .$mysqlImportFilename .'</b></td></tr></table>';
        break;
}



//Restore:
$mysqlExportPath ='path_to_file/database.sql';

//DONT EDIT BELOW THIS LINE
//Export the database and output the status to the page
$command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' admin contents categires google_map cms_labels news pages page_contents partners photos plugins products social testimonials themes users youtube> ~/' .$mysqlExportPath;
//$command = "$ mysqldump -u $mysqlUserName -p $mysqlPassword $mysqlDatabaseName > myownsit_obsolcms.sql";
exec($command,$output=array(),$worked);
switch($worked){
    case 0:
        //echo 'Database <b>' .$mysqlDatabaseName .'</b> successfully exported to <b>~/' .$mysqlExportPath .'</b>';
        break;
    case 1:
        echo 'There was a warning during the export of <b>' .$mysqlDatabaseName .'</b> to <b>~/' .$mysqlExportPath .'</b>';
        break;
    case 2:
        echo 'There was an error during export. Please check your values:<br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr></table>';
        break;
}
?>
于 2013-03-05T12:45:55.930 に答える
2

ええ、mysqldump: http://linuxcommand.org/man_pages/mysqldump1.html

ただし、それを使用するにはサーバーへのアクセスが必要です。また、冒険心があり、一貫したバックアップを維持したい場合は、マスター/スレーブ設定に関する情報を調べてください。

于 2013-03-05T12:19:54.933 に答える
1

mysqldumpを使用する

  mysqldump -h hostname -u user -pPassword dbname >/path/to/file

ホストがローカルホストの場合、ホストはオプションです。一部の設定によっては、ユーザーとパスワードもオプションになる場合があります。日付名を追加することをお勧めします

  mysqldump -h hostname -u root mydb > /path/to/backup/$(date +%a)
于 2013-03-05T12:26:13.527 に答える
0

シェルスクリプトを作成し、cronジョブを介してそのスクリプトを呼び出すことができます。この作業例を参照してください

于 2013-03-05T12:21:37.457 に答える