古いバージョンのLinuxサーバのHDDが故障した時にMySQLを復旧する方法


ビヨンドの原岡です。

古いサーバーがハードディスクの破損によって起動しなくなった時に、データファイルだけでなくMySQLのデータを復旧するための手順を簡単にまとめました。

今回はMySQL 3.23.58のデータを復旧します。
※データ復旧は様々な要因が絡みますのであくまで参考としてご確認ください。

ハードディスク復旧業者さんにデータを復旧してもらう

まずは故障したHDDの復旧が必要です。

下記のように自前で復旧できる場合もありますが、失敗すると状況が悪化する恐れもありますので業務データなどが入っている場合はできるだけ確実に復旧するためにハードディスクの復旧業者を使った方が良いかと思います。

素人でもできるHDDの修理と復旧方法
http://macasakr.sakura.ne.jp/HDD

業者さんもかなりいろいろなところがありますが、私のおすすめ業者はくまなんPCネットさんです。
https://www.kumanan-pcnet.co.jp/hdd/info.php

実は業者の中でも技術力はかなり差があるのですが、くまなんPCネットさんは15年の実績があり、自社にクリーンルームも持っていて、高い技術力に基づいた復旧対応をしてくれます。

復旧用のサーバを構築

  • 構築用のサーバを準備する

適当な筐体を用意してデータベース復旧用のサーバーを構築していきます。まずはMySQLが稼働していたサーバーのOSバージョンを確認しておきます。

cat /復旧ディレクトリ/etc/redhat-release

バージョン情報が手元にない場合は、復旧してもらったデータのディレクトリから
redhat-releaseのファイルを確認します。


古いOSはi386i686などの32bit版の場合もあります。64bitのCPUでも32bit版のOSはインストールできますが、メモリを4GBまでしか認識できないため、メモリを多めに積んである筐体は抜いておいた方が無難です。

  • 古いバージョンのLinuxOSをインストールする

今回はCentOSをこちらのサイトを参考に
http://www.linuxmaster.jp/linux_blog/2010/03/centos.html

このサイトからダウンロードします。
http://vault.centos.org/
上記サイトはCentOS2.1以降がダウンロードできるという素晴らしいサイトです。
今回はCentOS4系をダウンロードさせていただきました。

MySQLをダウンロード

こちらからインストール用ファイルを拝借
http://dbstudy.info/mysql/

ここにもあります。
http://live.dadanini.at/mysql/downloads_html/mysql-3.23.html

MySQLをインストール

ソースファイルからビルドします。

  • インストール用ディレクトリとユーザの作成
cd /usr/local/src/
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
mkdir /usr/local/mysql
mkdir /usr/local/mysql/var/
chown -R mysql:mysql /usr/local/mysql

  • MySQLのインストール
tar -zxvf mysql-3.23.58.tar.gz
cd mysql-3.23.58/
./configure --prefix=/usr/local/mysql

make
make install
  • インストールDBの作成
scripts/mysql_install_db
  • mysql起動
/usr/local/mysql/bin/safe_mysqld --user=mysql &

※mysqld_safeではないので注意

  • 起動確認
ps -ef | grep mysql
  • ログインしてみる(パス無し)
mysql -u root
  • rootパスワードの設定
mysqladmin -u root password "*****"
  • mysql停止
/usr/local/mysql/bin/mysqladmin -u root -p shutdown

これで復旧の準備はOK

復旧したデータファイルを入れ替え

HDDを復旧した先からMySQLのデータファイルを丸ごとアップロード

文字化けの可能性もあるので、できれば圧縮して移動した方がよいです。

  • アップロードしたファイルを解凍
gunzip /home/hogehoge/mysql_buckupdata.gz
  • データファイルのディレクトリごと移動
mv /usr/local/mysql/var /usr/local/mysql/var_tmp

cp /home/hogehoge/mysql_buckupdata /usr/local/mysql/var
  • 権限変更
chown -R mysql:mysql /usr/local/mysql/var
  • iblogfileの削除
rm /usr/local/mysql/var/ib_logfile*
  • DBの起動

mysql起動・停止

/usr/local/mysql/bin/mysqld_safe --user=mysql &

これで起動すればひとまず復旧はOK

DBのエクスポート

mysqldump -u root -p db名 > /home/hogehoge/new_buckup.dmp

復旧したデータをエクスポートしておく

以上でデータ復旧は終わりです。

もし復旧などでお困りのことがあればビヨンドまでお問合せくださいませ。

https://beyondjapan.com/contact


この記事をかいた人

About the author