いつも黙々と働いてくれている Nextcloud ですが、ふと気がつくとバージョンがはるか先まで進んでおりました。31.0.7 ってマジ?? うちで動かしてるの 28.0.7 だよ。放置しすぎやな。
ちょうど夏休み中なので、アップグレード祭りをやります。その前に、前からずーーーーっと文句を言われ続けている、MySQL のバージョンをなんとかしたいな。(Nextcloud 21 以降はサポートしないぞ、と脅かされているんですが、そのまま放置している)
ロリポップは MySQL 8.0 を提供しているので、対応できるはずなのですが、やり方がよくわからないのです。Nextcloud のサポートコミュニティで質問している人がいました。データベースのバックアップ/復元の手順を踏めばよいようですね。
I can register a new MySQL 8.0 or MariaDB 10.2 DB in my Ionos Web Interface.
But how can I create the correct DB scheme and copy the relevant data?If you're unable to upgrade the db server itself (which is what it sounds like since it's semi-outsourced), you should be able to treat it as a backup+restore scenario (database only!). There are several sections in the Admin Manual describing the process (at least from the command line).
How to upgrade/migrate the SQL Database (5.7.41-log => 8.0+)?
E.g.
https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html
https://docs.nextcloud.com/server/latest/admin_manual/maintenance/restore.html
Just only do the stuff that is database specific (well, and also put NC into maintenance mode throughout).
まず、Nextcloud をメンテナンスモードにします。config/config.php の "maintenance" => false, の行を "maintenance" => true に書き換えます。ロリポップFTP を使えば、オンラインで編集できます。
Nextcloud のマニュアルでは、コマンドラインで mysqldump を使ってバックアップを作成しています。しかし、ロリポップのライトプランは ssh アクセスをサポートしていないので、このやり方は使えません。代わりに、phpMyAdmin を使います。ロリポップのサーバ管理ページから、「データベース」→「操作する」→「phpMyAdminを開く」と進みます。
ユーザー名とパスワードを入れて、サーバを選択して(忘れがち)、phpMyAdmin の画面を開きます。
「エキスポート」でデータベースの内容をファイルに書き出します。エキスポート方法は「簡易」でよいと思います。ブラウザによって sql ファイルがダウンロードされます。サイズは 47 MB でした。
ロリポップのサーバ管理ページに戻って、データベースを新しく作成します。現在は MySQL 8.0 のみ選択できるようです。
新しいデータベースを phpMyAdmin で開き、「インポート」を選択します。
先ほど作成したファイルの最初の方に、データベース名があります。これを、新しいデータベース名に書き換えておきます。
--
-- データベース: `XXX0123456-xy`
--
CREATE DATABASE IF NOT EXISTS `XXX0123456-xy` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `XXX0123456-xy`;
修正済みのファイルをインポートすると、元のデータベースが復活しました!(と思われる)
さて、config/config.php を書き換えて、新しいデータベースで運用します。書き換えるところは、dbname, dbhost です。maintenance を false に戻します。
無事起動しました! MySQL のバージョンはちゃんと 8.0 になっています。