'
2.12.5.1. HP-UX 10.20版注意事项
2.12.5.2. HP-UX 11.x版注意事项
2.12.5.3. IBM-AIX注意事项
2.12.5.4. SunOS 4注意事项
2.12.5.5. Alpha-DEC-UNIX(Tru64)版注意事项
2.12.5.6. Alpha-DEC-OSF/1注意事项
2.12.5.7. SGI Irix注意事项
2.12.5.8. SCO UNIX和OpenServer 5.0.x版注意事项
2.12.5.9. SCO UnixWare 7.1.x和OpenUNIX 8.0.0版注意事项
2.12.5.10. SCO OpenServer 6.0.x版注意事项

2.12.5.1. HP-UX 10.20版注意事项

HP-UX上编译MySQL时,有一些“小”问题。我们推荐您使用gcc而不是HP-UX自己的编译器,因为gcc可以生成更好的代码!

我们推荐在HP-UX上使用gcc 2.95,不使用高度优化标志(类似-O6),因为这在HP-UX 上可能不安全。

下面的configure行在gcc 2.95中应当工作:

CFLAGS="-I/opt/dce/include -fpic" \
CXXFLAGS="-I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti" \
CXX=gcc \
./configure --with-pthread \
    --with-named-thread-libs='-ldce' \
    --prefix=/usr/local/mysql --disable-shared

下面的configure行在gcc 3.1中应当工作:

CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc \
CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors \
    -fno-exceptions -fno-rtti -O3 -fPIC" \
./configure --prefix=/usr/local/mysql \
    --with-extra-charsets=complex --enable-thread-safe-client \
    --enable-local-infile  --with-pthread \
    --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC
    --disable-shared

2.12.5.2. HP-UX 11.x版注意事项

由于在标准 HP-UX库中有一些严重错误,试图在HP-UX 11.0上运行MySQL前应当安装下面的补丁:
PHKL_22840 Streams cumulative
PHNE_22397 ARPA cumulative

这样可以解决在线程应用程序中运行recv()时得到EWOULDBLOCK和执行accept()时得到EBADF的问题。

如果你在未打补丁的HP-UX 11.x系统中使用gcc 2.95.1,可能会遇到下面的错误:

In file included from /usr/include/unistd.h:11,
                 from ../include/global.h:125,
                 from mysql_priv.h:15,
                 from item.cc:19:
/usr/include/sys/unistd.h:184: declaration of C function ...
/usr/include/sys/pthread.h:440: previous declaration ...
In file included from item.h:306,
                 from mysql_priv.h:158,
                 from item.cc:19:

问题是HP-UX没有一致地定义pthreads_atfork()。它同/usr/include/sys/unistd.h184/usr/include/sys/pthreads.h440中的原型冲突。

一个解决办法是将/usr/include/sys/unistd.h复制到MySQL/include并编辑unistd.h,对它进行更改以匹配pthreads.h中的定义。查找下列行:

extern int pthreads_atfork(void (*prepare)()void (*parent)(),
                                          void (*child)())

将它更改为:

extern int pthreads_atfork(void (*prepare)(void)void (*parent)(void),
                                          void (*child)(void))

更改完后,下面的configure行应当工作:

CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \
./configure --prefix=/usr/local/mysql --disable-shared

如果你使用HP-UX 编译器,可以使用下面的命令(已经用cc B.11.11.04进行了测试)

CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure \
    --with-extra-character-set=complex

你可以忽略下面类型的任何错误:

