さくらインターネット MySQL 5.1 から5.5 に引越し1 に続き、いよいよ実践する。
移行手順
- さくらインターネットのコントロールパネルで、新しいデータベース作成する
- 整合性保持のために、データベースへのアクセスを遮断する
- 古いデータベースをバックアップする
- 古いデータベースのパスワードを変更する
- バックアップファイルの一部を書き換える
- 新しいデータベースにバックアップファイルから書き戻す
- システムのコンフィグレーションファイルを新しいデータベース接続用に変更する
- 問題なければ古いデータベースを削除する
ステップ数が多くて複雑のように見えるかもしれないが、実際は思っているより簡単だった。だが、環境依存の部分も多く、また一般的には(一般的なサイズなら)phpMyAdmin でインポートするため、この手順の解説が特には見つからなかった。
この手順はphpMyAdmin が利用できないような巨大データベースの際に、SSH でサーバーに接続し、新旧データベースを直接操作する。
スポンサードリンク
実践編
新しいデータベースの作成
さくらインターネットのコントロールパネルで、新しいデータベース作成する。
さくらインターネットのコントロールパネルにログインし、新しいデータベースを作成する。どうやら新しいデータベースの作成はphpMyAdmin で行えないらしく、コントロールパネルから操作する必要があるようだ。この時の注意点は作成するバージョンと文字コードだろうか。
アクセスの遮断
整合性保持のために、データベースへのアクセスを遮断する。
ただし、データベースの瞬間的な切り替えを望む場合はこの手順は不要だが、当然バックアップした時点でのデータしか移行できないので注意する。
RewriteCond %{REMOTE_ADDR} !^XXX.XXX.XXX.XXX RewriteRule (.*) 403m.html [L]
SSH 接続
さくらインターネットが提供するphpMyAdmin の設定は、読み込めるサイズが16M となっているらしい。仮にこの値を大きくできたとしても、到底phpMyAdmin でインポートできるサイズではないからSSH 接続が必須となる。
古いデータベースをバックアップ
いよいよバックアップする。バックアップはコマンドラインで一発だ。コマンドラインと言っても実行に長い時間がかかるとKill される。
不要なデータがある場合は削除し、メンテナンスを行なっていないなら、最適化や修復を行なっておくと安全度が高まるかもしれない。これらはphpMyAdmin を利用すると簡単に実行できる。
(データベースの瞬間的な切り替えを望む場合はこの手順は不要)
mysqldump -u {USER} -h mysqlXXX.db.sakura.ne.jp --all-databases -p > mysql_backup.sql
古いデータベースのパスワードを変更
すっかり忘れているシステムがアクセスしているかもしれないし、.htaccess で排除しきれないアクセスがあるかもしれないから、ここでアクセスを遮断しておく。既存のパスワードの末尾に1を追加するなど一時的な対処でも問題ないだろう。
(データベースの瞬間的な切り替えを望む場合はこの手順は不要)
バックアップファイルの一部を書き換え
さくらインターネットの古いデータベースは5.1 で、データベース作成数が1 に制限されていた。MySQL 5.5 では、ユーザ名によるプレフィックスが異なるので、バックアップファイルをそのまま利用できないらしく接続エラーになった。
データベースのdump ファイルのうち数箇所をコマンドvi などで書き換える。
変更前
-- MySQL dump 10.13 Distrib 5.5.15, for FreeBSD7.1 (i386) -- -- Host: mysqlXXX.db.sakura.ne.jp Database: -- ------------------------------------------------------ -- Server version 5.1.51-log -- -- Current Database: `USER` -- CREATE DATABASE /*!32312 IF NOT EXISTS*/ `USER` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `USER`;
変更後
-- MySQL dump 10.13 Distrib 5.5.15, for FreeBSD7.1 (i386) -- -- Host: mysqlXXX.db.sakura.ne.jp Database: -- ------------------------------------------------------ -- Server version 5.1.51-log -- -- Current Database: `USER_USER` -- CREATE DATABASE /*!32312 IF NOT EXISTS*/ `USER_USER` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `USER_USER`;
新しいデータベースにバックアップファイルから書き戻す
新しいデータベースにインポートするようにコマンドを打ち込む。
mysql -u {USER} -h mysqlXXX.db.sakura.ne.jp -D {USER_DATABASE} -p < mysql_backup.sql
システムのコンフィグレーションファイルを変更
古いデータベースへの接続になっている各システムのホスト名やパスワードを変更して、再稼働する。この時、.htaccess によっては特定のユーザのみアクセスを許可することができるから、まずは自分だけアクセスし、問題がないかを確認しておくと良い。
問題なければ古いデータベースを削除
データやシステムに問題がないようであれば、古いデータベースやバックアップファイルを削除する。
→ 記事を書いてから公開までにタイムラグがある。実際に5.5 の恩恵を受けたのかを検証してみたい。
コメント