スレッド
パッケージよく統合されているため、MySQL
の使用に FreeBSD 4.x
あるいはそれ以降の使用をお勧めします。セキュアで安定してシステムにするには、-RELEASE
の印の付いた FreeBSD kernel のみを使用します。
MySQL
のインストールで最も容易(で推奨される)な方法は
mysql-server ポートおよび
mysql-client
ポートを使用することです。それらは
http://www.freebsd.org/
で入手できます。これらのポート使用することで以下のメリットがあります。
FreeBSD バージョンで動作することが知られているすべての最適化を行った MySQL
自動設定およびビルド
/usr/local/etc/rc.d
にインストールされた自動スクリプト
どのファイルがインストールされているかを確認するための
pkg_info -L
の使用
お客さまのマシンで MySQL
をもはや必要ない場合にそれを削除できる
pkg_delete
の使用
MIT-pthreads を FreeBSD 2.x で、ネイティブ スレッドを FreeBSD 3 およびそれ以降で使用するようお勧めします。ネイティブ スレッドを 2.2.x バージョンで動作できますが、mysqld のシャットダウンの問題が発生する場合があります。
不幸にも、FreeBSD
のある種の関数のコールがまだ完全にスレッド
セーフになっていません。最も注目に値するのは、これには
gethostbyname()
関数が含まれているので、これによって MySQL
でホスト名を IP
アドレスに変換できます。ある環境下では、mysqld
プロセスが突然 100% CPU
負荷になり、応答がなくなります。この問題に遭遇した場合には、--skip-name-resolve
オプションを使用して MySQL
を起動してみます。
あるいは、FreeBSD の MySQL を LinuxThreads ライブラリにリンクすることによって、ネイティブの FreeBSD のスレッド実装による幾つかの問題を回避することができます。LinuxThreads とネイティブ スレッドの比較をよくまとめた Jeremy Zawodny の記事 あなたの MySQL サーバにどちらを選ぶ、FreeBSD それとも Linux ? が http://jeremy.zawodny.com/blog/archives/000697.html にあります。
FreeBSD 上の LinuxThreads の既知の問題:
接続回数
(wait_timeout
、interactive_timeout
および net_read_timeout
)
の値は保証されていません。この問題の兆候としては、接続が執拗に非常に長い間遮断されることなく続き、スレッドの
「停止」の効果がなく
スレッドが新しいコマンドによって停止されるまで続きます。
これは多分スレッド ライブラリの信号処理の問題で信号が未処理の読み込みを中断できないために起こるのものと考えられます。この問題は FreeBSD 5.0 では修正される予定です。
MySQL ビルド プロセスが機能するには GNU make (gmake) が必要です。GNU make が利用できない場合、MySQL をコンパイルする前にインストールする必要があります。
gcc (2.95.2 and up) の FeeBSD に MySQL をコンパイルしてインストールする方法として推奨しているのは:
CC=gcc CFLAGS="-O2 -fno-strength-reduce" \ CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions \ -felide-constructors -fno-strength-reduce" \ ./configure --prefix=/usr/local/mysql --enable-assembler gmake gmake install cd /usr/local/mysql bin/mysql_install_db --user=mysql bin/mysqld_safe &
configure が MIT-pthreads を使用している場合、MIT-pthreads の注釈を読む必要があります。項2.9.5. 「MIT-pthreads ノート」 参照。
make install から
/usr/include/pthreads
が見つからないとのエラーが表示された場合、configure
が MIT-pthreads
に必要なそれを検知しなかったことになります。.この問題を修正するには、config.cache
を削除して、次に configure を
--with-mit-threads
オプションで実行します。
名前のリゾルバーが正しく設定されているか確認します。正しく設定されていないと、リゾルバーの遅延あるいは
mysqld
への接続に失敗します。また、localhost
の /etc/hosts
ファイルへのエントリが正しいか確認します。このファイルは以下のような行で実行されます。
127.0.0.1 localhost localhost.your.domain
FreeBSD
は非常に小さいデフォルトのファイル処理制限があることで知られています。項B.1.2.17. 「'File
' Not Found and
Similar Errors」
参照。サーバを --open-files-limit
オプションを使用して mysqld_safe
に起動しするか、あるいは
/etc/login.confg
の
mysql
ユーザーの制限を上げそれを cap_mkdb
/etc/login.conf
で再度ビルドします。また、デフォルト
(chpass mysqld-user-name
を使用する)
を使用していない場合、パスワード
ファイルのこのユーザーに適切なクラスを設定しているか確認します。項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」
参照。
FreeBSD の制限はで、システムに利用できる大きな RAM がある場合でも、プロセスのサイズを 512MB に制限します。それで以下のようなエラーが表示されます。
Out of memory (Needed 16391 bytes)
現在のバージョンの FreeBSD (最低でも 4.x
およびそれ以降)
では、この制限を以下のエントリを
/boot/loader.conf
ファイルに追加し、マシンをリブートして増やすことができます
(これらはランタイム時に sysctl
コマンドで変更できる設定ではありません)。
kern.maxdsiz="1073741824" # 1GB kern.dfldsiz="1073741824" # 1GB kern.maxssiz="134217728" # 128MB
FreeBSD の旧バージョンでは、kernel
を再コンパイルしてプロセスの最大データ
セグメント
サイズを変更する必要があります。この場合の詳細に関しては
LINT
設定ファイルの
MAXDSIZ
オプションを参照してください。
MySQL
の現在の日付で問題がある場合には、TZ
変数の設定が役に立ちます。項2.14. 「環境変数」
参照。