Nextcloud 31 以降セキュリティ&セットアップ警告に、MySQLの行フォーマット(row_format)に関するセットアップ警告が追加されました。
参考情報: [Release notes / Upgrade to Nextcloud 31]
Nextcloud 24以降、MariaDB のテーブルフォーマットに row_format=Dynamic が設定されますが、Nextcloud 23以前にインストールされたシステムでは、row_format=Compressed 等が使用されています。
Dynamic 以外のテーブルフォーマットを使用している場合、パフォーマンス上の問題となる可能性もあるため、MySQL行フォーマットのセットアップ警告が表示されるようになりました。
※主に Nextcloud 23以前にインストールを行い、Nextcloud 31までアップグレードをしたシステムに表示される警告です
セットアップ警告の表示例
管理画面のセキュリティ&セットアップ警告、もしくは occ コマンドによるセットアップチェックにて次のようなメッセージが表示されます。
MySQLの行フォーマット: データベースに不正な行フォーマットが見つかりました。ROW_FORMAT=Dynamicは、Nextcloudで最高のデータベースパフォーマンスを提供します。以下のリストで行の形式を更新してください: {対象のテーブル名}
英語環境では次のように表示されます
Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: {対象のテーブル名}
MySQL 行フォーマットの変更方法
Nextcloud のサービスを停止(バックグラウンドジョブも停止)していることを確認してから、設定変更作業を実施します。以下はデータベースへログイン後の手順です。
- 現在のテーブルフォーマット設定状況の確認方法
SELECT table_name, row_format FROM information_schema.tables WHERE table_schema = 'nextcloud' AND table_name LIKE 'oc_%';
(※ = ‘nextcloud’ の箇所は実際に Nextcloud が使用しているデータベース名) - row_format が Compressed のテーブルを dynamic 形式に変換(テーブルごとにALTERコマンドを実行)
ALTER TABLE oc_migrations ROW_FORMAT = DYNAMIC;
ALTER TABLE oc_appconfig ROW_FORMAT = DYNAMIC;
-- 以下、対象テーブルごとに実行
注意点
テーブルフォーマットの変換には、追加で同等程度のディスク容量が必要です。
また、テーブルサイズによってはフォーマットの変更処理時間の考慮が必要です。
もちろん、データベースの事前バックアップも必要です。
以上、現場からお届けいたしました。
