ほとんどの人は、指定されたマシン上で 1 つの MySQL サーバーを実行しますが、複数のサーバーを実行することが有益な状況もあります。運用サーバーを実行している状態でサーバーの新しいバージョンをテストできます。この場合、別のサーバーが実行されます。
通常、オペレーティング システムは、開いているファイルの記述子の数に全体的なプロセス制限を課します。システムで制限を上げることが難しい場合は、複数のサーバーを実行することが回避策になります (たとえば、制限を上げるにはカーネルの再コンパイルが必要になる場合がありますが、マシンが管轄外にある場合はまだ再コンパイルできない可能性があります)。このシナリオでは、同じサーバーの複数のインスタンスを実行している可能性があります。
インターネット サービスは多くの場合、顧客に独自の MySQL インストールを提供しますが、これには別のサーバーが必要です。この場合、同じサーバーの複数のインスタンスを実行することも、異なる顧客が異なるバージョンの MySQL を必要とする場合には異なるサーバーを実行することもできます。
もちろん、複数のサーバーを同時に実行することは、1 つだけを実行する場合よりも複雑になります。複数のバージョンをインストールする予定がある場合、それらすべてを同じ場所にインストールすることはできません。サーバーの実行中、特定のパラメーターはサーバーごとに一意である必要があります。これらのパラメータには、サーバーのインストール場所、データ ディレクトリへのパス名、TCP/IP ポートと UNIX ドメイン ソケットのパス名、および複数のサーバーの実行に使用される UNIX アカウント (すべてが同じアカウント サーバーで実行されていない場合) が含まれます。複数のサーバーを実行することにした場合は、実行の記録を失わないよう、使用しているパラメーターを適切に説明しておく必要があります。
複数のサーバーの構成とインストール
同じサーバーの複数のインスタンスではなく、異なるバージョンのサーバーを実行する予定がある場合は、それらを異なる場所にインストールする必要があります。バイナリ (RPM ではない) 配布パッケージをインストールする場合、バージョン番号を含むディレクトリ名にインストールされます。ソース ディストリビューションからインストールする場合、異なるディストリビューションを分離しておく最も簡単な方法は、MySQL の各バージョンのインストール中に configure を実行するときに --with-prefix オプションを使用することです。これにより、ディストリビューションのバージョン番号にリンクできる別のディレクトリにインストールされます。たとえば、MySQL 配布パッケージは次のように構成できます。ここで、version は MySQL のバージョン番号です。
% ./configure ..with-prefix=/usr/local/mysql-version
with-prefix オプションは、サーバーの一意のデータ ディレクトリも決定します。 TCP/IP ポートやソケット パス名 (--with-tcp-port および --with-unix-socket) など、他のサーバー固有の値を構成するオプションを追加できます。
同じサーバーの複数のインスタンスを実行する予定がある場合は、サーバーに固有のオプションを実行時に指定する必要があります。
複数サーバーの起動プロセス
複数のサーバーを起動することは、safe_mysqld と mysql.server の両方が単一のサーバー上で適切に機能するため、単一のサーバーを使用する場合よりも複雑になります。著者は、ニーズに合わせて変更したより詳細なコピーを使用しない限り、safe_mysqld を注意深く研究し、それを起動プロセスの基礎として使用することをお勧めします。
対処しなければならない問題の 1 つは、オプション ファイルでオプションを指定する方法です。複数のサーバーがある場合、サーバー全体で変更される設定に /etc/my.cnf を使用することはできません。このファイルは、すべてのサーバーで同じ設定にのみ使用してください。各サーバーのデータ ディレクトリの場所が異なる場合は、各サーバーのデータ ディレクトリの my.cnf ファイルにサーバー固有のパラメータを指定できます。つまり、すべてのサーバーで使用される設定には /etc/my.cnf を使用し、サーバー固有の設定には DATA DIR/my.cnf を使用します。DATADIR はサーバーごとに異なります。
サーバー オプションを指定するもう 1 つの方法は、コマンド ラインの最初のオプションとして - - defa ul ts - file =path_name を使用して、path_name で指定されたファイルからオプションを読み取るようにサーバーに指示することです。このようにして、そのファイル内のサーバー オプションをそのサーバーに一意に配置し、起動時にファイルを読み取るようにサーバーに指示できます。このオプションを指定した場合、通常のオプション ファイル (/etc/my.cnf など) は使用されないことに注意してください。