ここでの説明では、mysqld_safe を使用して MySQL の複数のインスタンスを起動します。 RPM ディストリビューションを使用した MySQL インストールの場合、サーバーの起動と停止は、複数の Linux プラットフォーム上の systemd によって管理されます。 これらのプラットフォームでは、mysqld_safe は不要であるためインストールされません。 systemd を使用した複数の MySQL インスタンスの処理の詳細は、セクション2.5.9「systemd を使用した MySQL Server の管理」 を参照してください。
Unix 上で複数の MySQL インスタンスを実行するための 1 つの方法は、デフォルトの TCP/IP ポートおよび Unix ソケットファイルが異なる別々のサーバーをコンパイルして、それぞれのサーバーが別々のネットワークインタフェースを待機するようにすることです。 インストールごとに異なる基本ディレクトリ内にコンパイルすることで、コンパイル済みのデータディレクトリ、ログファイル、および PID ファイルの場所がサーバーごとに自動的に別々になります。
デフォルトの TCP/IP ポート番号 (3306) および Unix ソケットファイル (/tmp/mysql.sock
) に対して既存の 5.7 サーバーが構成されていると仮定します。 別の操作パラメータを持つ新しい 8.0.29 サーバーを構成するには、次のような CMake コマンドを使用します。
shell> cmake . -DMYSQL_TCP_PORT=port_number \
-DMYSQL_UNIX_ADDR=file_name \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.29
ここで、port_number
および file_name
は、デフォルトの TCP/IP ポート番号および Unix ソケットファイルパス名と異なっている必要があり、CMAKE_INSTALL_PREFIX
値は、既存の MySQL インストールが存在する場所とは異なるインストールディレクトリを指定します。
MySQL Server が所定のポート番号を待機している場合、次のコマンドを使用して、基本ディレクトリおよび Unix ソケットファイル名などのいくつかの重要な構成可能変数に対して MySQL Server が使用中の操作パラメータを検出できます。
shell> mysqladmin --host=host_name --port=port_number variables
このコマンドによって表示される情報を使用すれば、追加のサーバーを構成するときに使用しないオプション値を見分けることができます。
ホスト名として localhost
を指定した場合、mysqladmin では TCP/IP ではなく Unix ソケットファイルがデフォルトで使用されます。 トランスポートプロトコルを明示的に指定するには、--protocol={TCP|SOCKET|PIPE|MEMORY}
オプションを使用します。
異なる Unix ソケットファイルおよび TCP/IP ポート番号を使用して起動するためだけの理由で新しい MySQL Server をコンパイルする必要はありません。 同じサーバーバイナリを使用し、実行時に異なるパラメータ値を使用してそれぞれのバイナリの起動を開始することも可能です。 これを行う 1 つの方法は、コマンド行オプションを使用する方法です。
shell> mysqld_safe --socket=file_name --port=port_number
別のサーバーを起動するには、異なる --socket
および --port
オプションの値を指定し、--datadir=
オプションを mysqld_safe に渡して、サーバーが別のデータディレクトリを使用するようにします。
dir_name
または、サーバーごとのオプションを別々のオプションファイルに配置し、適切なオプションファイルへのパスを指定する --defaults-file
オプションを使用して各サーバーを起動します。 たとえば、2 つのサーバーインスタンスのオプションファイルの名前が /usr/local/mysql/my.cnf
および /usr/local/mysql/my.cnf2
の場合、次のようなコマンドでサーバーを起動します。
shell> mysqld_safe --defaults-file=/usr/local/mysql/my.cnf
shell> mysqld_safe --defaults-file=/usr/local/mysql/my.cnf2
同様な効果を得るための別の方法は、環境変数を使用して Unix ソケットファイル名および TCP/IP ポート番号を設定する方法です。
shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell> MYSQL_TCP_PORT=3307
shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell> bin/mysqld --initialize --user=mysql
shell> mysqld_safe --datadir=/path/to/datadir &
これはテスト用に使用するための 2 番目のサーバーを起動する簡単な方法です。 この方法の利点は、同じシェルから起動するすべてのクライアントプログラムに対して環境変数設定が適用されるということです。 したがって、これらのクライアントに対する接続は 2 番目のサーバーに自動的に送信されます。
MySQL プログラムに影響を及ぼすために使用できるほかの環境変数のリストは、セクション4.9「環境変数」に記載されています。
Unix の場合、複数のサーバーを起動する別の方法として、mysqld_multi スクリプトがあります。 セクション4.3.4「mysqld_multi — 複数の MySQL サーバーの管理」を参照してください。