Moodle 5.3 日本語ドキュメント(第一次翻訳):ほぼすべてのページが日本語に翻訳されました。まだ第一次翻訳のため、不自然な表現や誤訳が残っている可能性があります。お気づきの点があれば、ページコメントでお知らせいただくか、直接編集してください。スクリーンショットの多くは、まだ英語版の画面のままです。以前のバージョンの日本語ドキュメントは、バージョンメニューからご覧いただけます。
Moodle 5.3 Japanese documentation (first-pass translation): almost all pages have now been translated into Japanese. As this is a first pass, some wording may read unnaturally or be mistranslated. If you notice anything, please leave a page comment or edit the page directly. Most screenshots still show the English interface. Japanese documentation for earlier versions is available from the version menu.

MariaDB

提供: MoodleDocs
移動先:案内、検索

MariaDBは、MariaDB Foundationのもとに組織されたオリジナルのMySQL開発者によって開発および保守されているMySQLのフォークです。よりオープンであると考えられており、最近のLinuxディストリビューションの大多数で、MySQL互換のデフォルトデータベースとして配布されています。また、MariaDBの新しいバージョンは、MySQLより低いレイテンシと高いスループットを備え、パフォーマンスにも優れています。実際にMariaDB自身がMySQLとのベンチマークを実施しており、その結果はこちらで見ることができます:Benchmark: MariaDB vs MySQL on Commodity Cloud Hardware。

MariaDBはOracle MySQLのドロップイン置き換えであり、PHPにデフォルトで同梱されている標準のmysqliドライバを使用して、サポートされている安定版のMoodleのどのバージョンでも使用できます。

MoodleのMariaDBドライバ

MoodleにはMariaDB専用のドライバがあります。config.phpで、Moodleのmariadbドライバを明示的に指定することをお勧めします:

$CFG->dbtype = 'mariadb';
$CFG->dblibrary = 'native';

現時点では、このドライバはMySQLのものと似ていますが、将来的には実装が大きく異なる可能性があります。

詳細についてはMySQLをご覧ください。セットアップ手順はほぼ同じです。

インストール

MariaDBのインストールは比較的簡単で、LinuxやWindowsでの一般的なパッケージのインストールと同様です。サイトにアクセスして必要なものを直接ダウンロードすることもできますし(主にWindowsの場合)、Linuxであれば、筆者ならほとんどのパッケージと同様にAPTで入手します。

MariaDBのインストールおよびインストール後のセットアップについては、DigitalOceanが優れたガイドを書いています:How To Install MariaDB on Ubuntu 22.04。ただし、いずれにせよLOMPスタックをインストールするのであれば、こちらのガイドの方が適しているかもしれません:How To Install Linux, OpenLiteSpeed, MariaDB, PHP (LOMP stack) on Ubuntu 22.04。最初のガイドは、必要に応じてユーザをパスワード認証に変更する方法(現在、Linuxでのデフォルトはunixソケット認証です)も扱っているため、より適しているかもしれません。とはいえ、両方にざっと目を通しておく価値はあるでしょう。それ以外の点ではよく似ています(しかも、ざっと読みやすい内容です)。

データベースのセットアップはMySQLの場合とほぼまったく同じです(ただし、MariaDBではutf8mb4とInnoDBがデフォルトであるため、サーバの文字セットをutf8mb4に設定したり、InnoDBを有効にしたりする必要はありません。データベースを作成する際に指定することだけは忘れないでください)。そのため、MoodleのインストールまたはUbuntu向けステップバイステップインストールガイドの手順に従ってセットアップできます。

インストール後のMariaDBの最適化およびチューニング

MariaDBは、そのままの状態でもかなりよくチューニングされており、開発者によれば、不要なチューニングはかえってパフォーマンスを低下させる可能性があるため、ここでは慎重に進めてください。MariaDBのドキュメントには最適化とチューニングに関するセクションがまるごと用意されています:Optimization and Tuning。ただし、その大部分はデータベースクエリの設計などについて述べたもので、ここでの利用者にとってはおおむね範囲外です。そのため、ひとまずそれは飛ばして、パフォーマンスの最適化についてインターネット上で意見が一致しているように思われるいくつかの点に進みます。まずはメモリ使用量です。

メモリ割り当て

MariaDBのドキュメントにはMemory Allocation(メモリ割り当て)に関する専用のページがあり、筆者が見たそのドキュメントの中では、おそらくこれが最も役に立つページだと思います。要するに、MySQLと同様に、パフォーマンス向上の大部分は、利用可能なメモリに応じてinnoDB_buffer_pool_sizeを正しく設定することで得られます。残念ながら、これは状況によって大きく異なるため、ここではほとんど指針を示すことができません。すべては環境、RAMの容量、サーバ上でほかに何が実行されているかによります。ただし最低限として、軽量なものを構築する場合でも、最近のホスティングではRAMがかなり安価になっていることを考えると、筆者ならMariaDB全体に1GB未満を割り当てることはまずありません。何よりも安心のためです。ただし、これは比較的小規模なMoodleサーバを前提にしたものなので、当然、規模の拡大に応じて変わります。このGitHubのページ(dronezzzko/mysql-mariadb-tuning-and-optimization-for-best-performance.md)には、メモリに応じたMariaDBの最適化についていくつかの提案があります。ただし、それらが自分に適しているかどうかを判断する前に、各オプションが実際に何をするのかを確認することを改めてお勧めします(決してやみくもに設定しないでください)。その点では、MariaDBのドキュメントはかなり充実しています。その場合に探すことになるページはこちらです:Server System Variables。

