無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.12 同じマシン上での複数 MySQL サーバの実行
« 4.11.6 ログ ファイルの保守

4.12.1 Windows で複数サーバの実行 »
Section Navigation      [Toggle]
  • 4 データベース管理
  • 4.1 サーバ サイド プログラムの概略
  • 4.2 mysqld ? MySQL サーバ
  • 4.3 MySQL サーバ スタートアップ プログラム
  • 4.4 mysqlmanager ? MySQL Instance Manager
  • 4.5 インストール関連プログラム
  • 4.6 セキュリティ問題
  • 4.7 MySQL アクセス権限システム
  • 4.8 MySQL ユーザ アカウント管理
  • 4.9 バックアップとリカバリ
  • 4.10 MySQL のローカライズと国際的使用
  • 4.11 MySQL サーバ ログ
  • 4.12 同じマシン上での複数 MySQL サーバの実行
    • 4.12.1 Windows で複数サーバの実行
    • 4.12.2 Unix で複数サーバの実行
    • 4.12.3 複数サーバ環境でのクライアントプログラムの使用
  • 4.13 MySQL クエリ キャッシュ

4.12. 同じマシン上での複数 MySQL サーバの実行

[+/-]

4.12.1. Windows で複数サーバの実行
4.12.2. Unix で複数サーバの実行
4.12.3. 複数サーバ環境でのクライアントプログラムの使用

場合によっては、複数の mysqld サーバを同一のマシンで起動することがあります。たとえば、既存の稼働環境のままにして、新しい MySQL リリースをテストしたい場合が考えられます。また、ユーザごとに異なる mysqld サーバへのアクセス権を与える場合などもあります(顧客ごとに独立した MySQL インストールを提供するインターネット サービス プロバイダなど)。

単一のマシン上で複数のサーバを実行するには、いくつかのパラメータでサーバ固有の値を設定する必要があります。これらはコマンドラインまたはオプション設定ファイルで設定します。プログラム オプションに関しては、項3.3. 「プログラム・オプションの指定」 を参照してください。

少なくとも、次のオプションをサーバごとに変えます。

  • --port=port_num

    --port は、TCP/IP 接続のポート番号を制御する。

  • --socket=path

    --socket で、Unix のソケット ファイル パス、または Windows の名前付きパイプを制御する。Windows では、名前付きパイプ接続をサポートしているサーバに対して、独特のパイプ名を指定する必要がある。

  • --shared-memory-base-name=name

    Windows のみで使用可能。Windows で使用する共有メモリ名を指し、共有メモリ経由でクライアントの接続を許可する。共有メモリ接続をサポートするサーバに対して、共有メモリに独特な名前を指定する必要がある。

  • --pid-file=file_name

    Unix のみで使用可能。サーバがプロセス ID を書き込むファイルのパス名を指定する。

次のログ ファイル オプションを使用する場合は、それぞれのサーバに対して異なる値を設定する。

  • --log=file_name

  • --log-bin=file_name

  • --log-update=file_name

  • --log-error=file_name

項4.11.6. 「ログ ファイルの保守」で、ログ ファイルのオプションについて参照してください。

パフォーマンスを高めるには、次のオプションをサーバに別々に指定して、物理ディスク間の負荷を分けます。

  • --tmpdir=path

複数のテンポラリ ディレクトリを置くと、どの MySQL サーバにどの一時ファイルが属するのかわかりやすなるため、お勧めです。

データ ディレクトリについても、それぞれのサーバで異なるディレクトリを使用するようにします。これは --datadir=path オプションで指定します。

警告:2 つのサーバから同じデータベースのデータを更新しないでください。使用しているオペレーティング システムで障害からの保護ができるシステム ロックをサポートしていない場合、予期しない事態が発生する可能性があります。また、複数のサーバが同じデータ ディレクトリを使用し、ログを有効化している場合、適切なオプションを使用して、それぞれのサーバに異なるログ ファイル名を指定する必要があります。そうしないと、サーバ同士で同じファイルにログします。このセットアップは、MyISAM まはた MERGE テーブルでのみ機能します。他のストレージ エンジンでは使用できません。

サーバ間でのデータ ディレクトリ共有に関するこの警告は、NFS 環境にも当てはまります。NFS 環境で複数の MySQL サーバに同じデータ ディレクトリへのアクセスを認めることは しないでください。

  • 重要な問題として、NFS は速度のボトルネック。NFS にはそのような使用目的はない。

  • 2 つ以上のサーバが互いに干渉しないようにすることが困難。通常、NFS ファイルロックは lockd デーモンで処理するが、現在のところ、どのような状況でも 100% の信頼性でロックを実行できるプラットフォームは存在しない。

NFS で複数のサーバにデータ ディレクトリを共有することは賢明ではありません。 また、複数の CPU を持つ 1 台のコンピュータを用意し、スレッドを効率的に処理するオペレーティング システムを使用してください。

複数の MySQL インストールを異なる場所にする場合、--basedir=path オプションを使用して、それぞれのサーバに対してベース ディレクトリを指定し、それぞれのサーバがお互いに別のデータ ディレクトリ、ログ ファイル、および PID ファイルを使用するようにします(これらの値のデフォルトは、ベース ディレクトリと相対的に決定します)。そして、他にも指定する必要があるオプションとして、--socket と --port があります。たとえば、バイナリ配布の .tar ファイルを使用して MySQL の複数のバージョンをインストールするとします。これらを別々の場所にインストールすれば、対応するベース ディレクトリ下で ./bin/mysqld_safe コマンドを使用して、インストールしたサーバを別々に起動できます。 mysqld_safe が、mysqld に渡す適切な --basedir オプションを特定するため、--socket オプションと --port オプションを mysqld_safe に設定するだけで済みます。

次のセクションで説明するように、環境変数の設定または適切なコマンドライン オプションの指定で、追加サーバを起動することが可能です。ただし、より永続的に複数のサーバを実行する必要がある場合には、オプション設定ファイルを使用して、それぞれサーバ固有のオプション値を指定する方法が便利です。これには、--defaults-file オプションを活用します。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.