データベースアプリケーション:MySQLインクリメンタルバックアップとリカバリ
10088 ワード
前言:インクリメンタルバックアップとリカバリの方法は、完全なバックアップに基づいて、バックアップのファイルサイズを減らし、バックアップとリカバリの速度を速めることができます.
文書ディレクトリ一、MySQLインクリメンタルバックアップ 1.インクリメンタル・バックアップの概念 1)原因 2)特徴
二、MySQL増分回復 1.インクリメンタルリカバリ方法 1)インクリメンタルリカバリのステップ 2)インクリメンタルリカバリ方式 一般回復 ブレークポイントリカバリ
三、詳細操作 1.物理コールド・バックアップ 2.バイナリログファイル を開く 3.作成とバックアップ 4.操作 5.表示 6.シミュレーション障害 7.リカバリ 1)時点ベースのブレークポイントリカバリ を使用する.2)位置ベースのブレークポイントリカバリ を使用する.
まとめ
一、MySQLインクリメンタルバックアップ
1.インクリメンタルバックアップの概念
1)原因まず、フルバックアップには2つの方法があります. tarを使用してデータファイル をパッケージングする. myqldumpによる完全バックアップ 完全バックアップは毎回すべてのデータ内容をバックアップし、バックアップデータには大量の重複データがあり、完全バックアップの時間とリカバリの時間が長い である.インクリメンタルバックアップは、前回のバックアップ以降に追加または変更されたファイルまたはコンテンツをバックアップすることであり、完全バックアップに存在する問題を解決することができる .
2)特徴の利点 重複データがなく、バックアップ量が少なく、時間が短い の欠点 前回のフル・バックアップおよびフル・バックアップ後のすべてのインクリメンタル・バックアップが必要で、 をリカバリできます.
MySQLでは、直接的なインクリメンタルバックアップ方法は提供されていませんが、MySQLのバイナリによって間接的にインクリメンタルバックアップを実現できます.バイナリ・ログのバックアップの意味は次のとおりです. バイナリ・ログには、すべての更新またはデータベースの更新が可能なアクション が保存されています.バイナリ・ログは、MySQLサーバの起動後に記録を開始し、ファイルがmax_に達したときに記録を開始します.binlog_sizeが設定したサイズまたはflush logsコマンドを受信した後に新しいログファイル を再作成する flush logsメソッドをタイミングよく実行して新しいログを再作成し、バイナリファイルシーケンスを生成し、これらのログを安全な場所に保存するだけで、1つの期間のインクリメンタルバックアップ が完了します.
二、MySQL増分回復
1.インクリメンタル・リカバリの方法
1)インクリメンタルリカバリの手順データの追加–フル・バックアップの実行–新しいデータの入力–インクリメンタル・バックアップの実行–障害のシミュレーション–リカバリ・オペレーション 2)増分回復方式
一般的なリカバリ
ブレークポイントリカバリ位置回復 に基づくポイント・イン・タイム・リカバリに基づく
三、詳細操作
1.物理コールドバックアップ
2.バイナリログファイルを開く
3.作成とバックアップライブラリとテーブルを作成し、完全バックアップとインクリメンタルバックアップ を行います.
4.操作通常動作とエラー動作を1回操作し、インクリメンタルバックアップ を行う.
5.表示インクリメンタルバックアップファイルを表示
6.模擬故障は、障害をシミュレートし、テーブルを削除し、 をリカバリします.
7.回復
1)ポイント・イン・タイム・ポイント・ベースのブレークポイント・リカバリの使用
2)位置ベースのブレークポイント・リカバリの使用
まとめ MySQLでは、インクリメンタル・バックアップを直接提供するツールはありません.バイナリ・ログ・ファイルを使用して操作する必要があります. ログ分割方式によるインクリメンタルバックアップ インクリメンタル・リカバリは、ログ・ファイルの時間順に を1つずつ実行する必要があります.は、時間と位置に基づいて復元することにより、データ をより正確に復元することができる.大企業は週に1回全備を行い、毎日1回増分バックアップを行うべきである.中小企業は1日に1回全備 を行うべきである.
文書ディレクトリ
一、MySQLインクリメンタルバックアップ
1.インクリメンタルバックアップの概念
1)原因
2)特徴
二、MySQL増分回復
1.インクリメンタル・リカバリの方法
1)インクリメンタルリカバリの手順
一般的なリカバリ
mysqlbinlog [--no-defaults] | mysql -u -p
ブレークポイントリカバリ
// ,
:
mysqlbinlog --stop-position=' id' |mysql -u -p
:
mysqlbinlog --start-position=' id' |mysql -u -p
// , ,
:
mysqlbinlog [--no-defaults] --stop-datetime=' - - : : ' |mysql -u -p
:
mysqlbinlog [--no-defaults] --start-datetime=' - - : : ' |mysql -u -p
:
mysqlbinlog [--no-defaults] --start-datetime=' - - : : ' --stop-datetime=' - - : : ' |mysql -u -p
三、詳細操作
1.物理コールドバックアップ
[root@localhost ~]# tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data
[root@localhost ~]# ls /opt
mysql-2020-02-10.tar.xz mysql-5.7.17 rh
[root@localhost ~]# systemctl start mysqld //
2.バイナリログファイルを開く
[root@localhost ~]# vim /etc/my.cnf
// [mysqld] log-bin=mysql-bin
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
log-bin=mysql-bin //
...
[root@localhost ~]# systemctl restart mysqld //
[root@localhost ~]# ls /usr/local/mysql/data/
...
mysql-bin.000001 // ,
3.作成とバックアップ
[root@localhost data]# mysql -uroot -p
Enter password: //
mysql> create database ku; //
Query OK, 1 row affected (0.00 sec)
mysql> use ku; //
Database changed
mysql> create table biao (id int(4) primary key,name char(10)); //
Query OK, 0 rows affected (0.00 sec)
mysql> insert into biao values(1,'wangwu'),(2,'zhaoliu'); //
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from biao;
+----+----------+
| id | name |
+----+----------+
| 1 | wangwu |
| 2 |zhaoliu |
+----+----------+
2 rows in set (0.00 sec)
mysql>exit
[root@localhost data]# mysqldump -uroot -p ku > /opt/ku.sql //
Enter password:
[root@localhost data]# mysqladmin -uroot -p flush-logs //
Enter password:
[root@localhost data]# cd /usr/local/mysql/data/
[root@localhost data]# ls
mysql-bin.000001 mysql-bin.000002
// mysql-bin.000001 , mysql-bin.000002
4.操作
mysql> insert into biao values(3,'tianqi'); //
Query OK, 1 row affected (0.00 sec)
mysql> delete from biao where name='tianqi'; //
Query OK, 1 row affected (0.00 sec)
mysql> insert into biao values(4,'changzhi'); //
Query OK, 1 row affected (0.00 sec)
mysql> select * from biao;
+----+----------+
| id | name |
+----+----------+
| 1 | wangwu |
| 2 | zhaoliu |
| 4 | changzhi |
+----+----------+
3 rows in set (0.00 sec)
mysql> exit
Bye
[root@localhost data]# mysqladmin -uroot -p flush-logs; //
Enter password:
[root@localhost data]# ls // ysql-bin.000003
mysql-bin.000001 mysql-bin.000002 mysql-bin.000003
// mysql-bin.000002
5.表示
[root@localhost data]# mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 > /opt/bak.txt
[root@localhost data]# vim /opt/bak.txt //
...
# at 343 //
#200108 0:29:18 server id 1 end_log_pos 390 CRC32 0x9ada4ac9 Write_rows: table id 219 flags: STMT_END_F
### INSERT INTO `ku`.`biao`
### SET
### @1=3
### @2='tianqi'
# at 390
。。
# at 558 // ,558 id,200108 0:29:56 ,
#200108 0:29:56 server id 1 end_log_pos 610 CRC32 0xb990c664 Table_map: `ku`.`biao` mapped to number 219
# at 610
#200108 0:29:56 server id 1 end_log_pos 657 CRC32 0x1738ac5d Delete_rows: table id 219 flags: STMT_END_F
### DELETE FROM `ku`.`biao`
### WHERE
### @1=3
### @2='tianqi'
# at 657
...
# at 825 // ,825 id,200108 0:30:11 ,
#200108 0:30:11 server id 1 end_log_pos 877 CRC32 0x89f71cba Table_map: `ku`.`biao` mapped to number 219
# at 877
#200108 0:30:11 server id 1 end_log_pos 925 CRC32 0xae064160 Write_rows: table id 219 flags: STMT_END_F
### INSERT INTO `ku`.`biao`
### SET
### @1=4
### @2='changzhi'
# at 925
#200108 0:30:11 server id 1 end_log_pos 956 CRC32 0xe6213e68 Xid = 57
...
6.模擬故障
[root@localhost data]# mysql -uroot -p
Enter password:
mysql> drop table biao; //
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
Empty set (0.00 sec)
mysql> source /opt/ku.sql; //
mysql> show tables; //
+----------------+
| Tables_in_ku |
+----------------+
| biao | //
+----------------+
1 row in set (0.00 sec)
mysql> select * from biao; //
+----+----------+
| id | name |
+----+----------+
| 1 | wangwu |
| 2 | zhaoliu |
+----+----------+
2 rows in set (0.00 sec)
7.回復
1)ポイント・イン・タイム・ポイント・ベースのブレークポイント・リカバリの使用
[root@localhost data]# mysqlbinlog --no-defaults --stop-datetime='2020-01-08 0:29:56' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p
// 2020-01-08 00:29:56, ,
// 5
Enter password:
[root@localhost data]# mysql -u root -p
Enter password:
mysql> use ku;
mysql> select * from biao; // ,
+----+----------+
| id | name |
+----+----------+
| 1 | wangwu |
| 2 | zhaoliu |
| 3 | tianqi |
+----+----------+
3 rows in set (0.00 sec)
[root@localhost data]# mysqlbinlog --no-defaults --start-datetime='2020-01-08 00:30:11' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p
// , 。 2020-01-08 00:30:11, ,
// 5
Enter password:
[root@localhost data]# mysql -u root -p
Enter password:
mysql> use ku;
mysql> select * from biao; // ,
+----+----------+
| id | name |
+----+----------+
| 1 | wangwu |
| 2 | zhaoliu |
| 3 | tianqi |
| 4 | changzhi |
+----+----------+
4 rows in set (0.00 sec)
2)位置ベースのブレークポイント・リカバリの使用
//
mysql> delete from biao where id=3;
Query OK, 1 row affected (0.01 sec)
mysql> delete from biao where id=4;
Query OK, 1 row affected (0.00 sec)
mysql> select * from biao;
+----+----------+
| id | name |
+----+----------+
| 1 | wangwu |
| 2 | zhaoliu |
+----+----------+
2 rows in set (0.00 sec)
mysql> exit
[root@localhost data]# mysqlbinlog --no-defaults --stop-position='558' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p
// 558, 610, 558
// 5
Enter password:
[root@localhost data]# mysql -u root -p
Enter password:
mysql> use ku;
mysql> select * from biao; // ,
+----+----------+
| id | name |
+----+----------+
| 1 | wangwu |
| 2 | zhaoliu |
| 3 | tianqi |
+----+----------+
3 rows in set (0.00 sec)
[root@localhost data]# mysqlbinlog --no-defaults --start-position='825' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p
// 825, 877, 825
// 5
Enter password:
[root@localhost data]# mysql -u root -p
Enter password:
mysql> use yiku;
mysql> select * from yibiao; // ,
+----+----------+
| id | name |
+----+----------+
| 1 | wangwu |
| 2 | zhaoliu |
| 3 | tianqi |
| 4 | changzhi |
+----+----------+
4 rows in set (0.00 sec)
まとめ