MySQLのデータベースを別サーバーに移行する

カテゴリ: blog

binWord.comはレンタルサーバーを借りて運営している。これまで使っていたサーバーにだいぶ負荷がかかっており、Movable Typeでのリビルド(Rebuid:再構築)や、PukiWikiでの編集作業等々でストレスを感じたり、サーバーが応答しなくなることも増えてきた。そこで、同じ業者の別サーバーに移行することにした。 HTMLなどのユーザーデータは基本的に業者が移行してくれることになっているのだが、厄介なのがMovable Typeで使用しているMySQLデータベースだ。これはその他のユーザーデータとは別のところに格納されているため、自分でバックアップ・復元を行う必要がある(業者が移行作業をやってくれてもいいと思うんだけどね……)。 なお、Movable Typeにはデータの書き出し・読み込み機能があるのだけど、これを使ってデータを復元すると、コンテンツの順番がずれてしまうことがある。せっかく個別記事にリンクしてくれている人もいるのだから、できればURLは変えないようにしたい。テンプレートのデータなどもいちいち設定し直さなくてはならないし。やはり、MySQLのデータベースを丸ごと移すのが手っ取り早い。

MySQLデータベースをバックアップするには、SSHやtelnetでサーバーにログインし、「cd」コマンドでデータを保存したいディレクトリに移動。以下のコマンドを入力する。
mysqldump -q データベース名 -pパスワード > バックアップファイル名

これでそのディレクトリ内に「バックアップファイル名」のファイルが出来上がる。

MySQLのバックアップファイルを含むデータを新サーバーに移したら、MySQL用の管理ツールを使って新しいデータベースを作成する。私が使っているレンタルサーバーはWebベースのツールが用意されているので、それを使った。また、データベースにアクセスするためのパスワードも設定する。ここで作成した「データベース名」と「パスワード」は控えておくこと。 次に、新サーバーへSSHやtelnetでログインし、バックアップファイルを保存したディレクトリに移動。

mysql -pパスワード 新データベース名 < バックアップファイル名

これで、MySQLのデータベースが復元される。文字化けするというような話を聞いたこともあるのだが、私の所は以上の操作だけでうまくいった。ちなみに、旧サーバーで使っていたMySQLのバージョンは11.15、新サーバーの方は11.18だ。

なお、Movable TypeでMySQLデータベースを使っている場合、注意する点がいくつか。「mt.cfg」内でMySQLデータベース名を指定している「Database」とユーザー名(データベース利用者)の「DBUser」が正しい設定になっているか確認しよう。また、データベースのパスワードが書かれた「mt-db-pass.cgi」も要確認。 あと、もしかしたらファイルのパーミッションが変わってしまっているかもしれないので、それもチェック。

コメント

tarowan
3ヶ月以上前の記事への質問で申し訳ありません。サーバーを移行するわけではありませんが、Movable Typeとそれによるサイトを誤って削除してしまったのです。MySQLにはデータは残っています。この場合、再度、Movable Typeをインストールしようとすると、これがデータベースを作ろうとして、すでにあるデータベースと競合しないのでしょうか?データベースから、サイトを復元することは可能でしょうか?特に、コメントを復元できないだろうかと期待しています。突然で申し訳ありません。よろしくお願いします。
Tats_y
Ver3以降はわかりませんが、Movable Type 2.661の場合、設定ファイルでMySQLデータベースの名前を指定します。勝手にデータベースを作ったりはしません。MySQLのデータベースさえ残っていれば大丈夫のはずですよ。
tarowan
ありがとうございました。 インストールして、画像をアップロードして、再構築したら元の状態に戻りました。心配していたのですが、意外に簡単でした。 何かするときはバックアップをとってからだと痛感しました。今回はMySQLが残っていたので助かりました。
Tats_y
レンタルサーバーの場合、MySQLのデータベースファイルをバックアップするには、管理者にファイルのアクセス権限を変更してもらう必要があるかもしれません。私の利用している業者ではそうでした。参考までに。
レンタルサーバーJP
Phpmyadminから操作するほうがより簡単かもしれません。