aCC: warning 901: unknown option: `-3': use +help for online
documentation

如果运行configure时遇到下面的错误,请验证在到HP-UX CC++编译器的路径前是否有到K&R编译器的路径:

checking for cc option to accept ANSI C... no
configure: error: MySQL requires an ANSI C compiler (and a C++ compiler).
Try gcc. See the Installation chapter in the Reference Manual.

不能编译的另一个原因可能是你没有按照前面所述定义+DD64标记。

对于HP-UX 11,另一个办法是使用http://dev.mysql.com/downloads/提供的MySQL二进制,这是我们已经构建并测试过的。我们也收到了MySQLHP-UX 10.20二进制可以在HP-UX 11上成功运行的报告。如果你遇到问题,一定要检查HP-UX补丁的版本。

2.12.5.3. IBM-AIX注意事项

Autoconf中没有了xlC自动检测,因此运行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分发版的选项。

如果你将前面的configure行中的-O3改为-O2,必须删掉-qstrict选项。这是对IBM C编译器的限制。

如果你正在使用gccegcs编译MySQL必须使用-fno-exceptions标志,因为gcc/egcs的异常处理不是对线程安全的!(已经用egcs1.1测试过)。IBM汇编程序也有一些已知问题,当使用gcc时可以生成坏的代码。

AIX 上使用egcsgcc 2.95,我们推荐下列configure行:

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知道该问题,但是由于工作区的原因,不急于修复它。我们不知道gcc 2.95是否需要-fno-exceptions选项,但是因为MySQL不使用例外,并且该选项可以产生快速的代码,我们建议使用egcs/gcc时使用该选项。

如果汇编码有问题,试试更改-mcpu=xxx选项以匹配你的CPU。一般情况可能需要使用power2powerpowerpc。另外,你可能需要使用604604e。我们不能绝对肯定但怀疑power一般应安全,即使在power2机器上也安全。

如果你不知道你的CPU是什么样的,可以执行uname -m命令。可以产生类似000514676700的字符串,格式为xxyyyyyymmss,其中xxss总是00,yyyyyy是唯一的系统IDmmCPU PlanarID。从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 killmysqladmin shutdown杀死在一个连接上“睡眠”的客户端。相反,当客户端发出下一个命令时,它将死掉。

AIX的一些版本上用libbind.a链接使得getservbyname()内核转储,这是AIX的一个缺陷并且应该报告IBM

对于AIX 4.2.1gcc,进行下面的更改。

配置完后,编辑config.hinclude/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

2.12.5.4. SunOS 4注意事项

SunOS 4上,需要用MIT-pthreads编译MySQL,反过来这意味着需要使用GNU make

一些SunOS 4系统的动态库和libtool有问题。可以使用下列configure行来避免这个问题:

./configure --disable-shared --with-mysqld-ldflags=-all-static

当编译readline时,可能会遇到关于重复定义的警告,可以忽略。

当编译mysqld的时候,将会遇到implicit declaration of function警告,可以忽略。

2.12.5.5. Alpha-DEC-UNIX(Tru64)版注意事项

如果你在Digital Unix上使用egcs 1.1.2,应当升级到gcc 2.95.2,因为egcsDEC上有一些严重缺陷!

当在Digital UNIX下编译线程程序时,文档推荐对于cccxx使用-pthread选项和-lmach -lexc库(除了-lpthread)。你应该象下面这样运行configure

CC="cc -pthread" CXX="cxx -pthread -O" \
./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"

当编译mysqld时,会看见下面的警告:

mysqld.cc: In function void handle_connections()':
mysqld.cc:626: passing long unsigned int *' as argument 3 of
accept(int,sockadddr *, int *)'

你可以放心地忽略这些警告,它们的发生是因为configure只能检测出错误,而不是警告。

如果直接从命令行启动服务器,当退出时,可能有死掉的问题。(当你退出时,重要进程收到一个SIGHUP信号),如果如此,试着象这样启动服务器:

nohup mysqld [options] &

nohup使得后面的命令忽视从终端发来的任何SIGHUP信号了。另外,通过运行safe_mysqld启动服务器,可以让nohup调用mysqld。请参见5.1.3节,“mysqld_safe:MySQL服务器启动脚本”

如果编译mysys/get_opt.c时遇到问题,只需要从启动文件删掉#define _NO_PROTO行。

如果使用CompaqCC编译器,下面的configure应当工作:

CC="cc -pthread"
CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host"
CXX="cxx -pthread"
CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all \
    -arch host -noexceptions -nortti"
export CC CFLAGS CXX CXXFLAGS
./configure \
    --prefix=/usr/local/mysql \
    --with-low-memory \
    --enable-large-files \
    --enable-shared=yes \
    --with-named-thread-libs="-lpthread -lmach -lexc -lc"
gnumake

如果用共享库编译时libtool出现问题,应当能够在链接mysql时通过下述命令解决该问题:

cd mysql
/bin/sh ../libtool --mode=link cxx -pthread  -O3 -DDBUG_OFF \
    -O4 -ansi_alias -ansi_args -fast -inline speed \
    -speculate all \ -arch host  -DUNDEF_HAVE_GETHOSTBYNAME_R \
    -o mysql  mysql.o readline.o sql_string.o completion_hash.o \
    ../readline/libreadline.a -lcurses \
    ../libmysql/.libs/libmysqlclient.so  -lm
cd ..
gnumake
gnumake install
scripts/mysql_install_db

2.12.5.6. Alpha-DEC-OSF/1注意事项

如果遇到编译问题并安装了DEC CCgcc,尝试这样运行configure

CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

如果遇到c_asm.h文件的问题,可以创建并使用一个“哑(dummy)c_asm.h文件:

touch include/c_asm.h
CC=gcc CFLAGS=-I./include \
CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

请注意从http://ftp.support.compaq.com/public/unix/下载最新的DEC(Compaq)补丁可以修复ld程序的下面问题。

OSF1 V4.0D和编译器"DEC C V5.6-071 on Digital UNIX V4.0 (Rev. 878)" 上,编译器有了一些奇怪的行为(未定义asm标志)/bin/ld好象也被破坏(当链接mysqld时,发生_exit undefined问题)。在这个系统上,从OSF 4.0C的版本替换了/bin/ld后,我们设法用下列configure命令行编译MySQL

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql

Digital编译器“C++ V6.1-029”,下列命令应该工作:

CC=cc -pthread
CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \
       -speculate all -arch host
CXX=cxx -pthread
CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \
         -speculate all -arch host -noexceptions -nortti
export CC CFLAGS CXX CXXFLAGS
./configure --prefix=/usr/mysql/mysql \
            --with-mysqld-ldflags=-all-static --disable-shared \
            --with-named-thread-libs="-lmach -lexc -lc"

OSF1的某些版本中,alloca()函数被破坏,通过删除定义'HAVE_ALLOCA'的“config.h的行更正它。

alloca()函数也可能在/usr/include/alloca.h里面有一个不正确的原型,源于此的警告可以忽略。

configure将自动地使用下列线程库: --with-named-thread-libs="-lpthread -lmach -lexc -lc"

当使用gcc时,也可以试试这样运行configure

CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ....

如果你的信号有问题(MySQL出人意料地在高负载下死掉),可能遇到了一个线程和信号有关的OS 缺陷。在这种情况下,你可以告诉MySQL如下配置不使用信号:

CFLAGS=-DDONT_USE_THR_ALARM \
CXXFLAGS=-DDONT_USE_THR_ALARM \
./configure 

这不影响MySQL性能,但是有副作用,就是不能用mysqladmin killmysqladmin shutdown杀死在一个连接上“睡眠”的客户端。相反,当客户端发出下一个命令时,它将死掉。

使用gcc 2.95.2,会遇到下面的编译错误:

sql_acl.cc:1456: Internal compiler error in `scan_region',
at except.c:2566
Please submit a full bug report.

