Windows環境:MySQLの完全および増分バックアップとデータベースデータの復元を実際に

1.環境への備え

1.MySQL環境のインストール

MySQLデータベースのバックアップおよび復元操作を実行するときは、MySQL環境を事前にインストールしておく必要があり、MySQLサービスが正常に開始されています。

(1)MySQL環境がインストールされていない場合は、次のブログを参照できます。https//blog.csdn.net/weixin_43184774/article/details/106020174
(2)MySQL環境が正常にインストールされている場合は、実行を開きます。ウィンドウに入力し、services.mscと入力してWindowsサービスウィンドウを開き、MySQLがオンになっているかどうかを確認します。有効になっていない場合は、手順(1)のドキュメントを参照してMySQLサービスを有効にしてください。


 

2.ログビンログ構成を追加します

(1)MySQLインストールディレクトリでmy.ini構成ファイルを見つけます。

(2)my.ini構成ファイルを開き、my.iniファイルの[mysqld]の下に行を追加します。

log-bin = mysql-bin 

(3)MySQLサービスを再起動すると、MySQLインストールディレクトリのデータディレクトリにmysql-bin.000001ログファイルが生成されます。

備考: mysql-bin.00000Xログファイルは、後続の増分データベース復元操作に使用されます。このファイルは、スケジュールされたタスクに従って自動的に生成できます。

(4)MySQLオペレーティング環境を開き、次のコマンドを実行して、log-binがオンになっているかどうかを確認します。ステータスがオンの場合は、正常にオンになっていることを意味します。

show variables like 'log_bin';

2つ目は、テストデータベースとテーブルを作成することです。

1.テストデータベースを作成します

(1)MySQL環境にログインし、クラスデータベースを作成します。コマンドは次のとおりです。

create database class character set gbk;

(2)MySQLインストールディレクトリのデータディレクトリを入力すると、正常に作成されたデータベースファイルが表示されます

(3)クラスデータベースを作成した後、このデータベースを使用するには、コマンドを実行します

use class


2.テストデータテーブルを作成します
 

(1)次のコマンドを入力して、学生テーブルを作成します

CREATE TABLE student

(

  id INT unsigned not null auto_increment primary key,

  username VARCHAR(8) not null

);



(2)以下のコマンドを実行して、新しく作成した学生テーブルを表示します。この時点で、学生はデータのない空のテーブルです。

SELECT *FROM student;

(3)次のコマンドを実行して、studentテーブルにデータを挿入します。

insert into student values(1,'张学友');
insert into student values(2,'刘德华');

(4)データ挿入コマンド実行後のstudentテーブルこの時点で、studentテーブルには2つのデータがあります。

SELECT *FROM student;


 

3、データベースの完全バックアップと復元

1.完全バックアップデータベース

(1)cmdウィンドウを開き、MySQLインストールディレクトリのbinディレクトリにcdします。

(2)binディレクトリで次のコマンドを実行して、作成したばかりのクラスデータベースの完全バックアップを実行します。

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 class student > "D:\beifen20201119.sql"

説明:
①-- host= 127.0.0.1は、バックアップするデータベースのIPアドレスです
②-- port= 3306データベースのポート番号
" D :\ beifen20201119.sql "フルクラスのデータベースをルートディレクトリにバックアップします。ディスクD、およびbeifen20201119.sql呼び出され、それに名前を付ける
クラスの学生がバックアップするデータベースやテーブルの名前です。あなたは、クラスの完全なデータベースをバックアップすることができ、またはあなたが個別に学生テーブルをバックアップすることができます。注:バックアップドライブの文字は、MySQLインストールディレクトリと同じディスク上にある必要があります。文字内にある場合は、次のプロンプトが表示されます:アクセスが拒否されました 

(3)バックアップに不要なテーブル操作:
構文:

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 dbname --ignore-table=dbname.table1 --ignore-table=dbname.table2 > ./db_files/test.sql


例:

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 class --ignore-table=class.student > "D:\beifen20201124.sql

(4)バックアップが完了すると、対応するディレクトリにSQLファイルが自動的に生成され、ディレクトリに入り、完全なバックアップデータベースを表示します。

(5)上記の手順を.batバッチスクリプトファイルにカプセル化し、ダブルクリックしてバッチファイルを実行し、完全バックアップデータベースを実行できます。
完全バックアップデータベーススクリプトは次のとおりです。注:これは次のように構成する必要があります。実際の設定にスクリプトファイル

rem Auther By Anker
rem date:20201119
rem ******Backup MySQL Start******
@echo off
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"

::创建存储的文件夹
if not exist "D:\mysql_backup" md "D:\mysql_backup"

::执行备份操作
"D:\software\MySQL\mysql-8.0.22-winx64\bin\mysqldump" --opt --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "class" >D:\software\beifen_%Ymd%.sql

