質問 :MySQL サーバーの systemd サービスで使用する環境変数を設定する方法は?
systemd サービスの環境変数を設定するために使用できる方法は多数あります。使用される方法は、Linux ディストリビューションおよびディストリビューションのバージョンによって異なる場合があります。 MySQL のマニュアルには、サービスのセットアップは次のように簡単に行われると記載されています (例のみ):
[Service] LimitNOFILE=max_open_files PIDFile=/path/to/pid/file Nice=nice_level LimitCore=core_file_limit
方法 1 – 「systemd edit」を使用する
これは、環境変数を含む上書きファイルを作成および/または編集するための推奨される方法です。上書きファイルを作成/編集するコマンドは次のとおりです:
# systemctl edit mysqld
これにより、ディレクトリが作成され (存在しない場合)、override.conf が作成されます。 変数を含むファイル。例
[Service] Environment="TZ=time_zone_setting" Environment="AUTHENTICATION_PAM_LOG=1" Environment="LD_PRELOAD=/path/to/malloc/library"
通常、上書きファイルとディレクトリは次のようになります:/etc/systemd/system/mysqld.service.d/override.conf
方法 2 – ファイル経由で複数の変数を追加する
この方法では、単純なファイルを介して複数の環境変数をサービスに追加できます。
[Service] LimitNOFILE=max_open_files PIDFile=/path/to/pid/file Nice=nice_level LimitCore=core_file_limit EnvironmentFile=-/etc/sysconf/mysqld
「–」 EnvironmentFile 値の先頭にある ‘ 文字は、ファイルが存在しない場合に systemd がエラーを無視できるようにするためのものです。環境ファイルには、名前=値の形式でさまざまな変数のリストが含まれているだけです。例:
LD_PRELOAD=/path/to/malloc/library TZ=time_zone_setting AUTHENTICATION_PAM_LOG=1
環境ファイルは、サービスの EnvironmentFile 属性で定義されている任意のファイルにすることができますが、Linux のバージョンとディストリビューションに固有のものにすることもできます。一部の古いバージョンでは、/etc/sysconf にあると想定されます (Redhat ベースのディストリビューションの場合) 対 /etc/default (Debian ベースのディストリビューションの場合)。これは、Oracle MySQL パッケージで現在使用されている方法です。
方法 3 – 環境変数を直接追加する
これは、mysql サービス ファイルの [Service] 領域に name=value 設定を追加するだけです。
[Service] LimitNOFILE=max_open_files PIDFile=/path/to/pid/file Nice=nice_level LimitCore=core_file_limit Environment="LD_PRELOAD=/path/to/malloc/library"
「環境」 ここでのキーワードは、指定されている環境変数を識別するために使用されます。上記の設定では、MySQL サーバーに別の malloc ライブラリを使用するように環境変数が定義されています。