要修复该问题,应当进入sql目录并剪切、复制最后gcc,但应将-O3 改为-O0 (或如果编译行没有任何-O选项,应在gcc后面增加-O0)。之后,可以回到顶级目录并重新运行make

2.12.5.7. SGI Irix注意事项

如果使用Irix 6.5.3或更新版,如果用拥有CAP_SCHED_MGT权限的用户(例如root)运行mysqld或用下面的shell命令给mysqld服务器该权限,mysqld能够创建线程:

chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld

可能需要在运行configure后且在编译前定义config.h里面的一些符号。

在一些Irix实现中,alloca()函数被破坏。如果mysqld服务器死于一些SELECT语句,把config.h定义HAVE_ALLOCHAVE_ALLOCA_H的行删除即可。如果mysqladmin create不工作,把config.h定义HAVE_READDIR_R的行删除,你也可能必须删除HAVE_TERM_H行。

SGI推荐将本页上的所有补丁作为一个整体来安装:

http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html

至少,应该安装最新的核心卷(rollup)、最新的rld卷和最新的libc卷。

很明确,对于pthreads支持,需要本页上所有的POSIX补丁:

http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html

如果在编译mysql.cc时,遇到类似于下面的错误:

"/usr/include/curses.h", line 82: error(1084):
invalid combinatiof type

