DB(データベース)のデータを別サーバに移行させる必要があったため、その時の手順をメモ。
目次
大まかな手順
ざっくり下記の手順で進めていきます。
- データをdump(ダンプ)する
- 別サーバに、dump(ダンプ)したデータを送る
- データをrestore(リストア)する
実行する
データをdump(ダンプ)する
データベースをdump(ダンプ)します。
mysqldump -u [実行ユーザ名] -p [データベース名] --single-transaction > /path/to/xxxx.sql
上記のコマンドで実行します。
–single-transaction コマンドは、dumpする処理をトランザクションで囲むため、データの整合性を保つのに使えます。
ファイルパスは、都合の良い場所に指定してください。
別サーバに、dump(ダンプ)したデータを送る
移行先のサーバに、dumpしたデータを送ります。
scp /path/to/xxxx.sql [ログインユーザ名]@[サーバIPアドレス]:/path/to/
ファイルパスは、都合の良い場所に指定してください。
データをrestore(リストア)する
移行先サーバで、データをrestoreします。
mysql -u [実行ユーザ名] -p < /path/to/xxxx.sql
上記コマンドを実行することで書き込みがスタートします。
データ量が大量だった場合は、zip圧縮して対応する
データベースをdump(ダンプ)して、gzip圧縮する
mysqldump -u [実行ユーザ名] -p [データベース名] --single-transaction | gzip > /path/to/xxxx.sql.gz
dumpで書き出したデータを、gzip圧縮します。
別サーバに、圧縮済みのdump(ダンプ)したデータを送る
scp /path/to/xxxx.sql.gz [ログインユーザ名]@[サーバIPアドレス]:/path/to/
特に移行先等の変更はないため、やり方は先ほどと同じです。
zip圧縮されたデータをrestore(リストア)する
zcat /path/to/xxxx.sql.gz | mysql -u [実行ユーザ名] -p
上記のようにすることで、zip圧縮したデータをそのままデータベースに書き込みすることができます。
負荷が気になるようであれば、下記のコマンドを使うと良いです。
nice -n 19 zcat /path/to/xxxx.sql.gz | nice -n 19 mysql -u [実行ユーザ名] -p
niceコマンドは、実行コマンドの優先度を指定できるコマンドです。そのため、優先度を低くして実行しています。
移行時は、バックアップを作るため、サーバのディスクを使います。そのため、ディスク容量が足りずに思わぬ障害が起きてしまったなんてこともありますので、注意しながら進めてみてください。