2021年3月17日水曜日

MySQL データのバックアップとリストア(2)

MySQL8.0 コマンド(mysqldump)を使用してデータベースのデータバックアップとリストアを実施してみます。

 今回はデータベース運用中のオンラインバックアップとリストアです

全データベースをバックアップするコマンド

C:\>mysqldump -u [ユーザー] -p --all-databases > [バックアップファイル]

データベース指定してバックアップするコマンド

C:\>mysqldump -u [ユーザー] -p [データベース名] > [バックアップファイル]

全データベースを復元するコマンド

C:\>mysql -u [ユーザー] -p  < [バックアップファイル]

データベースを指定して復元するコマンド

C:\>mysql -u [ユーザー] -p -D [データベース名] < [バックアップファイル]


実施環境:Windows10,MySQL8.0.22

バックアップ前の状態は以下の様な構成(テーブルはすべてInnoDB)

  • データベース 「javadev」 この中に テーブル「new_table1」と「new_table2」
  • データベース 「javadev2」 この中に テーブル「new_table1」
workbenchでバック前の内容を確認してみます



全データベースをバックアップするコマンド(途中改行しないように)

C:\>mysqldump -u root -p --all-databases > c:\Download\data\alldata.dmp

これでc:\Download\data\alldata.dmpというファイルが作成されます(バックアップファイル)

ここからリストアしてみましょう

確認できるようにテーブルを削除しておきます


全データベースを復元するコマンド(途中改行しないように)

C:\>mysql -u root -p  < c:\Download\data\alldata.dmp

workbenchで結果を確認してみます(きれいに復元されました)




最後に

上記例はいずれも、mysqldumpの「--lock-tables」オプションが有効になっている状態です(デフォルト)。
これは、バックアップにあたり、テーブルロックを行い実施しますので、オンライン中、行ロックを含む、ロック状態のテーブルがあるとコマンドがロック解放待ち状態になります。

ロック待ちをしたくない場合、mysqldumpで「--single-transaction」オプションを指定すると、バックアップ開始時のスナップショットを元にバックアップが実行されます。
(この場合、バックアップ開始時点の状態がバックアップされる)

C:\>mysqldump --single-transaction -u [ユーザー] -p --all-databases > [バックアップファイル]


これをバッチファイル化してタスクスケジューラー等に組み込み場合 -p[パスワード] (-pに半角スペースを入れず続けて記述したもの)を使います。

ただし、" [Warning] Using a password on the command line interface can be insecure."パスワードをコマンドに書き込むなというワーニングが出ます。

C:\>mysqldump --single-transaction -u [ユーザー] -p[パスワード] --all-databases > [バックアップファイル]

0 件のコメント:

コメントを投稿

適格請求書等保存方式(インボイス制度)と消費税の端数処理

消費税の税額計算は 売上税額-仕入れ税額=納税額 2023年10月以降、この納税額の計算の元になる請求書は適格請求書(インボイス)の保存が必要となる。 2019年10月から消費税が10%に引き上げられる際に、日用品等は8%に据え置かれ複数税率を扱う事業者が発生する。 この軽減税率...