那么应在MySQL源码树的顶级目录输入下列命令:

extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h
make

应该也有安排上的问题报告。如果只有一个线程正在运行,事情会变慢的。通过启动另外一个客户端来避免它,这可以导致此后其它线程的执行速度增加210倍。这是Irix线程难以理解的问题;可能必须临时准备找出解决方案直到它能被修正。

 

如果你正在用gcc编译,可以使用下列configure命令:

 

CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql --enable-thread-safe-client \
    --with-named-thread-libs=-lpthread

在用原生Irix CC++编译器7.3.1.2Irix 6.5.11,下面的项工作:

CC=cc CXX=CC CFLAGS='-O3 -n32 -TARG:platform=IP22 -I/usr/local/include \
-L/usr/local/lib' CXXFLAGS='-O3 -n32 -TARG:platform=IP22 \
-I/usr/local/include -L/usr/local/lib' \
./configure --prefix=/usr/local/mysql --with-innodb --with-berkeley-db \
    --with-libwrap=/usr/local \
    --with-named-curses-libs=/usr/local/lib/libncurses.a

2.12.5.8. SCO UNIX和OpenServer 5.0.x版注意事项

当前的移植仅在“sco3.2v5.0.5,sco3.2v5.0.6”和“sco3.2v5.0.7”系统上进行了测试,在“sco 3.2v4.2”上的移植也有很大进展。OpenServer 5.0.8(Legend)具有原生线程,允许文件大于2GB。目前最大的文件可以达到2GB

我们可以在OpenServer上用gcc 2.95.3用下面的configure命令编译MySQL

CC=gcc CXX=gcc ./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client --with-innodb \
    --with-openssl --with-vio --with-extra-charsets=complex

ftp://ftp.sco.com/pub/openserver5/opensrc/gnutools-5.0.7Kj可以得到gcc

该开发系统需要在OpenServer 5.0.6OpenServer Execution Environment Supplement oss646Boss656BOpenSource库位于 gwxlibs。所有OpenSource工具位于opensrc目录。可以从ftp://ftp.sco.com/pub/openserver5/opensrc/获得。

我们建议使用最新的MySQL产品发布。

SCO提供的操作系统补丁:OpenServer 5.0.[0-6]ftp://ftp.sco.com/pub/openserver5OpenServer 5.0.7ftp://ftp.sco.com/pub/openserverv5/507

SCO提供的关于安全修复的信息:Server 5.0.xftp://ftp.sco.com/pub/security/OpenServer

OpenSever 5.0.x系统上最大的文件的大小为2GB

OpenServer 5.0.x上,可供串缓冲区、clist和锁定记录分配的总内存不能超出60MB

串缓冲区的分配单位为4096 字节的页,clists70字节,锁定记录为64字节,因此为:

(NSTRPAGES * 4096) + (NCLIST * 70) + (MAX_FLCKREC * 64) <= 62914560

按照以下步骤来配置Database Services选项。如果你不确定应用程序是否需要,参见随应用程序提供的文档。

1.    root登录。

2.    编辑/etc/conf/sdevice.d/suds文件启用SUDS驱动程序。将第2个域内的N更改为Y

3.    使用mkdev aioHardware/Kernel Manager来启用对asynchronous I/O的支持,并重新连接内核。要想让用户锁定内存用于该类I/O,更新aiomemlock(F)文件。应当对该文件进行更新,包括进可以使用AIO的用户和可以锁定的最大数量的内存。

4.    许多应用程序使用setuid二进制,因此你只能指定单个用户 。请参见随应用程序提供的文档来看是否应用程序是这种情况。

