- 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版注意事项
在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版注意事项
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.h:184和/usr/include/sys/pthreads.h:440中的原型冲突。
一个解决办法是将/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 C和C++编译器的路径前是否有到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二进制,这是我们已经构建并测试过的。我们也收到了MySQL的HP-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编译器的限制。
如果你正在使用gcc或egcs编译MySQL,必须使用-fno-exceptions标志,因为gcc/egcs的异常处理不是对线程安全的!(已经用egcs1.1测试过)。IBM汇编程序也有一些已知问题,当使用gcc时可以生成坏的代码。
在 AIX 上使用egcs和gcc 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。一般情况可能需要使用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杀死在一个连接上“睡眠”的客户端。相反,当客户端发出下一个命令时,它将死掉。
在AIX的一些版本上用libbind.a链接使得getservbyname()内核转储,这是AIX的一个缺陷并且应该报告IBM。
对于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 。
如果你在Digital Unix上使用egcs 1.1.2,应当升级到gcc 2.95.2,因为egcs在DEC上有一些严重缺陷!
当在Digital UNIX下编译线程程序时,文档推荐对于cc和cxx使用-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行。
如果使用Compaq的CC编译器,下面的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
如果遇到编译问题并安装了DEC CC和gcc,尝试这样运行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 kill或mysqladmin 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。
如果使用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_ALLOC和HAVE_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 combinati在of type
那么应在MySQL源码树的顶级目录输入下列命令:
extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h
make
应该也有安排上的问题报告。如果只有一个线程正在运行,事情会变慢的。通过启动另外一个客户端来避免它,这可以导致此后其它线程的执行速度增加2到10倍。这是Irix线程难以理解的问题;可能必须临时准备找出解决方案直到它能被修正。
如果你正在用gcc编译,可以使用下列configure命令:
CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql --enable-thread-safe-client \
--with-named-thread-libs=-lpthread
在用原生Irix C和C++编译器7.3.1.2的Irix 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
当前的移植仅在“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.6O的penServer Execution Environment Supplement oss646B和oss656B,OpenSource库位于 gwxlibs。所有OpenSource工具位于opensrc目录。可以从ftp://ftp.sco.com/pub/openserver5/opensrc/获得。
我们建议使用最新的MySQL产品发布。
SCO提供的操作系统补丁:OpenServer 5.0.[0-6]:ftp://ftp.sco.com/pub/openserver5,OpenServer 5.0.7:ftp://ftp.sco.com/pub/openserverv5/507。
SCO提供的关于安全修复的信息:Server 5.0.x:ftp://ftp.sco.com/pub/security/OpenServer。
OpenSever 5.0.x系统上最大的文件的大小为2GB。
在OpenServer 5.0.x上,可供串缓冲区、clist和锁定记录分配的总内存不能超出60MB。
串缓冲区的分配单位为4096 字节的页,clists为70字节,锁定记录为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 aio或Hardware/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应当为4096或2048。
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数据库引擎。
NOFILES和MAXUP至少应达到2048。
MAXPROC至少应当设置到3000/4000(取决于用户数)或更大值。
建议使用下面的公式来计算SEMMSL、SEMMNS和SEMMNU的值:
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能用带tcpip的SCO UNIX 4.2编译,或使用OpenServer 3.0或Open Desktop 3.0(OS 3.0 ODT 3.0),安装带有使用一个GCC 2.5.X的SCO开发系统。对ODT或OS 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.a”和“libgthreads.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会挂起。
· SCO在ftp://ftp.sco.com/pub/openserver5提供了OpenServer 5.0.x的操作系统补丁。
· SCO在ftp://ftp.sco.com/pub/security/sse和ftp://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.2和libresolv.so.1的telnetd修复,以及在pre-OSR506系统上的安装说明。
最好在编译/使用MySQL之前安装这些补丁。
Legend/ OpenServer 6.0.0有原生线程,没有2GB文件大小限制。
我们可以用下面的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.4或OpenServer 6.0.0中的Berkeley DB版本。MySQL使用自己的Berkeley DB。用来构建静态和动态库的configure命令在src_directory/bdb/build_unix/中,但是它不在MySQL自己的BDB版本中。工作区如下所示。
1. 按常规配置MySQL。
2. 进入(cd)bdb/build_unix/
3. 将 -p Makefile复制(cp)到Makefile.sav
4. 使用同样的选项并运行../dist/configure。
5. 运行gmake。
6. cp -p Makefile.sav Makefile
7. 进入顶级源目录并运行gmake。
允许生成共享和动态库并工作。
SCO在ftp://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提供的安全修复相关信息:OpenUNIX见ftp://ftp.sco.com/pub/security/OpenUNIX,UnixWare见 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数据库引擎。
SFNOLIM和HFNOLIM至少应达到2048。
NPROC至少应当设置到3000/4000(取决于用户数)。
建议使用下面的公式来计算SEMMSL、SEMMNS和SEMMNU的值:
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.4或OpenServer 6.0.0中的Berkeley DB版本。MySQL使用自己的Berkeley DB。用来构建静态和动态库的configure命令在src_directory/bdb/build_unix/中,但是它不在MySQL自己的BDB版本中。工作区如下所示。
1. 按常规配置MySQL。
2. 进入(cd)bdb/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.guess的config.guess的补丁。你可以从ftp://ftp.zenez.com/pub/zenez/prgms/mysql-4.1.12-osr6-patches.tar.gz和ftp://ftp.zenez.com/pub/zenez/prgms/mysql-4.x.x-osr6-patches下载补丁。有一个README文件可以提供帮助。
SCO在ftp://ftp.sco.com/pub/openserver6提供了OpenServer6的操作系统补丁。
SCO在ftp://ftp.sco.com/pub/security/OpenServer提供关于安全修复的信息。
默认情况,在OpenServer6.0.0系统的最大文件大小为1TB。一些操作系统工具的限制是2GB。在UnixWare 7中最大文件大小可以是1TB(用 VXFS或HTFS)。
默认情况,/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数据库引擎。
SFNOLIM和HFNOLIM至少应达到2048。
NPROC至少应当设置到3000/4000(取决于用户数)。
建议使用下面的公式来计算SEMMSL、SEMMNS和SEMMNU的值:
SEMMSL = 13
发现13最适合进程和MySQL。
SEMMNS = SEMMSL * 系统上运行的db服务器数目。
将SEMMNS设置为SEMMSL值乘以你在该系统上一次运行的db服务器的(最大)数目。
SEMMNU = SEMMNS
将SEMMNU值设置为等于SEMMNS值。可以将该值设置为75%的SEMMNS,但是这是一个保守的估计。