ホームページ  >  記事  >  バックエンド開発  >  シェルが毎日自動的に mysql データベースをバックアップする方法の例

シェルが毎日自動的に mysql データベースをバックアップする方法の例

小云云
小云云オリジナル
2018-03-14 10:36:182000ブラウズ

この記事では主に、シェルが毎日 mysql データベースを自動的にバックアップする方法の例を紹介します。お役に立てば幸いです。

推奨される関連する mysql ビデオ チュートリアル: "mysql チュートリアル"

1. Mysql は、データベース情報を簡単にエクスポートおよびインポートできる mysqldump ツールを提供します

2. コマンド ライン シェルを使用して mysqldump をテストおよび実行します。必要なパラメータを理解して、生成された SQL バックアップ ファイルが要件を満たしているかどうかを確認します。

1. /usr/bin/mysqldump を実行します。

2. , 拡張挿入パラメータとロックテーブルパラメータの総称が一般的に使用されます。
3. -u データベースユーザー名 -p データベースユーザーパスワード -h エクスポートされたファイルのパス; 4. 「date +%F」は、2015-11-05 などの形式でシェルで生成された現在の日付です。したがって、正常にエクスポートされたときに生成されるファイル名は db_2015-11-05.sql です。生成された SQL ファイルをテキスト エディターで開き、テスト データベースをローカルにインポートして、問題があるかどうかを確認します。

3. 再利用しやすいように、より柔軟なシェル スクリプトを整理して作成します。

/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sql

/usr/local/apache/htdocs/timepusher/sqlBak/sqlAutoBak.sh

4. シェル スクリプトをテストします

1. スクリプト ファイル ディレクトリ chmod +x sqlAutoBak.sh を入力して、実行権限を追加します。そうでない場合は、「権限が拒否されました」というエラーが表示されます。報告される

2. ./sqlAutoBak.sh の場合、Windows でファイルの書き込みとアップロードを行うとエラーが報告される可能性があります

#!/bin/sh# Database infoDB_USER="batsing"DB_PASS="batsingpw"DB_HOST="localhost"DB_NAME="timepusher"# Others varsBIN_DIR="/usr/bin"           
 #the mysql bin pathBCK_DIR="/mnt/mysqlBackup"    
 #the backup file directoryDATE=`date +%F`
 # TODO# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > 
 /mnt/mysqlBackup/db_`date +%F`.sql$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > 
 $BCK_DIR/db_$DATE.sql#还原数据库#用mysql-front导入前一天的 *.sql 文件即可恢复数据

これは、システムのエンコード形式の違いが原因で発生します。Windows システムで編集された .sh ファイルには、目に見えない文字が含まれている可能性があります。そのため、Linux システムで実行すると、上記の例外メッセージが報告されます。 Windows で Notepad++ を使用して Unix 形式に変換できます (メニューで [編集] > [ファイル形式変換] > [UNIX に変換] を選択します)

3. 変更後、./sqlAutoBak.sh をアップロードして実行を続けますが、エラーは報告されません。エクスポートされたSQLファイルを再度確認してください。

5. mysql バックアップ データを圧縮します


1. エクスポートされた SQL ファイルを確認し、そのファイル サイズが非常に大きいことを確認します

2. sqlAutoBak.sh を次のように変更します。 3. 変更後、アップロードして ./sqlAutoBak.sh の実行を続行しても、エラーは報告されません。エクスポートされた *.sql.gz ファイルをテキスト エディターを使用して表示すると、大量の文字化けが発生するはずです。

4. ローカルにダウンロードし、解凍ソフトウェアで開くと、中に実際の *.sql ファイルが表示されます。



6. このスクリプトを実行するために Linux のスケジュールされたタスクを設定します。

1. スケジュールされたタスクのリストを編集します

/bin/sh^M: bad interpreter: No such file or directory
2. 通常、Web サイトは 5 時にトラフィックが最も少ないため、次の行を挿入します。 。

#!/bin/sh# Database infoDB_USER="batsing"DB_PASS="batsingpw"DB_HOST="localhost"DB_NAME="timepusher"# Others varsBIN_DIR="/usr/bin"            
#the mysql bin pathBCK_DIR="/mnt/mysqlBackup"    
#the backup file directoryDATE=`date +%F`
# TODO# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > 
/mnt/mysqlBackup/db_`date +%F`.sql# $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > 
$BCK_DIR/db_$DATE.sql$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME | gzip > 
$BCK_DIR/db_$DATE.sql.gz# 还原数据库# 把 *.sql.gz 使用gunzip 或 本地的解压软件 
解压为 *.sql 文件# 用mysql-front导入前一天的 *.sql 文件即可恢复数据

3. タスクが正常に作成されたか確認します

crontab -e

7. 翌日、自動生成されたSQLファイルが要件を満たしているか確認します

生成されたファイルに問題がなければ、このスクリプトを解凍します。スケジュールされたデータベースのバックアップは完了したとみなされます。生成されたファイルが多すぎると一定のスペースが占有されるため、ファイルを定期的に (たとえば、月に 1 回) クリーンアップすることをお勧めします。

$、補足

1. データベースのユーザーにテーブルをロックする権限が割り当てられていない場合、LOCK TABLES を使用するとバックアップでエラーが報告されます。これは、mysqldump コマンドがエクスポート時にデフォルトでテーブルをロックするためで、解決策は 2 つあります。 1 つはユーザーにロック テーブルを開く権限を与えることであり、もう 1 つはコマンドに --skip-lock-tables パラメータを追加することです。つまり:

00 05 *   * * /bin/sh /usr/local/apache/htdocs/timepusher/sqlBak/sqlAutoBak.sh#每天早上 5:00am 执行

関連する推奨事項:

ワンクリックで mysql データベースを自動的にバックアップする方法を説明する 3 つのステップ_MySQL

Linux 自動バックアップ MySQL データベースのスクリプト コード_MySQL

シェルを使用して mysql データベースを自動的にバックアップする定期的に _MySQL

以上がシェルが毎日自動的に mysql データベースをバックアップする方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。