完成该进程后,重新启动系统,创建包括这些更改的新内核。

默认情况,/etc/conf/cf.d/mtune中的条目设置为:

Value           Default         Min             Max
-----           -------         ---             ---
NBUF            0               24              450000
NHBUF           0               32              524288
NMPBUF          0               12              512
MAX_INODE       0               100             64000
MAX_FILE        0               100             64000
CTBUFSIZE       128             0               256
MAX_PROC        0               50              16000
MAX_REGION      0               500             160000
NCLIST          170             120             16640
MAXUP           100             15              16000
NOFILES         110             60              11000
NHINODE         128             64              8192
NAUTOUP         10              0               60
NGROUPS         8               0               128
BDFLUSHR        30              1               300
MAX_FLCKREC     0               50              16000
PUTBUFSZ        8000            2000            20000
MAXSLICE        100             25              100
ULIMIT          4194303         2048            4194303
* Streams Parameters
NSTREAM         64              1               32768
NSTRPUSH        9               9               9
NMUXLINK        192             1               4096
STRMSGSZ        16384           4096            524288
STRCTLSZ        1024            1024            1024
STRMAXBLK       524288          4096            524288
NSTRPAGES       500             0               8000
STRSPLITFRAC    80              50              100
NLOG            3               3               3
NUMSP           64              1               256
NUMTIM          16              1               8192
NUMTRW          16              1               8192
* Semaphore Parameters
SEMMAP          10              10              8192
SEMMNI          10              10              8192
SEMMNS          60              60              8192
SEMMNU          30              10              8192
SEMMSL          25              25              150
SEMOPM          10              10              1024
SEMUME          10              10              25
SEMVMX          32767           32767           32767
SEMAEM          16384           16384           16384
* Shared Memory Parameters
SHMMAX          524288          131072          2147483647
SHMMIN          1               1               1
SHMMNI          100             100             2000
FILE            0               100             64000
NMOUNT          0               4               256
NPROC           0               50              16000
NREGION         0               500             160000

我们建议将这些值设置为:

NOFILES应当为40962048

MAXUP应当为2048

要想更改内核,进入/etc/conf/bin并使用./idtune name parameter来更改。例如,要将SEMMS改为200,用root账户执行命令:

# cd /etc/conf/bin
# ./idtune SEMMNS 200

我们建议对该系统进行调节,但是使用的正确参数值取决于访问应用程序或数据库的用户数目和数据库空间(也就是使用的缓冲池)。下面的项影响/etc/conf/cf.d/stune中定义的内核参数:

SHMMAX(推荐设定值:128MB)SHMSEG(推荐设定值:15)。这些参数影响创建用户缓冲池的MySQL数据库引擎。

NOFILESMAXUP至少应达到2048

MAXPROC至少应当设置到3000/4000(取决于用户数)或更大值。

建议使用下面的公式来计算SEMMSLSEMMNSSEMMNU的值:

SEMMSL = 13

发现13最适合进程和MySQL

SEMMNS = SEMMSL * 系统上运行的db服务器数目。

SEMMNS设置为SEMMSL值乘以你在该系统上一次运行的db服务器的(最大)数目。

SEMMNU = SEMMNS

SEMMNU值设置为等于SEMMNS值。可以将该值设置为75%SEMMNS,但是这是一个保守的估计。

至少需要安装"SCO OpenServer Linker and Application Development Libraries"OpenServer开发系统来使用gcc。你不能只使用GCC Dev系统,而不安装它们。

你应当获得FSU PTHREADS安装软件包并先安装它。可以从http://moss.csc.ncsu.edu/~mueller/ftp/pub/PART/pthreads.tar.gz获得。你还可以从 ftp://ftp.zenez.com/pub/zenez/prgms/FSU-threads-3.14.tar.gz获得预编译的安装软件包。

