ホームページ データベース mysql チュートリアル MySQL の日次バックアップおよび増分バックアップ スクリプト

MySQL の日次バックアップおよび増分バックアップ スクリプト

Dec 02, 2016 pm 02:24 PM
mysql

適したオブジェクト

この記事は、Linux の mysql 4.1.14 バージョンでテストされており、適切な修正を加えた後、mysql 4.0、5.0 およびその他のバージョンにも適している可能性があります。

この記事は、レプリケーション機能を持たない mysql に適しています。レプリケーションが有効になっている場合、このバックアップ戦略を採用したり、関連するパラメーターを変更したりする必要はありません。

バックアップ戦略は人によって異なる可能性があるため、実際の状況に応じて変更し、1 つの例から推測してください。不必要な損失が発生する可能性があるため、コピーしてください。

このスクリプトの動作を理解していただければ幸いです!


スクリプトの説明

すべてのデータを 7 日ごとにバックアップし、binlog を毎日バックアップします。これは増分バックアップです。

(データは少ないので、1 日 1 回完全なデータをバックアップするだけです。増分バックアップを行う必要はないかもしれません)

作者はシェル スクリプトにあまり慣れていないため、多くの場所が非常に愚かに書かれています:)


有効にするbin ログ

mysql のバージョン 4.1 では、デフォルトではエラー ログのみが存在し、他のログはありません。設定を変更することで bin ログを開くことができます。その 1 つは、

[mysqld] を追加することです。
log-bin

このログの主な機能は増分バックアップまたはレプリケーションです (他の用途がある場合もあります)。

増分バックアップが必要な場合は、このログを開く必要があります。

頻繁にデータベース操作を行う mysql の場合、このログはデータベースのログに複数の

フラッシュが存在する可能性があります。または、mysqladmin、mysqldump を使用してフラッシュログを呼び出し、パラメータ delete-master-logs を使用すると、これらのログ ファイルは消え、新しいログ ファイルが表示されます。

そのため、バックアップしたことがない場合は有効にします。ログは必要ない場合があります。

完全バックアップと同時にフラッシュ ログを呼び出し、増分バックアップの前にフラッシュ ログを呼び出すことができます。最新のデータをバックアップするためのバックアップです。


完全なバックアップ スクリプト

データベースに大量のデータがある場合、通常は数日かかるか、データ量が多い場合はアプリケーションの動作への影響を避けるためにデータを週に 1 回バックアップします。比較的小さい場合は、1 日に 1 回データをバックアップしても問題ありません

#!/bin/sh

# by scud http://www. 2005-10-30
#
# use mysqldump --help、詳細を取得します。
#

BakDir=/backup/mysql

LogFile=/backup/mysql/mysqlbak.log


DATE=` date +%Y% m%d`

echo " " >> $LogFile

echo " " >> $LogFile

echo " ------ ----------" >> $LogFile
echo $(date +"%y-%m-%d %H :%M:% S") >> $LogFile
echo "--------------------------" >> $LogFile

cd $ BakDir


DumpFile=$DATE.sql

GZDumpFile=$DATE.sql.tgz


mysqldump --quick --all-databases --flush-logs

--delete-master-logs --lock -all-tables

> $DumpFile

echo "ダンプ完了" >> $LogFile

tar czvf $GZDumpFile $DumpFile >>&1

echo "[$GZDumpFile]バックアップ成功! " >> $LogFile

rm -f $DumpFile

#delete 以前の毎日のバックアップ ファイル: ファイルが完全にバックアップされると、増分バックアップ ファイルは削除されます。

cd $BakDir/daily


rm -f *

cd $BakDir

echo "バックアップが完了しました!"

echo "$BakDir ディレクトリを確認してください!"

echo "ローカル ディスクにコピーするか、ftp でどこかにコピーしてください !!!"

ls -al $BakDir

上記のスクリプトは、mysql をローカルの /backup/mysql ディレクトリにバックアップし、増分バックアップ ファイルは /backup/mysql/daily ディレクトリに配置されます。


注: 上記のスクリプトは、バックアップされたファイルを保存しません。他のリモート コンピューターに送信する場合、数日前のバックアップ ファイルは削除されません。ユーザーは、関連するスクリプトを追加するか、手動操作を実行する必要があります。

増分バックアップ


増分バックアップのデータ量は比較的少ないですが、削除する必要があります。完全バックアップに基づいてください。ユーザーは時間とコストを比較検討して、自分にとって最も有益な方法を選択できます。

増分バックアップは bin ログを使用します。スクリプトは次のとおりです:

#!/bin/sh


#

# mysql binlog バックアップ スクリプト

#

/usr/bin/mysqladmin flash-logs

DATADIR=/var/lib/mysql

BAKDIR=/backup/mysql/daily