元のメモリ割り当てのページに戻ると、このページを読んで内容を確認することをお勧めします。見た目ほど長くはまったくなく、ほかにも役に立つ提案があります:

  • 構成に応じたパラメータの調整:64-bit OS and MariaDB¶(最近では一般的に64ビットのはずです)。
  • table_open_cache(以前の名称はtable_cache)の調整:パフォーマンスの推奨事項のMySQLの項では、ほとんどのMoodleインストールでこれを512にすることが推奨されていますが、筆者はMariaDBのデフォルト設定の2000のままにしました。
  • query_cacheの調整:これはMySQLとは異なり、MariaDBではデフォルトで無効になっています。ドキュメントによれば、必要ない場合に有効にすると、かえってパフォーマンスが低下することさえあります。残念ながら筆者は、Moodleがデータベースをどのように使用しているかについて、最近ではこれをオンにした方がよいのかオフにした方がよいのかを判断できるほど詳しくないため、MySQLでの推奨どおりオンにしましたが、query_cache_sizeは64Mにしました(最近はメモリが豊富なため、ほかの多くのサイトでもこれが推奨されているようです)。ただし、query_cache_min_res_unitはデフォルトの4096(4KB)のままにしました。
  • thread_cache_sizeの調整:ページにも書かれているとおり、通常これはそれほど大きな影響はないため、デフォルト(256)のままにしておいても大きな害はないようです。ただし、ほかのサイトでは16程度の値に設定することが推奨されています。推奨されているとおり、自分の環境でテストして何が最適かを確認するのが一番よいでしょう。筆者も小規模なMoodleサイトで16を試してみましたが、目立った違いは特にありませんでした。
  • Swappinessの調整:Swappinessとは、OSがどれだけ積極的にRAMとディスクの間でスワップするかを表すものです。使用中のアプリケーションをすばやく切り替える場合には便利ですが、データベース用途ではそれほど有用ではありません。buffer_poolがディスクにスワップアウトされてしまい、buffer_poolの意味がなくなる可能性があるためです。筆者はこれを推奨値の5に設定しました。


インターネット上で見つけたその他の調整:

  • tmp_table_sizeを64MBに調整しました。インターネット上でよく推奨されているようですし、利用できるRAMの量を考えれば害はないだろうと考えました(この設定のデフォルトは16MBです)。
  • max_heap_table_sizeも、インターネット上の推奨に従って同じく64MBに調整しました。何をするものなのかについての情報を見て、害はないだろうと考えました。こちらもデフォルトは16MBです。
  • 上記でリンクしたGitHubの提案に従って、innodb_flush_log_at_trx_commitも0に設定しました。これにより、データベースはトランザクションが実行されるたびにディスクへのフラッシュを行わなくなります。つまりACID原則には準拠しなくなりますが、その代わりに目に見えてパフォーマンスが向上します。これは、電源が失われた場合に直近1秒間のトランザクションが失われることを意味しますが、筆者なら自動シャットダウンを設定したUPSを導入するか、データセンターであれば何らかのフェイルオーバーと冗長化の仕組みを用意する方を選びます。ただし、これをオフにする場合は、それらのトランザクションをディスクに書き込むための何らかの代替手段を必ず用意しておいてください。Moodleインストールの破損だけは避けたいものです!(もちろん、そのためにサイトのバックアップがあるのです)。
  • log_slow_query_timeも1に変更しました。これは、処理に1秒より長くかかるものはすべてスロークエリとみなされることを意味します。肉眼では速く思えますが、通常、MariaDB/MySQLの接続は数ミリ秒しか続かないことを覚えておいてください。
  • 最後に、skip_name_resolveを1に設定して有効にしました。これにより、接続にはIPアドレスのみが使用され、ホスト名は解決されなくなります。ウェブサーバで逆引きDNSが正しく設定されていない場合(DNSルックアップが失敗し続けてデータベースが遅くなる場合)には検討すべき点ですが、筆者の環境ではデータベースとウェブサーバが同じマシン上にあり、解決する必要のあるアドレスはいずれにせよlocalhost/自分自身だけなので、これで特に問題が生じることはありません(と思います)。


以上で大部分の作業は済み、データベースサーバがそれなりにうまく動作するようになるはずです。ほとんどの場合、これらの設定では対応しきれず、より多くの接続/トランザクション/メモリ使用量に合わせて(再)設定が必要になる段階に達するころには、自分のニーズ、つまり何をどのように設定する必要があるかもよくわかっているはずです。そのため、ドキュメントの面ではほぼ自然に解決する問題と言えます。いずれにせよ、話は振り出しに戻ります。残念ながらインストールはそれぞれ異なるため、どのインストールでも、利用できるリソースとニーズを確認したうえで、適切に設定する必要があります。

ともあれ、ここまでたどり着いたなら、おめでとうございます!MariaDBサーバ(ひいてはMoodleインスタンス)が動作しているはずです。ひと休みしてお祝いしましょう。自分へのごほうびに何かよいもの(コーヒーなど?)でも買ってください :)

エラー「バージョン xxx.xx.xx 以上が必須です。あなたは現在 yy.yy.y を使用しています。」

データベースのエラー「バージョン xx.xx.xx 以上が必須です。あなたは現在 yy.yy.yy を使用しています。」は、開発中のブランチのWindows用Moodleインストーラパッケージをインストールしようとしたときによく見られます。詳細と対処方法については、admin/environment/database/mariadb (10.4.28-MariaDB)をご覧ください。

FAQ

binlog_formatの設定が原因でインストール中に失敗する: my.cnfファイルの[mysqld]の下にbinlog_format = ROWを設定し、mysqlサービスを再起動してください。

関連項目