FSU Pthreads能用带tcpipSCO UNIX 4.2编译,或使用OpenServer 3.0Open Desktop 3.0(OS 3.0 ODT 3.0),安装带有使用一个GCC 2.5.XSCO开发系统。对ODTOS 3.0,将需要一个GCC 2.5.x的良好移植。没有一个良好的移植会有很多问题。对这个产品的移植需要SCO UNIX开发系统,没有它,缺少所需的库和链接器。还需要SCO-3.2v4.2-includes.tar.gz。该文件包含SCO 开发include 文件的更改这是构建MySQL所需要的。需要用这些修改的头文件替换已有系统的include文件。可以从 ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz获得。

为了在系统上构造FSU Pthreads,需要做的工作是运行GNU make。启动FSU-threads-3.14.tar.gz中的Makefile生成FSU-线程。

thread/src目录下运行./configure并且选择SCO OpenServer选项。这个命令拷贝Makefile.SCO5”Makefile。然后运行make

为了在默认的“/usr/include目录安装,作为root登录,然后cd 到“thread/src目录,并运行make install

记得在制作MySQL时要使用GNU make

注释:如果你不是作为root启动safe_mysqld,将可能每进程只有 默认的110个打开的文件。mysqld将在日志文件写下关于此的注解。

SCO 3.2V4.2,应当使用FSU PTHREADS 3.14或更新版。以下configure命令应当工作:

CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
./configure \
    --prefix=/usr/local/mysql \
    --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
    --with-named-curses-libs="-lcurses"

你可能遇到include文件的某些问题。在这种情况下,你能在ftp://www.mysql.com/pub/mysql/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz找到新的SCO特定的include文件。你应该在MySQL源码树的“include目录下打开这个文件。

SCO开发注意事项:

  • MySQL应该自动地检测FSU Pthreads并且用-lgthreads -lsocket -lgthreads选项链接mysqld
  • SCO开发库在FSU Pthreads是重入(reentrant)的。SCO宣称它的库函数是重入的,因此他们一定在FSU Pthreads中是重入的。在 OpenServer上的 FSU Pthreads 试图使用SCO方案制作重入的库。
  • FSU Pthreads(至少在ftp::/ftp.zenez.com的版本)链接了GNU malloc,如果你遇到内存使用的问题,确定gmalloc.o包含在libgthreads.alibgthreads.so中。

·         FSU Pthreads中,下列系统调用是pthreads感知的:read()write()getmsg()connect()accept()select()wait()

·         CSSA-2001-SCO.35.2(补丁列为定制erg711905-dscr_remap安全补丁(版本 2.0.0))中断FSU线程并使mysqld不稳定。如果你想在 OpenServer 5.0.6机器上运行mysqld必须删除它。

·         如果你使用SCO OpenServer 5,可能需要用-DDRAFT7 in CFLAGS重新编译FSU pthreads。否则,mysqld启动时InnoDB会挂起。

·         SCOftp://ftp.sco.com/pub/openserver5提供了OpenServer 5.0.x的操作系统补丁。

·         SCOftp://ftp.sco.com/pub/security/sseftp://ftp.sco.com/pub/security/sse提供了OpenServer 5.0.x的安全修复和libsocket.so.2

·         Pre-OSR506安全修复。在ftp://stage.caldera.com/pub/security/openserver/ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/提供了libsocket.so.2libresolv.so.1telnetd修复,以及在pre-OSR506系统上的安装说明。

最好在编译/使用MySQL之前安装这些补丁。

Legend/ OpenServer 6.0.0有原生线程,没有2GB文件大小限制。

2.12.5.9. SCO UnixWare 7.1.x和OpenUNIX 8.0.0版注意事项

我们建议使用最新的MySQL产品发布。

我们可以用下面的configure命令UnixWare 7.1.x中编译MySQL

CC="cc" CFLAGS="-I/usr/local/include" \
CXX="CC" CXXFLAGS="-I/usr/local/include" \
./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client --with-berkeley-db=./bdb \
    --with-innodb --with-openssl --with-extra-charsets=complex

如果你想要使用gcc,必须使用gcc 2.95.3或更新版。

CC=gcc CXX=g++ ./configure --prefix=/usr/local/mysql

当构建MySQL时不使用UnixWare 7.1.4OpenServer 6.0.0中的Berkeley DB版本。MySQL使用自己的Berkeley DB。用来构建静态和动态库的configure命令src_directory/bdb/build_unix/中,但是它不在MySQL自己的BDB版本中。工作区如下所示。

