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 マルチページディレクトリパッケージ化手順の記録
Ubuntu にインストールされているバージョンをアンインストールします。 sudo apt-get...
この記事では、MySQL 8.0.15の詳細なインストールと使用方法のチュートリアルを参考までに紹介...
<br />前回のWebデザインチュートリアル:Webデザインチュートリアル(3):デザ...
サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...
目次1. 基本理論1.1 取引1.2 分散トランザクション2. 分散トランザクションソリューション2...
XHTML は CSS レイアウトの基礎です。jb51.net は常に XHTML 知識の習得を重視...
目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...
目次axiosとは何ですか? Axios リクエストタイプ? Axiosはデフォルトのカスタム構成を...
1. 設置環境Dockerは次のCentOSバージョンをサポートしていますCentOS 6.5 (6...
Kubernetes は、基本認証、トークン認証、CA 認証の 3 種類の認証をサポートしています。...
目次1. テスト実験2. 制限ページング問題に対するパフォーマンス最適化手法2.1 テーブルをカバー...
この記事では、Docker で新しいイメージを手動で構築する方法を紹介し、皆さんと共有します。詳細は...
Docker ネットワークの作成に –subnet を追加した後、docker network ls...
目次1. インストール2. videojsの紹介3. コンポーネントでのテストと使用1. 基本的な自...
目次背景1. 思考分析2. ページ構成2.1 HTML レイヤー2.2 CSS レイヤー2.3 JS...