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
これで、古いサーバからのデータがインポートできました。
実は、このデータベースは、別サイトで使っていたデータです。別サイトの復旧も間近です。
ディスカッション
コメント一覧
まだ、コメントがありません