1.    按常规配置MySQL

2.    进入cdbdb/build_unix/

3.    -p Makefile复制(cp)Makefile.sav

4.    使用同样的选项并运行../dist/configure

5.    运行gmake

6.    cp -p Makefile.sav Makefile

7.    进入顶级源目录并运行gmake

允许生成共享和动态库并工作。

SCOftp://ftp.sco.com/pub/unixware7提供了UnixWare 7.1.1的操作系统补丁,ftp://ftp.sco.com/pub/unixware7/713/ 提供了UnixWare 7.1.3的操作系统补丁, UnixWare 7.1.4的见ftp://ftp.sco.com/pub/unixware7/714/, OpenUNIX 8.0.0的见 ftp://ftp.sco.com/pub/openunix8

SCO提供的安全修复相关信息:OpenUNIXftp://ftp.sco.com/pub/security/OpenUNIXUnixWare ftp://ftp.sco.com/pub/security/UnixWare

默认情况,在UnixWare 7.1.1系统中最大文件的大小为1GB,但是UnixWare 7.1.4中文件大小限制是1 TB(用VXFS)。一些OS实用程序 的限制是2GB。在UnixWare 7中可能的最大文件大小是1TB(用VXFS)。

UnixWare 7.1.4中,你不需要采取措施来获得大文件支持,但在UnixWare 7.1.x的以前版本中需要启用大文件支持,可以运行fsadm

# fsadm -Fvxfs -o largefiles /
# fsadm /         * Note
# ulimit unlimited
# cd /etc/conf/bin
# ./idtune SFSZLIM 0x7FFFFFFF     ** Note
# ./idtune HFSZLIM 0x7FFFFFFF     ** Note
# ./idbuild -B
 
* This should report "largefiles".
** 0x7FFFFFFF represents infinity for these values.

shutdown重启系统。

默认情况,/etc/conf/cf.d/mtune中的条目设置为:

Value           Default         Min             Max
-----           -------         ---             ---
SVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
HVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
SSTKLIM         0x1000000       0x2000          0x7FFFFFFF
HSTKLIM         0x1000000       0x2000          0x7FFFFFFF

我们建议将这些值设置为:

SDATLIM 0x7FFFFFFF
HDATLIM 0x7FFFFFFF
SSTKLIM 0x7FFFFFFF
HSTKLIM 0x7FFFFFFF
SVMMLIM 0x7FFFFFFF
HVMMLIM 0x7FFFFFFF
SFNOLIM 2048
HFNOLIM 2048

我们建议对该系统进行调节,但是使用的正确参数值取决于访问应用程序或数据库的用户数目和数据库空间(也就是使用的缓冲池)。下面的项影响/etc/conf/cf.d/stune中定义的内核参数:

SHMMAX(推荐设定值:128MB)SHMSEG(推荐设定值:15)。这些参数影响创建用户缓冲池的MySQL数据库引擎。

SFNOLIMHFNOLIM至少应达到2048

NPROC至少应当设置到3000/4000(取决于用户数)

建议使用下面的公式来计算SEMMSLSEMMNSSEMMNU的值:

SEMMSL = 13

据发现13最适合进程和MySQL

SEMMNS = SEMMSL * 系统上运行的db服务器数目。

SEMMNS设置为SEMMSL值乘以你在该系统上一次运行的db服务器的(最大)数目。

SEMMNU = SEMMNS

SEMMNU值设置为等于SEMMNS值。可以将该值设置为75%SEMMNS,但是这是一个保守的估计。

2.12.5.10. SCO OpenServer 6.0.x版注意事项

OpenServer6的主要改进包括:

·         大文件支持,可达到1 TB

·         多处理器支持,从4个处理器增加到32个处理器。

·         增加的内存支持,可达到64GB

·         UnixWare的功能扩展到OpenServer6

·         性能的改进

OpenServer6.0.0具有:

·         /bin,用于与OpenServer5.0.x相同行为的命令。

·         /u95/bin用于标准的命令,例如大文件系统(LFS)支持。

