無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 2 MySQL のインストールと更新 :: 2.13 オペレーティング システムに特化した注釈 :: 2.13.3 Solaris に関する注釈
« 2.13.2.2 Mac OS X Server 1.2 (Rhapsody)

2.13.3.1 Solaris 2.7/2.8 に関する注釈 »
Section Navigation      [Toggle]
  • 2.13 オペレーティング システムに特化した注釈
  • 2.13.1 Linux の注釈
  • 2.13.2 Mac OS X に関する注釈
  • 2.13.3 Solaris に関する注釈
    • 2.13.3.1 Solaris 2.7/2.8 に関する注釈
    • 2.13.3.2 Solaris x86 に関する注釈
  • 2.13.4 BSD に関する注釈
  • 2.13.5 他の Unix に関する注釈
  • 2.13.6 OS/2 に関する注釈

2.13.3. Solaris に関する注釈

[+/-]

2.13.3.1. Solaris 2.7/2.8 に関する注釈
2.13.3.2. Solaris x86 に関する注釈

PKG ディストリビューションを使用した Solaris への MySQL のインストールに関する情報は、項2.6. 「Solaris に MySQL をインストールする」 を参照してください。

Solaris の tar が長いファイル名を扱えないので、Solaris を使用する際、MySQL のディストリビューションを解凍する前でさえ、問題に遭遇する場合があります。これは MySQL を解凍する時にエラーが表示されることを意味します。

この問題が発生したら、GNU tar (gtar) を使用してディストリビューションを解凍します。Solaris 用にコンパイルしたコピーは http://dev.mysql.com/downloads/os-solaris.html にあります。

Sun のネイティブ スレッドは Solaris 2.5 およびそれ以降でしが動作しません。Solaris 2.4 およびそれ以前には、MySQL 自動的に MIT-pthreads を使用します。項2.9.5. 「MIT-pthreads ノート」 参照。

configure で以下のエラーが表示された場合には、コンパイラのインストールに問題があることを意味しています。

checking for restartable system calls... configure: error can not
run test programs while cross compiling

この場合、コンパイラを新しいバージョンにアップグレードします。この問題を config.cache ファイルに以下の行を追加することでも解決できる場合があります。

ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}

SPARC で Solaris を使用している場合、推奨しているコンパイラは gcc 2.95.2 あるいは 3.2 です。これは http://gcc.gnu.org/ にあります。egcs 1.1.1 および gcc 2.8.1 は SPARC では信頼性に欠けます。

gcc 2.95.2 を使用する際に推奨している configure 行は:

CC=gcc CFLAGS="-O3" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory \
    --enable-assembler

UltraSPARC システムの場合、-mcpu=v8 -Wa,-xarch=v8plusa を CFLAGS および CXXFLAGS 環境変数に追加すると 4 % パフォーマンスが向上します。

Sun の Forte 5.0 (あるいはそれ以降) コンパイラには、configure を以下のように実行します。

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \
CXX=CC CXXFLAGS="-noex -mt" \
./configure --prefix=/usr/local/mysql --enable-assembler

Sun の Forte コンパイラで 64 ビットのバイナリを作成するには、以下の設定オプションを使用します。

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \
CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \
./configure --prefix=/usr/local/mysql --enable-assembler

gcc を使用して 64 ビットの Solaris バイナリを作成するには、-m64 を CFLAGS および CXXFLAGS に追加して --enable-assembler を configure 行から削除します。

MySQL ベンチマークでは、Forte 5.0 を 32 ビットモードで使用すると、gcc 3.2 を -mcpu フラグで使用した場合に比べて UltraSPARC 上で速度が 4% 速くなります。

64-bit mysqld バイナリは、32 ビット バイナリより速度は 4% 遅くなりますが、さらに多くのスレッドおよびメモリを処理できます。

Solaris 10 を x86_64 で使用する場合、InnoDB ファイルを forcedirectio オプションで保持するファイルシステムを実装する必要があります。(デフォルトではこのオプションは実装されていません。)それを実装しないと InnoDB ストレージ エンジンをこのプラットフォームで使用した場合性能が大幅に劣化します。