::删除90天前的备份数据
forfiles /p "C:\mysql_backup" /m backup_*.sql -d -90 /c "cmd /c del /f @path"

@echo on
rem ******Backup MySQL End******

2.データベースを完全に復元します 

(1)以下のコマンドを実行して、事前に作成したクラスデータベースを削除します。

drop database class;

(2)次のコマンドを実行して、studentテーブルをクエリすると、クラスデータベースが見つかりません。

SELECT *FROM student;

(3)前の手順でdropコマンドを実行したため、データベースのデータと構造をすべて削除することになります。このとき、復元操作を行う前に、データベースの構造を再作成する必要があります。したがって、create databaseコマンドを再度実行してから、このクラスデータベースを使用します。つまり、クラスを使用します。

create database class character set gbk; 
use class

(4)以下のコマンドを実行して、削除したクラスデータベースを復元します。

source D:\beifen20201119.sql

(5)次のコマンドを再度実行して、学生テーブルをクエリします。前の学生テーブルのデータが戻っていることがわかります。 

SELECT *FROM student;

4、増分バックアップとデータベースの復元

1.増分バックアップデータベース

(1)次のコマンドを実行し、さらに2つのデータをstudentテーブルに挿入します

insert into student values(3,'郭富城');
insert into student values(4,'黎明');

 

(2)queryコマンドを実行して、studentテーブルにクエリを実行します。この時点で、さらに2つのデータが見つかります。

SELECT *FROM student;

 

(3)truncate student;コマンドを実行して、studentテーブルのデータを削除します。
特別な注意:drop student;コマンドを実行すると、studentテーブルの構造とデータ全体が削除され、現時点では全額のみを復元できます。

truncate student;

 

(4)もう一度queryコマンドを実行してstudentテーブルにクエリを実行すると、studentテーブルにデータがないことがわかります。

SELECT *FROM student;

(5)上記の手順を.batバッチスクリプトファイルにカプセル化し、ダブルクリックしてバッチファイルを実行し、データベースの増分バックアップを実行できます。
増分バックアップデータベーススクリプトは次のとおりです。注:設定する必要あります。独自の実際の設定に従って、このスクリプトファイルを構成します

rem Auther By Anker
rem date:20201119
rem ******Backup MySQL Start******
@echo off
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"

::执行增量备份操作
mysqladmin -u root -p123456 flush-logs

@echo on
rem ******Backup MySQL End******

2.データベースのインクリメンタルリカバリ 

(1)インクリメンタルリカバリを実行する前に、最初にフルリカバリを実行して、データベースデータを一定期間内に最新のデータに復元する必要があります。つまり、次のコマンドを実行します。sourceD:\ beifen20201119.sql

(2)クエリコマンドを再度実行して学生テーブルをクエリすると、前の学生テーブルのデータが再び戻ってきますが、テーブルのデータはJackyCheungとAndyLauのみであり、GuoFuchengとGuoFuchengは追加されていません。後で石灰化。

SELECT *FROM student;

 

(3)新しく追加されたGuo FuchengおよびLimingデータを復元する場合は、bin-logファイルを使用する必要があります。つまり、mysql環境で次のコマンドを実行します

show binlog events in 'mysql-bin.000001';

 

(4)binlogコンテンツに記録された夜明けデータの開始位置と終了位置を表示します

(5)MySQLインストールディレクトリのデータディレクトリで以下のコマンドを実行し、データディレクトリにバックアップする必要のあるbi​​n-logファイルをSQLファイルに変換します。

mysqlbinlog --no-defaults mysql-bin.000001 --start-position=3898 --stop-position=4034 > d:\\zengliang.sql

(6)このとき、Dドライブが自動的にzengliang.sqlファイルを生成することがわかります。

(7)以下のコマンドを実行して、削除した夜明けデータを復元します。

source d://zengliang.sql

(8)クエリコマンドを再度実行して学生テーブルをクエリすると、前の学生テーブルの夜明けのデータが再び戻ってきます。

SELECT *FROM student;

5、定期的にバックアップタスクを実行します

(1)スタートプログラム検索リストで「タスクスケジューラ」を検索して開きます

(2)タスクスケジューラを開いた後、右側の「基本タスクの作成」をクリックし、スケジュールされたタスクの名前と説明を入力します

(3)名前を任意に選択し、「次へ」をクリックします

(4)必要に応じて、タイミング実行期間をクリックして選択し、「次へ」をクリックします。

(5)必要な実行時間を設定し、「次へ」をクリックします

(6)「プログラムの開始」を選択し、「次へ」をクリックします

(7)完成したバックアップスクリプトファイルを参照して選択し、[次へ]をクリックします

(8)情報が正しいことを確認したら、「完了」をクリックします。

(9)時間指定タスクが作成された後、作成したタスクがタスクリストに表示され、タスクを右クリックしてタスクを削除できます。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_43184774/article/details/109830081