# 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 > 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 rezodb < <共有フォルダに保存したフルバックアップのフルパス> 4. リストアしたデータベースがフルバックアップ時のものになっているか確認します。 user_tableの内容を確認してください。 5. 差分バックアップの内容をリストアします。 \qでmysqlから抜け出し、以下のコマンドを実行します。 mysql -uroot -p rezodb < <共有フォルダに保存した差分バックアップのフルパス> 6. リストアしたデータベースが差分バックアップ時のものになっているか確認します。 user_tableの内容を確認してください。 7. 実施後の全バックアップを作成してください。 - 要件 - 保存場所 - Cドライブの直下 - 保存対象 - rezodb「のみ」 - バックアップファイル名 backup3_<日付>_<名前ローマ字1文字目>-<名字ローマ字>.sql - mysqldumpのオプション - --flush-logs - --lock-all-tables - -u - -p