100 lines
3.5 KiB
Plaintext
100 lines
3.5 KiB
Plaintext
# MySQL バックアップ&リストア演習
|
||
|
||
## 前提知識
|
||
#### MySQLの設定ファイル
|
||
C\ProgramData\MySQL\MySQL Server 8.0\my.ini
|
||
バイナリログの名前が書かれている場所は「log-bin」で検索すると表示される。
|
||
|
||
#### 差分/増分バックアップされたファイル(バイナリログ)の場所
|
||
C\ProgramData\MySQL\MySQL Server 8.0\Data
|
||
|
||
#### 現在の差分/増分バックアップに使っているファイル名を確認
|
||
(rootで)SHOW MASTER STATUS;
|
||
|
||
## 演習準備1 フルバックアップ編
|
||
- Windows環境変数のpathを変更
|
||
- コントロールパネル→システムとセキュリティ→システム→システムの詳細設定→環境変数
|
||
- システム環境変数の「Path」をクリックし、「編集」→「新規」
|
||
- 「C:\Program Files\MySQL\MySQL Server 8.0\bin\」と入力し、「OK」
|
||
※上記操作によりコマンドプロンプトで「mysql」コマンドが実行できるようになる
|
||
|
||
- 以下のコマンドをコマンドプロンプトで実行
|
||
mysqldump --lock-all-tables -A -uroot -p<rootユーザのパスワード> > C:\backup_test.sql
|
||
※Cドライブ直下にバックアップファイルが作られる
|
||
|
||
## 演習1
|
||
以下の要件に従い、データベースをバックアップしてください。
|
||
#### 要件
|
||
- 保存場所
|
||
- Cドライブ直下
|
||
- 保存対象
|
||
- rezodb
|
||
- バックアップファイル名
|
||
- backup_<日付>_<名前ローマ字1文字目>-<名字ローマ字>.sql(例:backup_20200414_m-yoshida.sql)
|
||
- mysqldumpのオプション
|
||
- --flush-logs
|
||
- --lock-all-tables
|
||
- -u
|
||
- -p
|
||
#### ヒント
|
||
- mysqldumpの「-A」は「すべてのデータベースを」という意味。
|
||
- mysqlコマンドで、rezodbにアクセスするときにどこに「rezodb」と入力する?
|
||
- オプションの意味…「--flush-logs」=バイナリログをローテートする(これ以降の操作は新しいバイナリログに保存される)
|
||
「--lock-all-tables」=この動作が行われている最中は、すべてのテーブルをロックする
|
||
|
||
## 演習準備2 差分バックアップ編
|
||
1. どのユーザからでも良いのでrezodbにアクセスし、user_tableに以下のデータを追加してください。
|
||
INSERT INTO employee VALUES (20000, '<自分のフルネーム>', '<自分のフルネームカナ>','my@hoge.jp','xxx','10');
|
||
|
||
2. 以下のコマンドをコマンドプロンプトで実行します。
|
||
mysqlbinlog "C:\ProgramData\MySQL\MySQL Server 8.0\Data\<バイナリログファイル名>" > C:\backup_test2.sql
|
||
|
||
## 演習2
|
||
以下の要件に従い、データベースをバックアップしてください。
|
||
### 要件:
|
||
- 保存場所
|
||
- Cドライブ直下
|
||
- 保存対象
|
||
- 現在の差分バックアップ
|
||
- バックアップファイル名
|
||
- backup2_<日付>_<名前ローマ字1文字目>-<名字ローマ字>.sql
|
||
|
||
## 演習3 リストア編
|
||
|
||
※注意! 事前に、共有フォルダに保存したバックアップが存在すること、内容が変になっていないか(2つのバックアップが同じファイルサイズになっていないか等)確認してください。
|
||
|
||
1. rootでrezodbにログインし、以下のコマンドを実行してください。
|
||
SHOW TABLES FROM rezodb;
|
||
|
||
2. すべてのテーブルを削除します。以下のコマンドを、テーブル数分実行してください。
|
||
DROP TABLES <テーブル名>;
|
||
|
||
3. データベースをリストアします。
|
||
\qでmysqlから抜け出し、以下のコマンドを実行します。
|
||
mysql -uroot -p<rootパスワード> rezodb < <共有フォルダに保存したフルバックアップのフルパス>
|
||
|
||
4. リストアしたデータベースがフルバックアップ時のものになっているか確認します。
|
||
user_tableの内容を確認してください。
|
||
|
||
5. 差分バックアップの内容をリストアします。
|
||
\qでmysqlから抜け出し、以下のコマンドを実行します。
|
||
mysql -uroot -p<rootパスワード> rezodb < <共有フォルダに保存した差分バックアップのフルパス>
|
||
|
||
6. リストアしたデータベースが差分バックアップ時のものになっているか確認します。
|
||
user_tableの内容を確認してください。
|
||
|
||
7. 実施後の全バックアップを作成してください。
|
||
- 要件
|
||
- 保存場所
|
||
- Cドライブの直下
|
||
- 保存対象
|
||
- rezodb「のみ」
|
||
- バックアップファイル名
|
||
backup3_<日付>_<名前ローマ字1文字目>-<名字ローマ字>.sql
|
||
- mysqldumpのオプション
|
||
- --flush-logs
|
||
- --lock-all-tables
|
||
- -u
|
||
- -p
|
||
|