MySQL 5.1 リファレンスマニュアル :: 2 MySQL のインストールと更新 :: 2.13 オペレーティング システムに特化した注釈 :: 2.13.5 他の Unix に関する注釈 :: 2.13.5.3 IBM-AIX に関する注釈
« 2.13.5.2 HP-UX バージョン 11.x に関する注釈

2.13.5.4 SunOS 4 に関する注釈 »
Section Navigation      [Toggle]
  • 2.13.5 他の Unix に関する注釈
  • 2.13.5.1 HP-UX バージョン 10.20 に関する注釈
  • 2.13.5.2 HP-UX バージョン 11.x に関する注釈
  • 2.13.5.3 IBM-AIX に関する注釈
  • 2.13.5.4 SunOS 4 に関する注釈
  • 2.13.5.5 Alpha-DEC-UNIX に関する注釈 (Tru64)
  • 2.13.5.6 Alpha-DEC-OSF/1 に関する注釈
  • 2.13.5.7 SGI Irix に関する注釈
  • 2.13.5.8 SCO UNIX および OpenServer 5.0.x に関する注釈
  • 2.13.5.9 SCO OpenServer 6.0.x に関する注釈
  • 2.13.5.10 SCO UnixWare 7.1.x および OpenUNIX 8.0.0 に関する注釈

2.13.5.3. IBM-AIX に関する注釈

xlC の自動検知が Autoconf で不明のため、configure を実行する前に多くの変数を設定する必要があります。以下の例では IBM コンパイラを使用しています。

export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
export CFLAGS="-I /usr/local/include"
export LDFLAGS="-L /usr/local/lib"
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS

./configure --prefix=/usr/local \
                --localstatedir=/var/mysql \
                --sbindir='/usr/local/bin' \
                --libexecdir='/usr/local/bin' \
                --enable-thread-safe-client \
                --enable-large-files

前述のオプションを使用して http://www-frec.bull.com/ にある MySQL ディストリビューションをコンパイルします。

前述のcofigure 行の -O3 を -O2 に変更すると、-qstrict オプションも削除できます。これが IBM C コンパイラの制限です。

MySQL のコンパイルに gcc あるいは egcs を使用する場合、-fno-exceptions フラグを使用する必要があります。なぜなら gcc/egcs の例外処理はスレッド セーフではないからです!(これは egcs 1.1 でテスト済み。)IBM のコンパイラには gcc を使用すると間違ったコードを生成する未詳の問題があります。

以下の configure 行を AIX の egcs および gcc 2.95 にお勧めします。

CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory

コンパイルを成功させるには -Wa,-many オプションが必要です。IBM はこの問題を認識していますが、回避策があるためにこの問題の修正にはそれほど急いでいません。MySQL は例外を使用しておらず、オプションが高速のコードを生成し、それを常にegcs / gcc と一緒に使用するように勧めているため、-fno-exceptions が gcc 2.95 に必要かは定かではありません。

アセンブラのコードで問題が発生した場合には、-mcpu=xxx オプションを CPU に合うように変更してみてください。.一般的には power2、power、あるいは powerpc が必要です。.604 あるいは 604e が必要になる場合もあります。確かではありませんが power はほとんどの時間、power2 マシン上でも安全だと思われます。

どの CPU を使用しているか分からない場合には、uname -m コマンドを実行します。それによって 000514676700 のような文字列を生成し、フォーマットはxxyyyyyymmss で xx および ss は常に 00 で、yyyyyy は一意のシステム ID で mm は CPU Planar の ID です。これらの値のチャートは http://www16.boulder.ibm.com/pseries/en_US/cmds/aixcmds5/uname.htm にあります。

これによりどんな CPU を使用しているかを決めるマシンの種類とマシンのモデルが分かります。

信号の問題 (MySQL が高負荷で突然停止する)がある場合、スレッドおよび信号の OS バグがある場合があります。この場合、以下のように設定して MySQL が信号を使用しないようにします。

CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
-DDONT_USE_THR_ALARM" \
./configure --prefix=/usr/local/mysql --with-debug \
    --with-low-memory

これによって MySQL の性能には影響ありませんが、mysqladmin kill あるいは mysqladmin shutdown と接続して 「sleeping」 しているクライアントを切断できなくなる副作用がでます。その代わり、クライアントはそれが次のコマンドを発行した時に切断します。

AIX バージョンの中には、libbind.a とリンクするこによって getservbyname() ダンプ コアを作成します。.これは AIX のバグですので IBM への報告する必要があります。

For AIX 4.2.1 および gcc で、以下の変更が必要です。

設定後、config.h および include/my_config.h を編集して行を以下のように変更します。

#define HAVE_SNPRINTF 1

に変更します。

#undef HAVE_SNPRINTF

最後に、mysqld.cc で、initgroups() にプロトタイプを追加する必要があります。

#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif

mysqld プロセスに大きなメモリを割り当てる必要がある場合、ulimit -d unlimited を使用するだけでは十分ではありません。mysqld_safe も変更して以下のような行を追加する必要があります。

export LDR_CNTRL='MAXDATA=0x80000000'

大きなメモリの使用に関する詳細は http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm にあります。

AIX 4.3 のユーザーは AIX にある make ユーティリティの代わりに gmake を使用する必要があります。

AIX 4.1 では、C コンパイラは個別の製品として AIX とはバンドルしていません。ここで入手できる gcc 3.3.2 を弊社としては推奨しています。 ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gcc/

AIX 上の gcc 3.3.2 で MySQL をコンパイルするステップは gcc 2.95 (特に config.h および my_config.h を configure 実行後に編集する必要性) を使用したステップに似ています。しかし、configure を実行する前に、curses.h ファイルを以下のようにパッチする必要があります。

/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/curses.h.ORIG
       Mon Dec 26 02:17:28 2005
--- /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/curses.h
Mon Dec 26 02:40:13 2005
***************
*** 2023,2029 ****


  #endif /* _AIX32_CURSES */
! #if defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus) || defined
(__STRICT_ANSI__)
  extern int delwin (WINDOW *);
  extern int endwin (void);
  extern int getcurx (WINDOW *);
--- 2023,2029 ----


  #endif /* _AIX32_CURSES */
! #if 0 && (defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus)
|| defined
(__STRICT_ANSI__))
  extern int delwin (WINDOW *);
  extern int endwin (void);
  extern int getcurx (WINDOW *);
Copyright © 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