複数のサーバーインスタンスを起動する
提供:MySQL Practice Wiki
MySQLサーバーは単一のプロセス(mysqld)から成る。複数のプロセスインスタンスを起動することで、別々のMySQLサーバーを単一のOS上で構築することが可能である。その際注意すべきことがいくつかある。
リソースの競合を避ける
単一のOS上で複数のmysqldを動かす場合、mysqld同士でリソースの競合が起きないことが条件となる。以下のリソースが競合しないように適切にオプションを指定しよう。
| リソース | オプション | 説明 |
|---|---|---|
| データディレクトリ | --datadir | mysqldがデータを格納するためのディレクトリである。複数のmysqldが同時に同じディレクトリを使用することは出来ない。同時にアクセスするとデータ破壊を引き起こすのでくれぐれも注意されたい。 |
| TCP/IPポート番号 | --port | TCP/IPのポートも複数のmysqldで共有することは出来ない。従って、ポート番号をデフォルトのままにしておくのはまずく、各mysqldプロセスに個別のポート番号を割り当てる必要がある。またはUNIXであればネットワークからの接続を無効化(--skip-networkingオプションを使用)してもいいだろう。 |
| UNIXソケットファイル | --socket | TCP/IPのポート番号と同じく、UNIXソケットファイルも複数のmysqldで共有することは出来ない。UNIXソケットはネットワークと違って無効化することは出来ない。Windowsでは名前付きパイプの名前を指定する。(デフォルトはMySQLという名前になる。) |
| PIDファイル | --pid-file | プロセスのPIDを格納しておくためのファイルである。mysqld_safeにより利用される。mysqld_safeはPIDファイルを用いてプロセスの監視を行い、プロセスが終了すると自動的に再起動を行う。そのため、PIDはプロセスごとに割り当てられるため、複数のmysqldでPIDファイルを共有することは出来ない。 |
メモリ使用量およびディスク領域
mysqldを複数起動すると、当然のことながら各プロセスは個別にメモリおよびディスク領域を消費する。特にメモリ消費量には注意が必要である。例えばメモリが2GBのシステムにおいて、各インスタンスに1.5GBのバッファを割り当てるとたちまちメモリ不足に陥るだろう。そのような場合は、OSや他のプロセスが使用する分のメモリを考慮して、700MBずつ程度にバッファを抑えると良いだろう。
参照
- MySQLリファレンスマニュアル
- http://dev.mysql.com/doc/refman/5.1/ja/multiple-servers.html