スマートフォン・タブレットからインターネットサーバーオペレーション

APPW.jp
 
ConoHa VPS移設記/2GB・3コア → 4GB・4コア/Ubuntu 26.04 LTS

⑥ MariaDB

当初は「MySQL」のつもりで進めていたが、mysqldumpのヘッダーを見て旧サーバーが実はMariaDBだったと判明。 製品選定のやり直しから、6個のデータベースをサイトごとのユーザーで復元するところまでを記録する。

作業端末: iPad mini(Termius)

MIGRATION ROADMAP — 全17工程
  1. ① SSH、ユーザー追加
  2. ② IPv4/IPv6追加、netplan、ufw
  3. ③ Apache2
  4. ④ Let's Encrypt
  5. ⑤ PHP
  6. ⑥ MariaDB
  7. ⑦ WordPress
  8. ⑧ Dovecot、Postfix
  9. ⑨ Vsftpd
  10. ⑩ Python
  11. ⑪ llama.cpp、ChromaDB
  12. ⑫ Anaconda、Keras、TensorFlow
  13. ⑬ Node.js
  14. ⑭ MongoDB
  15. ⑮ Mosquitto
  16. ⑯ RabbitMQ
  17. ⑰ Supervisor

01「MySQL」のつもりが、実はMariaDBだった

当初はロードマップ通り「MySQL」として計画していたが、mysqldumpのヘッダーを確認したところ、旧サーバーは実際にはMariaDB 10.11だった。

appw_dump.sql(先頭部分)
/*M!999999\- enable the sandbox mode */ -- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: localhost Database: appw -- Server version 10.11.14-MariaDB-0ubuntu0.24.04.1

/*M!999999...*/というMariaDB独自のバージョン条件付きコメント記法が使われている時点で、これはMariaDB前提のダンプだと分かる。 MySQLでも大半は問題なく読み込める可能性はあるが、GROUP BYの挙動やSQL_MODEの既定値、JSON関連の実装差など細部で挙動が異なるため、 わざわざ製品自体を乗り換えるリスクを取る理由はない。旧サーバーと同じMariaDB系統で進めることにした。

02インストール

Ubuntu 26.04の標準リポジトリにはMySQL 8.4とMariaDB 11.8の両方が入っている。今回はMariaDBを選択。 旧サーバーの10.11から11.8への、同系統内でのバージョンアップという位置づけになる。

login-user@新サーバー
$ sudo apt update $ sudo apt install mariadb-server $ sudo mysql_secure_installation sudo: mysql_secure_installation: command not found
mysql_secure_installationが見つからない MariaDB 10.4.6以降、mariadb-secure-installationが正式なコマンド名になっており、mysql_secure_installationは互換用のシンボリックリンクとして提供されてきた。 新しいパッケージではこの互換リンク自体が省かれていることがあり、今回はまさにそのケースだった。
login-user@新サーバー
$ sudo mariadb-secure-installation

036データベース、サイトごとのユーザーで分離

③⑤で続けてきたサイトごとの分離方針を踏襲し、データベースもサイト単位でユーザーを分けた。 gwaw.jpだけ3データベースあるが、1サイト=1ユーザーとし、そのユーザーに3データベースぶんの権限を付与する形にした。

サイトデータベースユーザー
appw.jpappwappw
gwaw.jpgwaw_01_db / gwaw_02_db / gwaw_03_dbgwaw
ibe.tokyoibeibe
iseeit.jpiseeitiseeit
login-user@新サーバー
$ sudo mariadb -u root -p MariaDB [(none)]> CREATE DATABASE appw CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; MariaDB [(none)]> CREATE USER 'appw'@'localhost' IDENTIFIED BY '****'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON appw.* TO 'appw'@'localhost'; MariaDB [(none)]> CREATE DATABASE gwaw_01_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; MariaDB [(none)]> CREATE DATABASE gwaw_02_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; MariaDB [(none)]> CREATE DATABASE gwaw_03_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; MariaDB [(none)]> CREATE USER 'gwaw'@'localhost' IDENTIFIED BY '****'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON gwaw_01_db.* TO 'gwaw'@'localhost'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON gwaw_02_db.* TO 'gwaw'@'localhost'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON gwaw_03_db.* TO 'gwaw'@'localhost'; MariaDB [(none)]> CREATE DATABASE ibe CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; MariaDB [(none)]> CREATE USER 'ibe'@'localhost' IDENTIFIED BY '****'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON ibe.* TO 'ibe'@'localhost'; MariaDB [(none)]> CREATE DATABASE iseeit CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; MariaDB [(none)]> CREATE USER 'iseeit'@'localhost' IDENTIFIED BY '****'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON iseeit.* TO 'iseeit'@'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES;

04復元

ダンプ側にSET NAMES utf8mb4が最初から入っていたため、文字コード変換の作業は不要だった。データベースをutf8mb4で作成しておくだけで済んだ。

login-user@新サーバー
$ mariadb -u appw -p appw < /path/to/appw_dump.sql $ mariadb -u gwaw -p gwaw_01_db < /path/to/gwaw_01_dump.sql $ mariadb -u gwaw -p gwaw_02_db < /path/to/gwaw_02_dump.sql $ mariadb -u gwaw -p gwaw_03_db < /path/to/gwaw_03_dump.sql $ mariadb -u ibe -p ibe < /path/to/ibe_dump.sql $ mariadb -u iseeit -p iseeit < /path/to/iseeit_dump.sql
確認完了 6データベースすべてインポート完了。各サイトの接続設定(wp-config.php等)のDB名・ユーザー名・パスワードとの整合はここで確認済み。

05ここまでの状態

  • 旧サーバーがMariaDB 10.11だったと判明し、Ubuntu 26.04標準のMariaDB 11.8で継続する方針に修正
  • mariadb-secure-installationで初期セキュア化
  • appw、gwaw(3DB)、ibe、iseeitの6データベースを、サイトごとのユーザーで作成・復元
← 前回: ⑤ PHP 次回: ⑦ WordPress →

『ConoHa VPS移設記 ⑥ MariaDB』を公開しました。