mysqldumpでデータベースのバックアップとリストアを行う

やりたいこと

MySQLには、バックアップを作成するためのコマンド、mysqldumpがある。

mysqldumpを使用して手軽にバックアップを作成し、リストアできるようにする。

環境

OS:Red Hat Enterprise Linux 4

MySQL:5.6

手順

ダンプファイル作成

mysqldump -h {接続先} -u {ユーザ名} -p {データベース名} | gzip > /{ファイル名}.sql.gz.`date +%Y%m%d`

mysqldump

MySQLのバックアップを作成するためのコマンド。

設定するオプションによりダンプされる内容は変わる。

基本的に出力ファイルには、実行時にデータが全て置き換わるよう、DROP TABLE文、CREATE TABLE文、INSERT文が記載される。

-h

接続するサーバのホストを指定する。

オプション無しだとlocalhostが設定される。

gzip

データをgzip形式で圧縮して保存する。

ダンプファイルは数十GBを超えて大容量になる可能性があるので、圧縮しておくと安心。

> /{ファイル名}.sql.gz.`date +%Y%m%d`

今後のバックアップ作成を考えて、ファイル名に日付を追加しておく。

dateコマンドは、+{書式}で現在日付を好きなフォーマットに整形できる。

またダブルクォートで囲んだ部分はコマンド結果が入る。

バックグラウンド実行

コマンド実行中はctrl + zで処理を中断できる。

その後、以下コマンドで処理をバックグラウンド実行に切り換えられる。

bg {ジョブ番号}

実行中かどうかは jobs コマンドで確認する。

jobs

実行ユーザーが切断されるとジョブが終了することがあるので、disownしておくと安心。

&

コマンドの末尾に & を付けることで最初からバックグラウンド実行にすることもできる。

生成ファイル

{ファイル名}.sql.gz.{作成日付}

リストア

gzip形式の圧縮ファイルを解凍しながらリストアする。

zcat {ファイル名}.sql.gz.{作成日付} | mysql -h {ホスト名} -u {ユーザ名} -p {データベース名}

zcat

gzip形式のファイル内容をcat出力するコマンド。

gzip形式のファイルを扱うコマンドはzless、zgrep、zdiff等いくつかあり、どれも頭にzが付く。

mysql

mysqlにパイプでダンプファイルを渡すと、中身のクエリが実行される。

リストアも時間がかかりそうなら、バックグラウンド実行する。

リストア進捗確認

ダンプファイルには、クエリがデータベースとテーブル名のアルファベット順に記載されている。

そのため、以下で実行中のクエリを見ることで、リストアの進みを確認することができる。

SHOW PROCESSLIST;

コメントを残す

メールアドレスが公開されることはありません。