コンテンツにスキップ

MySQL#

MySQLは人気のあるオープンソースのリレーショナルデータベース管理システム(RDBMS)です。

Lagoonの MySQl イメージのDockerfileは、公式のアップストリームdocker イメージmysql(Oracle Linux variant)をベースに作成されています。

このDockerfileは、スタンドアロンのMariaDBデータベースサーバーをセットアップするために使用されます。

  • 8.0 Dockerfile (2026年4月まで延長サポート) - uselagoon/mysql-8.0
  • 8.4 Dockerfile (2032年4月まで延長サポート) - uselagoon/mysql-8.4

情報

このイメージはMariaDBイメージの完全な代替品として作られたものではありません。そのため、ローカル開発環境で動作させるにはカスタマイズが必要な場合があります。

Lagoonの適応#

MySQLコンテナのデフォルトの公開ポートはポート3306です。

LagoonがMySQLコンテナの実行方法を最適に選択できるようにするには、lagoon.type: mariadbを使用します。これにより、DBaaSオペレーターは、クラスター内で利用可能な場合、クラウドデータベースをプロビジョニングできます。コンテナ内でMySQLを確実に実行したい場合は、lagoon.type: mariadb-singleを使用してください。MySQLコンテナに対しては、永続ストレージが常に/var/lib/mysqlにプロビジョニングされます。

このイメージはLagoonで使用されることを想定して準備されています。そのため、すでにいくつかのことが行われています:

  • フォルダの権限は、fix-permissionsで自動的に適応されるため、このイメージはランダムなユーザーで動作します。
  • readiness-probe.sh スクリプト、MariaDB コンテナの準備完了状態を確認します。

非Drupalプロジェクト用のdocker-compose.yml スニペット#

docker-compose.yml
    mariadb:
        image: uselagoon/mysql-8.4:latest
        labels:
        # LagoonにMariaDB互換のデータベースであることを伝える
            lagoon.type: mariadb
        ports:
            # ポート3306をランダムなローカルポートで公開し、`docker-compose port mysql 3306`でそれを見つける
            - "3306"
        volumes:
            # MySQL用のデフォルトパスに名前付きボリュームをマウントする
            - db:/var/lib/mysql

Drupalプロジェクト用のdocker-compose.yml スニペット#

docker-compose.yml
    mariadb:
        image: uselagoon/mysql-8.4:latest
        labels:
        # LagoonにMariaDB互換のデータベースであることを伝える
            lagoon.type: mariadb
        ports:
            # ポート3306をランダムなローカルポートで公開し、`docker-compose port mysql 3306`でそれを見つける
            - "3306"
  environment:
    # LagoonでDrupalがデフォルトで期待する認証情報と一致するように、デフォルトの認証情報をオーバーライドします。
    - MYSQL_DATABASE=drupal
    - MYSQL_USER=drupal
    - MYSQL_PASSWORD=drupal
        volumes:
            # MySQL用のデフォルトパスに名前付きボリュームをマウントする
            - db:/var/lib/mysql

ツール#

  • mysqltuner.pl - データベースのパラメータ調整に便利なPerlスクリプト。
  • mysql-backup.sh - 開発環境で MySQL の日次バックアップを自動化するスクリプト。
  • pwgen - ランダムで複雑なパスワードを生成するユーティリティ。

my.cnf 設定ファイル#

このイメージには、Lagoonで動作するように最適化された デフォルト のMariaDB設定ファイルが含まれています。一部のオプションは環境変数で設定可能です。

環境変数#

環境変数名 デフォルト 説明
MYSQL_DATABASE lagoon 起動時に作成されるデータベース名
MYSQL_USER lagoon 起動時に作成されるデフォルトユーザー
MYSQL_PASSWORD lagoon 起動時に作成されるデフォルトユーザーのパスワード
MYSQL_ROOT_PASSWORD Lag00n MariaDBのルートユーザーのパスワード
MYSQL_CHARSET utf8mb4 サーバーの文字セットを設定する
MYSQL_COLLATION utf8mb4_bin サーバーの照合順序を設定する
MYSQL_MAX_ALLOWED_PACKET 64M max_allowed_packetのサイズを設定する
MYSQL_INNODB_BUFFER_POOL_SIZE 256M MySQL InnoDBバッファプールのサイズを設定します
MYSQL_INNODB_BUFFER_POOL_INSTANCES 1 InnoDBバッファプールインスタンスの数
MYSQL_INNODB_LOG_FILE_SIZE 64M InnoDBログファイルのサイズ
MYSQL_LOG_SLOW (設定なし) 遅いクエリの保存を制御する変数
MYSQL_LOG_QUERIES (設定なし) すべてのクエリの保存を制御する変数
BACKUPS_DIR /var/lib/mysql/backup データベースのバックアップのデフォルトパス
MYSQL_DATA_DIR /var/lib/mysql MySQLのデータディレクトリのパス。注意してください、この値を変更するとデータ損失が発生する可能性があります!
MARIADB_COPY_DATA_DIR_SOURCE (設定なし) MySQLのエントリーポイントスクリプトが、設定されたMYSQL_DATA_DIRディレクトリにデータをコピーする際に使用するパスについてセル名します。このパスを利用して、データベースをあらかじめMySQLに投入することができます。 ただし、スクリプトはSQLファイルではなく、実際のMySQLデータファイルの存在を前提としています。 さらに、スクリプトは、コピー先のディレクトリに既存のMySQLデータディレクトリが存在しない場合にのみ、データをコピーします。

LAGOON_ENVIRONMENT_TYPE 変数が production に設定されている場合、パフォーマンスは MYSQL_INNODB_BUFFER_POOL_SIZE=1024 および MYSQL_INNODB_LOG_FILE_SIZE=256 に設定することで最適化されます。