###特別な設定を行った場合ここを変更するか、この変数を適用する行を変更してください: デフォルトではマシン名が使用され、mysql もデフォルトではマシン名を使用します

HOSTNAME=`uname -n`


cd $DATADIR

FILELIST=`cat $HOSTNAME-bin.index`

# #行数、つまりファイルの数を計算します

COUNTER=0

$FILELISTのファイルに対して
do
COUNTER=`expr $COUNTER + 1 `
done

$FILELIST のファイルの NextNum=0

do

base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $COUNTER ]
then
echo "skip lastest"
else
dest=$BAKDIR/$base
if(test -e $dest )
then
echo "$base の存在をスキップ"
else
echo "$base をコピーしています"
cp $base $BAKDIR
fi
fi
done

echo "backup mysql binlog ok"
増分バックアップ スクリプトは、バックアップ前にログをフラッシュし、メモリ内のログを自動的にファイルに保存し、新しいログ ファイルを生成するため、最初のログ ファイルのみをバックアップする必要があります。つまり、最後のバックアップはバックアップされていません
前回のバックアップから今回のバックアップまでに複数のログ ファイルが生成される可能性があるため、バックアップされている場合はそのファイルを検出する必要があります。

注: 同様に、ユーザー自身がリモートで送信する必要がありますが、完全なバックアップ後にプログラムが自動的に生成されます

。スクリプトを実行できるようにするには、対応するユーザー名とパスワード、mysqladmin と mysqldump を設定する必要があります。もちろん、これらはすべてスクリプト内に記述することができます。システムの root ユーザーを使用してこのスクリプトを実行すると仮定すると、変更するのは不便なので、/root (つまり、root ユーザーのホーム ディレクトリ) に .my.cnf ファイルを作成する必要があります。次の内容

[mysqladmin]

password =password
user= root
[mysqldump]
user=root
password=password
注: このファイルは root のみが読み取れるように設定してください (chmod 600 .my.cnf. )

このファイルは、プログラムがデータのバックアップに mysql の root ユーザーを使用することを説明しており、パスワードは対応する設定です。このように、スクリプトにユーザー名とパスワードを記述する必要はありません。自動的に実行する

バックアッププログラムを自動的に実行するには、crontabに追加する必要があります

1つは、/etc/cron.dailyや/etc/などのディレクトリにスクリプトを置く方法です。 1 つは、crontab -e を使用して、root ユーザーのスケジュールされたタスクに追加することです。たとえば、完全バックアップは毎週日曜日の午前 3 時に実行され、毎日のバックアップは毎週月曜日から土曜日まで実行されます。午前3時

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

NAVICATでデータベースパスワードを取得できますか? NAVICATでデータベースパスワードを取得できますか? Apr 08, 2025 pm 09:51 PM

NAVICAT自体はデータベースパスワードを保存せず、暗号化されたパスワードのみを取得できます。解決策:1。パスワードマネージャーを確認します。 2。NAVICATの「パスワードを記憶する」機能を確認します。 3.データベースパスワードをリセットします。 4.データベース管理者に連絡してください。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MariadBのNAVICATでデータベースパスワードを表示する方法は? MariadBのNAVICATでデータベースパスワードを表示する方法は? Apr 08, 2025 pm 09:18 PM

Passwordが暗号化された形式で保存されているため、MariadbのNavicatはデータベースパスワードを直接表示できません。データベースのセキュリティを確保するには、パスワードをリセットするには3つの方法があります。NAVICATを介してパスワードをリセットし、複雑なパスワードを設定します。構成ファイルを表示します(推奨されていない、高リスク)。システムコマンドラインツールを使用します(推奨されません。コマンドラインツールに習熟する必要があります)。

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

NAVICATでSQLを実行する方法 NAVICATでSQLを実行する方法 Apr 08, 2025 pm 11:42 PM

NAVICATでSQLを実行する手順:データベースに接続します。 SQLエディターウィンドウを作成します。 SQLクエリまたはスクリプトを書きます。 [実行]ボタンをクリックして、クエリまたはスクリプトを実行します。結果を表示します(クエリが実行された場合)。

NAVICATは、MySQL/Mariadb/PostgreSQLおよびその他のデータベースに接続できません NAVICATは、MySQL/Mariadb/PostgreSQLおよびその他のデータベースに接続できません Apr 08, 2025 pm 11:00 PM

NAVICATがデータベースとそのソリューションに接続できない一般的な理由:1。サーバーの実行ステータスを確認します。 2。接続情報を確認します。 3.ファイアウォール設定を調整します。 4.リモートアクセスを構成します。 5.ネットワークの問題のトラブルシューティング。 6.許可を確認します。 7.バージョンの互換性を確保します。 8。他の可能性のトラブルシューティング。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

See all articles