たまには公式設定をチェックしよう(Nextcloud編)

西山
2024-05-21
2024-05-21

こんにちは。日々是発見が楽しみな西山です。

先月(4月)にNextcloudのメジャーバージョンアップ(28⇒29)が公開されましたが、内部挙動がだいぶ変わっていてすんなり動かず、公式ヘルプやコミュニティ掲示板をいろいろさまよっていました。

その過程でたまたま、MySQL(MariaDB)で知らない推奨パラメーターが追加されているのに気づきました(バージョンアップのトラブルとは関係なかったですが)

 

transaction_isolation = READ-COMMITTED
binlog_format = ROW

Nextcloudはトランザクション分離レベルを使用しています。データベース構成によっては、他のトランザクション分離レベルが強制適用されている場合もあります。高負荷のシナリオでのデータ損失(たとえば、多くのクライアント/ユーザーで同期クライアントを使用し、 多くの並列操作)を避けるためには、それに応じてトランザクション分離レベルを構成する必要があります。

https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/linux_database_configuration.html#db-transaction-label

設定の詳しい意味についてはMariaDBの公式ドキュメント等をご覧いただきたいですが、おおむねデフォルトよりも強い一貫性を担保する設定と言えます。

AlmaLinux9 の場合は dnf で MariaDB10.5 がインストールされますが、そのデフォルトは

transaction_isolation = REPEATABLE READ
binlog_format = MIXED

となってますので、Nextcloudの推奨に合わせ変更すると信頼性やパフォーマンスの向上が期待できます。

※すでにDBが稼働中の場合、my.cnfなどでグローバル設定を変更しただけでは反映されないので、SQLコマンドでパラメーターを変更する必要があります。

こういう推奨設定があるとは今まで知りませんでした(比較的最近追加されたのかも知れません)。Nextcloudの構築について書かれた日本語のブログをGoogle検索してみても、この設定に触れているのは4件だけでした。
以前このエンジニアブログでNextcloudの設定を取り上げた記事でも、そもそも気づいてなかったので抜けてました……。

※dockerでNextcloudを構築すると、githubで公式が提供しているdocker-compose.ymlにこのオプションコマンドが入っているので、特に意識せず推奨設定を利用しているかと思います。

近年はOSS商用問わず、ドキュメント類は英語版が最新・最優先となり、日本語版は更新が遅かったりそもそも用意されないことも多いです。
そういう状況でチャレンジして日本語の情報を発信して下さる方はありがたい存在ですが、ほとんどがボランティアでもあり、一度公開した情報のアップデートや更新のフォローが手薄になってしまうのはやむを得ないと思います。

英語の情報はしきいが高く感じる人も多いでしょう(私もそうです)が、翻訳機能の精度も数年前とは比較にならないほど上がり、ブラウザ標準で気軽に使える時代です。
エンジニアとして力を付ける意味でも、臆せず自ら英語の一次情報に当たることが大事だと改めて感じました。