2014年04月20日

データベースのデータ移行 - MySql

プラットフォームの交換やら、ステージングから本番環境へとか、必要なときには頻繁にやるのですが、一度落ち着けばご無沙汰してしまうのが「データ移行」。

ググってはみるものの「あれ、こんなんだったけ?」となりがち。

そんな、たまにしかやらないとすぐに忘れてしまう。自分なりのベストプラクティス。

手順は以下のとおり

  1. 移行元のデーターベースをmysqldumpファイルに出力

  2. できたファイルを移行先のサーバーに転送

  3. 移行先のサーバーで、必要ならばDB名を変更してファイルをインポート



それでは、レッツ・プラクティス

1. mysqldump でデータベースをファイルにバックアップ


mysqldump はデータベースをダンプするプログラムです。移行元の旧DBからデータをダンプして、ファイルに保存します。
$ mysqldump -u [user_name] -p [old_db_name] > [old_db_name].dump

[user_name] [old_db_name] をご自分の環境にあわせて入力してください。-p オプションでパスワード入力が促されます。

2. バックアップファイルを移行先サーバーに転送


1. で作成したファイルを何らかの方法で、移行先のサーバーに転送します。メンテナンス実行期間はsshのポートを開けている所が多いとおもいますので、sftp や scp(超簡単scp) が便利だと思います。

移行先のサーバーで、DB名を変更してバックアップファイルをインポート


まずは、移行先サーバーにリモートログインして、対象DBを作成。
$ mysql -u [user_name] -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 155
Server version: 5.6.13-log MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database [new_db_name] character set utf8;

例によって[user_name], [new_db_name]はご自分のものに変更してください。キャラクターセットは明示的に指定した方が後々問題が起こる事が少ないと思います。もちろん旧DBと合わせてくださいね。

次にバックアップファイルを[new_db_name]のデータベースに流し込みます。これにもmysql コマンドを使います。

$ mysql -u [user_name] -p [new_db_name] < [old_db_name].dump


以上です。簡単なのですが、いったん忘れてしまってググると何が正解かわからなくて混乱するものでした。

posted by ayagu at 11:07| Comment(1) | mysql | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。