MariaDB のホストを変更しデータベースをインポートする。

 旧サーバで MariaDB 5.5.33a-winx64 を動かしていました。そのデータベースを新しいサーバへインポートします。

 このような場合、mysqldump を使ってテーブルをエクスポートするのが本来の方法ですが、データベースファイルのコピーでも動くのでまず、コピーしてみます。

データベースファイルのコピー

 空いている Raspberry Pi に MariaDB をインストールして旧サーバのデータベースファイルをコピーしてみます。

 WIndows 版のデータベースファイルは、インストールしたディレクトリの data ディレクトリ下にあります。データベースごとにディレクトリがあるので、インポートしたいデータベースのディレクトリごとコピーします。

 Raspberry Pi OS では、/var/lib/mysql 下にコピーします。

 まず、動いている MariaDB を停止します。

$ sudo service mysql stop

 データベースのディレクトリがある場所に移動して、コピーします。コピーしたら、MariaDB を起動します。(xxxxx がデータベース名になります。)

$ cp -r xxxxx /var/lib/mysql/.
$ sudo service mysql start

 確認してみます。

$ sudo mysql -u root
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| xxxxx              |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.002 sec)

MariaDB [(none)]> use xxxxx;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [xxxxx]> show tables;
+--------------------+
| Tables_in_xxxxx    |
+--------------------+
| append_info        |
| card_info          |
+--------------------+
2 rows in set (0.002 sec)

MariaDB [xxxxx]> show fields from append_info;
ERROR 1932 (42S02): Table 'xxxxx.append_info' doesn't exist in engine
MariaDB [xxxxx]> quit

 うーん。バージョンが違いすぎてだめなようです。5.5 から 10.15 は出来ないようです。データベースエンジンでエラーが出ています。以前やった時は、バージョンが近かった MariaDB 同士だったのでコピーしただけで使えました。

mysqldump を使う

 本来は、mysqldump でデータをエクスポートして新しい方へインポートするのが正しいやり方です。ただ、もとのマシンが起動しないので、コピーを試してみたのですがだめでした。

 もとのマシンは Windows Web Server 2008 でした。インストールしたディレクトリごと吸い出したのでコマンドも一緒にあります。別な Windows マシンで動かしてみます。

 Windows が動くデスクトップは使えないので、バッテリーが充電できなくなっている Surface Pro4 にディレクトリごとコピーしました。コピーしたディレクトリで作業します。

 コマンドプロンプトから次のようにして、MariaDB を起動します。

C:¥mariadb-5.5.33a-winx64 >bin¥mysqld

 別なコマンドプロンプトから接続します。

C:¥mariadb-5.5.33a-winx64 >mysql -u root -p

 あれ? root のパスワードが弾かれてしまいます。このままではデータベースにアクセスできません。

 タスクマネージャから mysqld を終了させ、オプションをつけて起動します。

C:¥mariadb-5.5.33a-winx64 >bin¥mysqld --skip-grant-tables

 今度は大丈夫でした。mysqldump でデータベースのテーブルをエクスポートします。(xxxxx はデータベース名)

C:¥mariadb-5.5.33a-winx64 >mysqldump -u root --opt xxxxx > xxxxx.sql

 必要なデータベースのエクスポートが出来たようです。xxxxx.sql を MariaDB を動かしているマシンにコピーします。

 インポートするデータベースは予め作っておく必要があります。データベースを作成したら、テーブルをインポートします。

$ sudo mysql -u root -p xxxxx < xxxxx.sql

 これで、古いサーバからのデータがインポートできました。

 実は、このデータベースは、別サイトで使っていたデータです。別サイトの復旧も間近です。

サーバ設定

Posted by sirius