·         /udk/bin用于UnixWare 7.1.4中相同的命令,默认是LFS支持。

下面是在OpenServer6上设置PATH的指导。如果用户想使用传统的OpenServer5.0.x,则路径应当首先为/bin。如果用户需要LFS支持,则 路径应当为/u95/bin/bin。如果用户首选UnixWare 7支持,则路径应为/udk/bin/u95/bin/bin

我们建议使用最新的MySQL产品发布。

我们可以在OpenServer 6.0.x用下面的configure命令编译MySQL

CC="cc" CFLAGS="-I/usr/local/include" \
CXX="CC" CXXFLAGS="-I/usr/local/include" \
./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client --with-berkeley-db=./bdb \
    --with-innodb --with-openssl --with-extra-charsets=complex \
    --enable-readline

如果你想要使用gcc,必须使用gcc2.95.3或更新版。

CC=gcc CXX=g++ ./configure --prefix=/usr/local/mysql

当构建MySQL时不使用UnixWare 7.1.4OpenServer 6.0.0中的Berkeley DB版本。MySQL使用自己的Berkeley DB。用来构建静态和动态库的configure命令src_directory/bdb/build_unix/中,但是它不在MySQL自己的BDB版本中。工作区如下所示。

1.    按常规配置MySQL

2.    进入cdbdb/build_unix/

3.    -p Makefile复制(cp)Makefile.sav

4.    使用同样的选项并运行../dist/configure

5.    运行gmake

6.    cp -p Makefile.sav Makefile

7.    进入顶级源目录并运行gmake

允许生成共享和动态库并工作。OpenServer6.0.0 还需要MySQL源码树的补丁和适用于bdb/dist/config.guessconfig.guess的补丁。你可以从ftp://ftp.zenez.com/pub/zenez/prgms/mysql-4.1.12-osr6-patches.tar.gzftp://ftp.zenez.com/pub/zenez/prgms/mysql-4.x.x-osr6-patches下载补丁。有一个README文件可以提供帮助。

SCOftp://ftp.sco.com/pub/openserver6提供了OpenServer6的操作系统补丁。

SCOftp://ftp.sco.com/pub/security/OpenServer提供关于安全修复的信息。

默认情况,在OpenServer6.0.0系统的最大文件大小为1TB。一些操作系统工具的限制是2GB。在UnixWare 7中最大文件大小可以是1TB(用 VXFSHTFS)。

默认情况,/etc/conf/cf.d/mtune中的条目设置为:

Value           Default         Min             Max
-----           -------         ---             ---
SVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
HVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
SSTKLIM         0x1000000       0x2000          0x7FFFFFFF
HSTKLIM         0x1000000       0x2000          0x7FFFFFFF

我们建议将这些值设置为:

SDATLIM 0x7FFFFFFF
HDATLIM 0x7FFFFFFF
SSTKLIM 0x7FFFFFFF
HSTKLIM 0x7FFFFFFF
SVMMLIM 0x7FFFFFFF
HVMMLIM 0x7FFFFFFF
SFNOLIM 2048
HFNOLIM 2048

我们建议对该系统进行调节,但是使用的正确参数值取决于访问应用程序或数据库的用户数目和数据库空间(也就是使用的缓冲池)。下面的项影响/etc/conf/cf.d/stune中定义的内核参数:

SHMMAX(推荐设定值:128MB)SHMSEG(推荐设定值:15)。这些参数影响创建用户缓冲池的MySQL数据库引擎。

SFNOLIMHFNOLIM至少应达到2048

NPROC至少应当设置到3000/4000(取决于用户数)

建议使用下面的公式来计算SEMMSLSEMMNSSEMMNU的值:

SEMMSL = 13

发现13最适合进程和MySQL

SEMMNS = SEMMSL * 系统上运行的db服务器数目。

SEMMNS设置为SEMMSL值乘以你在该系统上一次运行的db服务器的(最大)数目。

SEMMNU = SEMMNS

SEMMNU值设置为等于SEMMNS值。可以将该值设置为75%SEMMNS,但是这是一个保守的估计。