PR

さくらインターネット MySQL 5.1 から5.5 に引越し2

さくらインターネット MySQL 5.1 から5.5 に引越し1 に続き、いよいよ実践する。

移行手順

  1. さくらインターネットのコントロールパネルで、新しいデータベース作成する
  2. 整合性保持のために、データベースへのアクセスを遮断する
  3. 古いデータベースをバックアップする
  4. 古いデータベースのパスワードを変更する
  5. バックアップファイルの一部を書き換える
  6. 新しいデータベースにバックアップファイルから書き戻す
  7. システムのコンフィグレーションファイルを新しいデータベース接続用に変更する
  8. 問題なければ古いデータベースを削除する

ステップ数が多くて複雑のように見えるかもしれないが、実際は思っているより簡単だった。だが、環境依存の部分も多く、また一般的には(一般的なサイズなら)phpMyAdmin でインポートするため、この手順の解説が特には見つからなかった。

この手順はphpMyAdmin が利用できないような巨大データベースの際に、SSH でサーバーに接続し、新旧データベースを直接操作する。

スポンサードリンク

実践編

新しいデータベースの作成

さくらインターネットのコントロールパネルで、新しいデータベース作成する。

さくらインターネットのコントロールパネルにログインし、新しいデータベースを作成する。どうやら新しいデータベースの作成はphpMyAdmin で行えないらしく、コントロールパネルから操作する必要があるようだ。この時の注意点は作成するバージョンと文字コードだろうか。

アクセスの遮断

整合性保持のために、データベースへのアクセスを遮断する。

データベースを必要とするシステムが利用できないように.htaccess などを操作して遮断する。cron など特殊なアクセスを行なっている場合には見落としをしないように注意する。

ただし、データベースの瞬間的な切り替えを望む場合はこの手順は不要だが、当然バックアップした時点でのデータしか移行できないので注意する。

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 の恩恵を受けたのかを検証してみたい。

コメント