MySQL データベースの増分バックアップを実行するには、データベース構成ファイル /etc/my.cnf を変更して bin-log 機能を有効にするだけです。次に、インターネットでいくつかの方法を参考にして、自分で書いてみました。主なことは、彼のアイデアと方法のいくつかを学ぶことでした。 #機能: MYSQL 増分バックアップ #バージョン: 1.0.0 #著者:wangyanlin #日付: 2017/08/02 #------------------------------------------------------------------------------------------------- #!/bin/sh エクスポート LANG=en_US.UTF-8 #時刻を設定 DATE=`date +%Y%m%d` #情報の設定 USER=root パスワード=withub #パスを設定する cd / /usr/bin/mkdir -p mysql_bak/daily /usr/bin/mkdir -p mysql_bak/logs バックアップディレクトリ=/mysql_bak/daily バイナリディレクトリ=/var/lib/mysql ログファイル=/mysql_bak/logs/Daily_$DATE.log バイナリログファイル=/var/lib/mysql/mysql-bin.index /usr/bin/mysqladmin -u$USER -p$PASSWORD flush-logs #ログをフラッシュ Counter=`wc -l $BinlogFile | awk '{print $1}'` 次の番号=0 start_time=`日付 +'%Y-%m-%d %H:%M:%S'` echo `date +"%Y 年%m 月%d 日%H:%M:%S"` $Next1 バックアップ開始! >> $LogFile #この for ループは、$Counter と $NextNum の 2 つの値を比較して、ファイルが存在するか、最新であるかを判断するために使用されます。 `cat $BinlogFile` 内のファイル する base=`ベース名 $file` #basename は、mysql-bin.00000* ファイル名をインターセプトし、./mysql-bin.000005 の前の ./ を削除するために使用されます。 NextNum=`式 $NextNum + 1` if [ $NextNum -eq $Counter ] それから echo $base スキップ! >> $LogFile それ以外 宛先=$BakDir/$base if(テスト -e $dest) #test -e は、対象ファイルが存在するかどうかを検出するために使用されます。存在する場合は、$LogFile に existing! を書き込みます。 それから echo $base が存在します! >> $LogFile それ以外 cp $BinDir/$base $BakDir echo $base をコピー >> $LogFile フィ フィ 終わり echo `date +"%Y 年%m 月%d 日%H:%M:%S"` $Next2 バックアップ成功! >> $LogFile end_time=`日付 +'%Y-%m-%d %H:%M:%S'` start_seconds=$(date --date="$start_time" +%s); end_seconds=$(date --date="$end_time" +%s); echo "このバックアップの実行時間: "$((end_seconds-start_seconds))"s" >> $LogFile スケジュールされたタスクを追加します。 crontab -e 00 03 * * * /root/MySQL_incrementbak.sh #毎日午前3時に増分バックアップを開始する ログ印刷の効果は次のとおりです。 PS: MySQLのフルバックアップと増分バックアップのスクリプトを見てみましょう 全額: [root@master leo]# cat DBfullBak.sh #!/bin/bash #mysqldump を使用して mysql データを完全にバックアップする バックアップディレクトリ=/root/leo/full ログファイル=/root/leo/full/bak.log 日付=`date +%Y%m%d` 開始=`日付 +"%Y 年%m 月%d 日%H:%M:%S"` cd $BakDir ダンプファイル=$Date.sql GZDumpFile=$Date.sql.tgz mysqldump -uroot -p123456 --all-databases --lock-all-tables --routines --triggers --events --master-data=2 --flush-logs > $DumpFile tar zcvf $GZDumpFile $DumpFile rm $ダンプファイル 最終=`日付 +"%Y 年%m 月%d 日%H:%M:%S"` echo 開始: $Begin 終了: $Last $GZDumpFile succ >> $LogFile パラメータに関する注記: --all-databases #すべてのデータベースをバックアップします --lock-all-tables #すべてのテーブルに読み取りロックを追加します --routinge #ストアドプロシージャと関数 --triggers #トリガー --events #イベントを記録します --master-data=2 #バックアップファイルに現在のバイナリログの位置を記録し、注釈を付けます。1はコメントアウトされておらず、マスタースレーブレプリケーションで意味があります --flush-logs #ログを1回ロールします 結果は次のとおりです。 [ルート@マスター フル]# ls 20140728.sql.tgz バックアップログ [root@master full]# cat bak.log 開始: 2014-07-28 19:02:59 終了: 2014-07-28 19:02:59 20140728.sql.tgz succ 開始: 2014-07-28 19:12:01 終了: 2014-07-28 19:12:01 20140728.sql.tgz succ [root@master フル]# 増分バックアップ: [root@master leo]# cat DBDailyBak.sh #!/bin/bash バックアップディレクトリ=/root/leo/binlog/ バイナリディレクトリ=/var/lib/mysql ログファイル=/root/leo/binlog/bak.log バイナリファイル=/var/lib/mysql/mysql-bin.index mysqladmin -uroot -p123456 ログをフラッシュする カウンター=`wc -l $BinFile|awk '{print $1}'` 次の番号=0 `cat $BinFile` 内のファイル する base=`ベース名 $file` NextNum=`式 $NextNum + 1` if [ $NextNum -eq $Counter ] それから echo $base スキップ! >> $LogFile それ以外 宛先=$BakDir/$base if(テスト -e $dest) それから echo $base が存在します! >> $LogFile それ以外 cp $BinDir/$base $BakDir/ echo $base をコピー >> $LogFile フィ フィ 終わり echo `date +"%Y 年%m 月%d 日%H:%M:%S"` $Next Bakup succ~ >> $LogFile 要約する 上記は、編集者が紹介した MySQL データベースの増分バックアップのアイデアと方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: ポートマッピング後に Docker コンテナが突然接続に失敗する問題のトラブルシューティング プロセス
>>: Vue-CLI マルチページディレクトリパッケージ化手順の記録
一緒に学びましょう1. 伝統的な方法コードをコピーコードは次のとおりです。 <object c...
目次需要背景Nginx を使用する理由は何ですか? Nginx によるポート転送依存関係をインストー...
目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...
組織内で何らかのパスワード ポリシーがすでに実装されている場合は、この記事を読む必要はありません。た...
このブログでは、Docker をインストールするプロセスを簡単な手順で説明します。Docker のイ...
JBoss は Tomcat を Web コンテナとして使用するため、JBoss の Web コンテ...
1. RPM パッケージのインストール手順: 1. soft.version.rpm などの対応する...
1. jmeterの基本イメージを構築するDockerfile は次のとおりです。 # Java 8...
MySQL ストアド プロシージャは、確かに、非常にまれな使用シナリオのように見えます。この問題は、...
1998 年の CSS2 勧告の時点で、テーブルは徐々に舞台から消え、歴史の中に記録されるようになり...
この記事では、テーブル内のデータを追加、削除、変更するためのvue要素の具体的なコードを参考までに共...
序文1. この記事で使用したツールは、https://github.com/gianlucabore...
目次序文1. ラベルスタイルを定義する2. GeoJSONデータのシミュレーション3. Vercto...
この記事の例では、ショッピングカートの加算と減算、価格計算を実装するためのjsの具体的なコードを共有...
Vueにaxiosを挿入する 'axios' から axios をインポートします。...