fdatasync あるいは sched_yield で問題があった場合、LIBS=-lrt を configure 行に追加すると修正できます。

WorkShop 5.3 以前のコンパイラの場合、configure スクリプトを編集する必要があります。この行を:

#if !defined(__STDC__) || __STDC__ != 1

以下のように変更します。

#if !defined(__STDC__)

__STDC__ を -Xc オプションで起動すると、Sun のコンパイラは Solaris pthread.h ヘッダーファイルではコンパイルできません。これじゃ Sun のバグです (破損したコンパイラあるいは破損した include ファイル)。

mysqld を実行したときに以下のエラーメッセージが表示された場合、-mt マルチ スレッド オプションを有効にしないで MySQL を Sun のコンパイラでコンパイルしてみます。

libc internal error: _rmutex_unlock: rmutex not held

-mt を CFLAGS および CXXFLAGS 追加して再コンパイルします。

gcc の SFW バージョン (Solaris 8 に同梱) を使用する場合、/opt/sfw/lib を環境変数 LD_LIBRARY_PATH に configure を実行数r前に追加します。

gcc を sunfreeware.com から入手して使用する場合、多くの問題が発生する場合があります。これを避けるには、gcc および GNU binutils をそれらを動作しているマシンでコンパイルする必要があります。

MySQL を gcc でコンパイル中に以下のエラーが表示された場合、gcc が 使用している Solaris のバージョンに合っていないことを意味します。

shell> gcc -O3 -g -O2 -DDBUG_OFF  -o thr_alarm ...
./thr_alarm.c: In function `signal_hand':
./thr_alarm.c:556: too many arguments to function `sigwait'

この場合の適切な方法は gcc の最新バージョンを入手してそれを現在の gcc コンパイラでコンパイルすることです。少なくても Solaris 2.5、gcc のほとんどすべてのバイナリ バージョンは古くて、使用できない include ファイルを使用しており、スレッドを使用するすべてのプログラムを破損し、同様に他のプログラムも破損させる可能性があります。

Solaris ではどのシステム ライブラリも静的バージョン (libpthreads および libdl) を提供していませんので、MySQL を --static でコンパイルすることはできません。.コンパイルしようとすると、以下のエラーが表示されます。

ld: fatal: library -ldl: not found
undefined reference to `dlopen'
cannot find -lrt

お客様ご自身の MySQL クライアント プログラムをリンクさせる場合、ランタイムで以下のエラーが表示される場合があります。

ld.so.1: fatal: libmysqlclient.so.#:
open failed: No such file or directory

この問題は以下のメソッドのいずれかで回避できます。

  • クライアントを -Lpath ではなく -Wl,r/full/path/to/libmysqlclient.so フラグにリンクします。

  • libmysqclient.so を /usr/lib にコピーします。

  • クライアントを起動する前に libmysqlclient.so のディレクトリのパス名を LD_RUN_PATH 環境変数に追加します。

zlib をインストールせずに -lz にリンクする際 configure に問題がある場合、2 つのオプションがあります。

  • 圧縮通信プロトコルを使用するには、zlib を ftp.gnu.org から取得してインストールします。

  • MySQL をビルドするには configure を --with-named-z-libs=no オプションで実行します。

gcc を使用してユーザー定義関数 (UDFs) の MySQL へのロードで問題がある場合、-lgcc を UDF のリンク行に追加してみます。.

MySQL 自動的に起動するには、support-files/mysql.server を /etc/init.d にコピーして、シンボリック リンクを /etc/rc3.d/S99mysql.server の名前のそれに作成します。.

あまりにも多くのプロセスが急激に mysqld に接続を試みた場合、MySQL ログに以下のエラーが記録されます。

Error in accept: Protocol error

この問題の回避策としてサーバを --back_log=50 オプションで起動してみます。(MySQL 4 の前に -O back_log=50 を使用します。)

Solaris は setuid() アプリケーションのコア ファイルをサポートしていないので、--user オプションを使用している場合、コア ファイルを mysqld から取得できません。

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.