亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: luren04
打印 上一主題 下一主題

【申請加精】MySQL 5.1參考手冊  關(guān)閉 [復制鏈接]

論壇徽章:
0
41 [報告]
發(fā)表于 2008-04-15 11:59 |只看該作者
2.12.3. Solaris注意事項
2.12.3.1. Solaris 2.7/2.8注意事項
2.12.3.2. Solaris x86注意事項
在Solaris中,甚至在解壓縮MySQL分發(fā)版時,你也會遇到問題,因為Solaris tar不能處理長文件名。這說明解壓縮MySQL分發(fā)版時會遇見錯誤。

如果出現(xiàn)這種問題,必須使用GNU tar(gtar)來解壓縮分發(fā)版。可以從http://dev.mysql.com/downloads/os-solaris.html找到預編譯的Solaris版本。

Sun原生線程只在Solaris 2.5和更高版本中工作。對于版本2.4和更早版本,MySQL自動使用MIT-pthreads。請參見2.8.5節(jié),“MIT-pthreads注意事項”。

如果你運行configure時遇到下面的錯誤,說明編譯器安裝得有問題:

checking for restartable system calls... configure: error can notrun 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系統(tǒng),在CFLAGS和CXXFLAGS環(huán)境變量中加上-mcpu=v8 -Wa,-xarch=v8plusa,性能可以提高4%。

如果你有Sun Forte 5.0(或更新版)編譯器,可以運行:

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \CXX=CC CXXFLAGS="-noex -mt" \./configure --prefix=/usr/local/mysql --enable-assembler要想用Sun Forte 編譯器創(chuàng)建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創(chuàng)建64-位Solaris二進制,在CFLAGS和CXXFLAGS中增加-m64,并從configure行刪掉--enable-assembler。

在MySQL基準測試中,在UltraSPARC上使用32位模式的Forte 5.0,同使用帶-mcpu標記的gcc 3.2比較,速度提高了4%。

如果創(chuàng)建了64位的mysqld二進制,速度要比32-位二進制慢4%,但是可以處理更多的線程和內(nèi)存。

當為x86_64使用Solaris 10時,你應當安裝用forcedirectio選項保存InnoDB文件的文件系統(tǒng)。(默認情況不用該選項來安裝)。如果不這樣做,當在該平臺上使用InnoDB 儲存引擎時將會造成嚴重的性能下降。

如果fdatasync或sched_yield出現(xiàn)問題,你可以在configure行加LIBS=-lrt修復該問題。

對于早于WorkShop 5.3的編譯器,你可能需要編輯configure腳本。應將該行:

#if !defined(__STDC__) || __STDC__ != 1更該為:

#if !defined(__STDC__)如果你用-Xc 選項打開__STDC__,Sun 編譯器不能用Solaris pthreads.h 頭文件編譯。這是一個Sun 缺陷(中斷的編譯器或include文件)。

如果運行mysqld時出現(xiàn)下面的錯誤消息,原因是你企圖不啟用-mt multi-thread選項而用Sun編譯器編譯MySQL:

libc internal error: _rmutex_unlock: rmutex not held

將-mt加到CFLAGS和CXXFLAGS上并重新編譯。

如果你正使用gcc的SFW版本(在Solaris 8安裝包內(nèi)),運行configure之前你必須將/opt/sfw/lib加到環(huán)境變量LD_LIBRARY_PATH上。

如果你正使用從sunfreeware.com下載的gcc,會遇到許多問題。要想避免,應當在運行機器上重新編譯gcc和GNU binutils。

如果你用gcc編譯MySQL時遇到下面的錯誤,說明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不提供靜態(tài)版本的系統(tǒng)庫(libpthreads和libdl),因此你不能用--static編譯MySQL。如果你試圖這樣做,會遇到下面的錯誤:

ld: fatal: library -ldl: not foundundefined reference to `dlopen'cannot find -lrt如果你連接你自己的MySQL客戶端程序,運行時會出現(xiàn)下面的錯誤:

ld.so.1: fatal: libmysqlclient.so.#pen failed: No such file or directory可以通過下面的方法避免該問題:

·         用-Wl,r/full/path/to/libmysqlclient.so標記而不要用-Lpath)連接客戶端。

·         將libmysqclient.so復制到/usr/lib。

·         運行客戶端程序前,將libmysqlclient.so目錄的路徑名加到LD_RUN_PATH環(huán)境變量上。

如果你未安裝zlib用 -lz連接時configure出現(xiàn)問題,你有兩個選則:

·         如果你想要使用壓縮通信協(xié)議,你需要從ftp.gnu.org獲得并安裝zlib。

·         構(gòu)建MySQL時用--with-named-z-libs=no選項運行configure。

如果你正使用gcc,向MySQL調(diào)用用戶定義函數(shù)(UDF)時出現(xiàn)問題,嘗試向UDF連接行添加-lgcc到。

如果想讓MySQL自動啟動,可以將support-files/mysql.server復制到/etc/init.d,并創(chuàng)建/etc/rc3.d/S99mysql.server符號連接。

如果有太多進程試圖快速連接mysqld,你應當能再MySQL日志只看見錯誤:

Error in accept: Protocol error可以嘗試用--back_log=50選項啟動服務(wù)器來解決該問題。(在MySQL 4以前的版本中使用-O back_log=50)。

Solaris不支持setuid() 應用程序所需的內(nèi)核文件,因此如果你使用--user選項你不能從mysqld遇到內(nèi)核文件。

2.12.3.1. Solaris 2.7/2.8注意事項
一般情況,可以在Solaris 2.7和2.8中使用Solaris 2.6二進制。大多數(shù)Solaris 2.6發(fā)布也適用Solaris 2.7和2.8。

MySQL應當能夠自動檢測到新的Solaris版本并解決下面的問題。

Solaris 2.7/2.8的include文件中有一些缺陷。當使用gcc時你會看見下面的錯誤:

/usr/include/widec.h:42: warning: `getwc' redefined/usr/include/wchar.h:326: warning: this is the location of the previousdefinition如果出現(xiàn)該問題,修復的辦法是將/usr/include/widec.h復制到.../lib/gcc-lib/os/gcc-version/include,并將41行從:

#if     !defined(lint) && !defined(__lint)更改為:

#if     !defined(lint) && !defined(__lint) && !defined(getwc)另外,可以直接編輯/usr/include/widec.h。用任何一種方法修復后,應當刪掉config.cache并再次運行configure。

如果運行make時遇到下面的錯誤,這是因為configure不能檢測到curses.h文件(可能是因為/usr/include/widec.h中的錯誤):

In file included from mysql.cc:50:/usr/include/term.h:1060: syntax error before `,'/usr/include/term.h:1081: syntax error before `;'可以用下面任何一種方法解決該問題:

·         用CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H ./configure配置。

·         根據(jù)前面的討論編輯/usr/include/widec.h并重新configure。

·         刪掉config.h文件中的#define HAVE_TERM行并重新運行make。

如果鏈接客戶端程序時連接器找不到-lz,問題可能是libz.so文件安裝到了/usr/local/lib?梢杂孟旅嫒魏我环N方法解決該問題:

·         向LD_LIBRARY_PATH增加/usr/local/lib。

·         增加到libz.so from /lib的連接。

·         如果使用Solaris 8,可以安裝Solaris 8 CD分發(fā)版中的可選項zlib。

·         構(gòu)建MySQL時用--with-named-z-libs=no選項運行configure。

2.12.3.2. Solaris x86注意事項
在x86 Solaris 8上, 如果使用strip刪除調(diào)試符號,mysqld轉(zhuǎn)儲內(nèi)核。

如果正在 Solaris x86上使用gcc或egcs,并且你碰到了在裝載時的內(nèi)核轉(zhuǎn)儲問題,應該使用下列configure命令:

CC=gcc CFLAGS="-O3 -fomit-frame-pointer -DHAVE_CURSES_H" \CXX=gcc \CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \    -fno-exceptions -fno-rtti -DHAVE_CURSES_H" \./configure --prefix=/usr/local/mysql用libstdc++庫和與C++異常處理來避免這個問題。

如果這沒有幫助,你應該編譯一個調(diào)試版本并且用一個蹤跡文件運行它或在gdb下運行它。請參見E.1.3節(jié),“在gdb環(huán)境下調(diào)試mysqld”。

論壇徽章:
0
42 [報告]
發(fā)表于 2008-04-15 12:00 |只看該作者
2.12.4. BSD注意事項

本節(jié)提供在各種BSD Unix中使用MySQL的相關(guān)信息。
2.12.4.1. FreeBSD注意事項
對于運行MySQL,推薦使用FreeBSD 4.x或更新版本,因為其線程包更加完整。要想遇到一個安全、穩(wěn)定的系統(tǒng),你應當只使用標記-RELEASE的FreeBSD內(nèi)核。

最容易因此是比較受喜歡的安裝方法是使用mysql-server和mysql-client移植,可從http://www.freebsd.org得到。

使用這些移植的益處包括:

一個全優(yōu)化的工作在FreeBSD版本上的MySQL。
自動配置和構(gòu)建。
啟動腳本安裝在/usr/local/etc/rc.d。
·         用pkg_info -L察看哪個文件被安裝的能力

·         如果你在那臺機器上不再想要MySQL,用pkg_delete完全刪除它們。

建議在FreeBSD 2.x版上使用 MIT-pthreads,在版本3和以上版本用原生線程。在一些2.2.x的以后版本使用原生線程運行是可能的,但是你可能碰到mysqld關(guān)掉的問題。

遺憾的是,F(xiàn)reeBSD調(diào)用的某些函數(shù)還不能完全保證線程安全。特別令人注意的是,包括gethostbyname()函數(shù), MySQL使用該函數(shù)將主機名轉(zhuǎn)換為IP地址。在某些環(huán)境中,mysqld進程會突然造成100%的CPU負荷,不再響應。如果你遇到該問題,嘗試使用--skip-name-resolve選項啟動MySQL。

另外,還可以將FreeBSD 4.x中的MySQL同LinuxThreads庫連接,這樣可以避免一些原生FreeBSD線程執(zhí)行時的問題。為了更好地將LinuxThreads同原生線程進行對比,參見Jeremy Zawodny的文章FreeBSD or Linux for your MySQL Server? 地址:http://jeremy.zawodny.com/blog/archives/000697.html 。

在FreeBSD使用LinuxThreads的已知問題有:

·         連接時間(wait_timeout、interactive_timeout和net_read_timeout)值不理想,F(xiàn)象是永久連接掛起較長時間,不能關(guān)閉,只有線程執(zhí)行新命令時 'kill'線程方有效。

這可能是線程庫中的信號處理問題,信號不能中斷掛起的讀命令。期望在FreeBSD 5.0中修復。

MySQL構(gòu)建進程需要GNU make(gmake)工作。如果沒有GNU make,必須在編譯MySQL前先安裝它。

建議的在FreeBSD中用gcc(2.95.2和以上版本)編譯和安裝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-assemblergmakegmake installcd /usr/local/mysqlbin/mysql_install_db --user=mysqlbin/mysqld_safe & 如果configure使用MIT-pthreads,應當閱讀MIT-pthreads注意事項。請參見2.8.5節(jié),“MIT-pthreads注意事項”。

如果你從make install遇到一個它不能找到“/usr/include/pthreads”的錯誤,configure沒有檢測出你需要MIT-pthreads。要修復該問題,移走config.cache,然后用--with-mit-threads選項重新運行configure。

確定讓你的名字解析程序安裝正確,否則當連接mysqld時,你可能會遇到解析延時或失敗。保證在“/etc/hosts”文件中的localhost入口是正確的。“/etc/hosts”文件應該以下面一行開始:

127.0.0.1       localhost localhost.your.domain已知FreeBSD的文件句柄限制默認值很低。請參見A.2.17節(jié),“文件未找到”。使用--open-files-limit選項執(zhí)行mysqld_safe啟動服務(wù)器,或在/etc/login.conf為mysqld用戶提高限制并用cap_mkdb /etc/login.conf重建它。如果你不使用默認名(即使用chpass mysqld-user-name),還要保證為該用戶設(shè)置在密碼文件中的相應級別。請參見5.1.3節(jié),“mysqld_safe:MySQL服務(wù)器啟動腳本”。

FreeBSD將進程空間限制到512MB,即使系統(tǒng)有很多的可用RAM也如此。因此你可能會遇到如下所示錯誤:

Out of memory (Needed 16391 bytes)在當前版本的FreeBSD(至少4.x和更高版本)中,你可以在/boot/loader.conf文件中增加下面的條目并重啟機器增加該限制(不能在運行時間用sysctl命令更改這些設(shè)定值):

kern.maxdsiz="1073741824" # 1GBkern.dfldsiz="1073741824" # 1GBkern.maxssiz="134217728" # 128MB在舊版本的FreeBSD中,必須重新編譯內(nèi)核,以便更改進程的最大數(shù)據(jù)段空間。在這種情況下,應當查看LINT配置文件中的MAXDSIZ選項查看更詳細的信息。

如果MySQL的當前日期有問題,設(shè)置TZ變量將會有幫助。請參見附錄F:環(huán)境變量。

2.12.4.2. NetBSD注意事項
為了在NetBSD上編譯,你需要GNU make,否則當make試圖在C++文件上運行l(wèi)int時,編譯將失敗。

2.12.4.3. OpenBSD 2.5版注意事項
在OpenBSD 2.5上,可以用下列選項編譯帶原生線程的MySQL:
CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no2.12.4.4. BSD/OS 2.x版注意事項
如果在編譯MySQL時,遇到下列錯誤, 說明虛擬內(nèi)存的ulimit值太低了:

item_func.h: In method`Item_func_ge::Item_func_ge(const Item_func_ge &)':item_func.h:28: virtual memory exhaustedmake[2]: *** [item_func.o] Error 1試試使用ulimit -v 80000并再次運行make。如果這還不行并且你正在使用bash,試試換到csh或sh;一些BSDI用戶報告了使用bash和ulimit有問題。

如果你正在使用gcc,可能必須為configure使用--with-low-memory標志才能編譯“sql_yacc.cc”。

如果MySQL的當前日期有問題,設(shè)置TZ變量將會有幫助。請參見附錄F:環(huán)境變量。

2.12.4.5. BSD/OS 3.x版注意事項
升級到BSD/OS 3.1。如果不能升級,則安裝BSDI patch M300-038。

在配置MySQL時,使用下列命令:

env CXX=shlicc++ CC=shlicc2 \./configure \    --prefix=/usr/local/mysql \    --localstatedir=/var/mysql \    --without-perl \    --with-unix-socket-path=/var/mysql/mysql.sock已知下面的項可以工作:

env CC=gcc CXX=gcc CXXFLAGS=-O3 \./configure \    --prefix=/usr/local/mysql \    --with-unix-socket-path=/var/mysql/mysql.sock如果你愿意,可以改變目錄位置,或不指定任何位置而使用默認目錄。

如果在重負載下的性能有問題,試試使用--skip-thread-priority選項執(zhí)行mysqld!這將以相同優(yōu)先級運行所有線程;在BSDI 3.1上,可以得到較好的性能(至少直到BSDI可以修正其線程調(diào)度程序)。

如果在編譯時遇到virtual memory exhausted錯誤,試試使用ulimit -v 80000并再次運行make。如果這還不行并且你正在使用bash,試試換到csh或sh;一些BSDI用戶報告了使用bash和ulimit會有問題。

2.12.4.6. BSD/OS 4.x版注意事項
BSDI 4.x有一些線程有關(guān)的缺陷。如果你想要在這上面使用MySQL,應該安裝所有與線程相關(guān)的補丁,至少應該安裝M400-023。
在一些 BSDI 4.x系統(tǒng)中,你可能會遇到共享庫問題,F(xiàn)象是不能執(zhí)行任何客戶端程序,例如,mysqladmin。在這種情況下,需要重新配置,用disable-shared選項禁用庫的共享以便進行配置。

一些客戶在BSDI 4.0.1中遇到了嚴重問題,即mysqld二進制過一會兒不能打開表。這是因為一些庫/系統(tǒng)相關(guān)錯誤使mysqld未得到指令便更改了當前目錄。

修復方法是升級MySQL到最低3.23.34版或更高版,運行configure后,運行make前刪掉config.h中的行#define HAVE_REALPATH。

請注意這說明你不能通過符號連接將數(shù)據(jù)庫目錄連接到另一個數(shù)據(jù)庫目錄,或通過符號連接將表連接到BSDI上的另一個數(shù)據(jù)庫。(可以通過符號連接連接到另一個硬盤)。

論壇徽章:
0
43 [報告]
發(fā)表于 2008-04-15 12:01 |只看該作者
2.12.5. 其它Unix注意事項
2.12.5.1. HP-UX 10.20版注意事項
在HP-UX上編譯MySQL時,有一些“小”問題。我們推薦您使用gcc而不是HP-UX自己的編譯器,因為gcc可以生成更好的代碼!

我們推薦在HP-UX上使用gcc 2.95,不使用高度優(yōu)化標志(類似-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-shared2.12.5.2. HP-UX 11.x版注意事項
由于在標準 HP-UX庫中有一些嚴重錯誤,試圖在HP-UX 11.0上運行MySQL前應當安裝下面的補。
PHKL_22840 Streams cumulativePHNE_22397 ARPA cumulative這樣可以解決在線程應用程序中運行recv()時得到EWOULDBLOCK和執(zhí)行accept()時得到EBADF的問題。

如果你在未打補丁的HP-UX 11.x系統(tǒng)中使用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 編譯器,可以使用下面的命令(已經(jīng)用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 onlinedocumentation如果運行configure時遇到下面的錯誤,請驗證在到HP-UX C和C++編譯器的路徑前是否有到K&R編譯器的路徑:

checking for cc option to accept ANSI C... noconfigure: 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二進制,這是我們已經(jīng)構(gòu)建并測試過的。我們也收到了MySQL的HP-UX 10.20二進制可以在HP-UX 11上成功運行的報告。如果你遇到問題,一定要檢查HP-UX補丁的版本。

論壇徽章:
0
44 [報告]
發(fā)表于 2008-04-15 12:01 |只看該作者
2.12.5.3. IBM-AIX注意事項
Autoconf中沒有了xlC自動檢測,因此運行configure前,需要設(shè)置許多變量。以下例子使用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=$CFLAGSexport 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分發(fā)版的選項。

如果你將前面的configure行中的-O3改為-O2,必須刪掉-qstrict選項。這是對IBM C編譯器的限制。

如果你正在使用gcc或egcs編譯MySQL,必須使用-fno-exceptions標志,因為gcc/egcs的異常處理不是對線程安全的。ㄒ呀(jīng)用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知道該問題,但是由于工作區(qū)的原因,不急于修復它。我們不知道gcc 2.95是否需要-fno-exceptions選項,但是因為MySQL不使用例外,并且該選項可以產(chǎn)生快速的代碼,我們建議使用egcs/gcc時使用該選項。

如果匯編碼有問題,試試更改-mcpu=xxx選項以匹配你的CPU。一般情況可能需要使用power2、power或powerpc。另外,你可能需要使用604或604e。我們不能絕對肯定但懷疑power一般應安全,即使在power2機器上也安全。

如果你不知道你的CPU是什么樣的,可以執(zhí)行uname -m命令?梢援a(chǎn)生類似000514676700的字符串,格式為xxyyyyyymmss,其中xx和ss總是00,yyyyyy是唯一的系統(tǒng)ID,mm是CPU Planar的ID。從http://www16.boulder.ibm.com/pse ... /aixcmds5/uname.htm可以找到這些值的圖表。

該圖表可以給出你可以使用的機器類型和機器型號,確定CPU的類型。

如果遇到信號問題(MySQL在高負載下出人意料地死掉),你可能已經(jīng)發(fā)現(xiàn)了與線程和信號有關(guān)的一個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殺死在一個連接上“睡眠”的客戶端。相反,當客戶端發(fā)出下一個命令時,它將死掉。

在AIX的一些版本上用libbind.a鏈接使得getservbyname()內(nèi)核轉(zhuǎn)儲,這是AIX的一個缺陷并且應該報告IBM。

對于AIX 4.2.1和gcc,進行下面的更改。

配置完后,編輯config.h和include/my_config.h,將下面的行:

#define HAVE_SNPRINTF 1更改為:

#undef HAVE_SNPRINTF最后需要在mysqld.cc中為initgroups ()添加:

#ifdef _AIX41extern "C" int initgroups(const char *,int);#endif如果你需要為mysqld進程分配大量內(nèi)存,只使用ulimit -d unlimited是不夠的。還可以需要修改mysqld_safe,增加下面的行:

export LDR_CNTRL='MAXDATA=0x80000000'關(guān)于使用大量內(nèi)存的信息請查閱http://publib16.boulder.ibm.com/ ... lrg_prg_support.htm 。

2.12.5.4. SunOS 4注意事項
在SunOS 4上,需要用MIT-pthreads編譯MySQL,反過來這意味著需要使用GNU make。

一些SunOS 4系統(tǒng)的動態(tài)庫和libtool有問題。可以使用下列configure行來避免這個問題:

./configure --disable-shared --with-mysqld-ldflags=-all-static當編譯readline時,可能會遇到關(guān)于重復定義的警告,可以忽略。

當編譯mysqld的時候,將會遇到implicit declaration of function警告,可以忽略。

2.12.5.5. Alpha-DEC-UNIX(Tru64)版注意事項
如果你在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 ofaccept(int,sockadddr *, int *)'你可以放心地忽略這些警告,它們的發(fā)生是因為configure只能檢測出錯誤,而不是警告。

如果直接從命令行啟動服務(wù)器,當退出時,可能有死掉的問題。(當你退出時,重要進程收到一個SIGHUP信號),如果如此,試著象這樣啟動服務(wù)器:

nohup mysqld [options] &nohup使得后面的命令忽視從終端發(fā)來的任何SIGHUP信號了。另外,通過運行safe_mysqld啟動服務(wù)器,可以讓nohup調(diào)用mysqld。請參見5.1.3節(jié),“mysqld_safe:MySQL服務(wù)器啟動腳本”。

如果編譯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出現(xiàn)問題,應當能夠在鏈接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  -lmcd ..gnumakegnumake installscripts/mysql_install_db

論壇徽章:
0
45 [報告]
發(fā)表于 2008-04-15 12:02 |只看該作者
2.12.5.6. Alpha-DEC-OSF/1注意事項
如果遇到編譯問題并安裝了DEC CC和gcc,嘗試這樣運行configure:

CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \./configure --prefix=/usr/local/mysql如果遇到“c_asm.h”文件的問題,可以創(chuàng)建并使用一個“啞(dummy)”“c_asm.h”文件:

touch include/c_asm.hCC=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. 87" 上,編譯器有了一些奇怪的行為(未定義asm標志)。/bin/ld好象也被破壞(當鏈接mysqld時,發(fā)生_exit undefined問題)。在這個系統(tǒng)上,從OSF 4.0C的版本替換了/bin/ld后,我們設(shè)法用下列configure命令行編譯MySQL:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql用Digital編譯器“C++ V6.1-029”,下列命令應該工作:

CC=cc -pthreadCFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \       -speculate all -arch hostCXX=cxx -pthreadCXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \         -speculate all -arch host -noexceptions -norttiexport 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()函數(shù)被破壞,通過刪除定義'HAVE_ALLOCA'的“config.h”的行更正它。

alloca()函數(shù)也可能在/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出人意料地在高負載下死掉),可能遇到了一個線程和信號有關(guān)的OS 缺陷。在這種情況下,你可以告訴MySQL按如下配置不使用信號:

CFLAGS=-DDONT_USE_THR_ALARM \CXXFLAGS=-DDONT_USE_THR_ALARM \./configure 這不影響MySQL性能,但是有副作用,就是不能用mysqladmin kill或mysqladmin shutdown殺死在一個連接上“睡眠”的客戶端。相反,當客戶端發(fā)出下一個命令時,它將死掉。

使用gcc 2.95.2,會遇到下面的編譯錯誤:

sql_acl.cc:1456: Internal compiler error in `scan_region',at except.c:2566Please submit a full bug report.要修復該問題,應當進入sql目錄并剪切、復制最后一行g(shù)cc,但應將-O3 改為-O0 (或如果編譯行沒有任何-O選項,應在gcc后面增加-O0)。之后,可以回到頂級目錄并重新運行make。

2.12.5.7. SGI Irix注意事項
如果使用Irix 6.5.3或更新版,如果用擁有CAP_SCHED_MGT權(quán)限的用戶(例如root)運行mysqld或用下面的shell命令給mysqld服務(wù)器該權(quán)限,mysqld能夠創(chuàng)建線程:

chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld可能需要在運行configure后且在編譯前定義“config.h”里面的一些符號。

在一些Irix實現(xiàn)中,alloca()函數(shù)被破壞。如果mysqld服務(wù)器死于一些SELECT語句,把“config.h”定義HAVE_ALLOC和HAVE_ALLOCA_H的行刪除即可。如果mysqladmin create不工作,把“config.h”定義HAVE_READDIR_R的行刪除,你也可能必須刪除HAVE_TERM_H行。

SGI推薦將本頁上的所有補丁作為一個整體來安裝:

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

至少,應該安裝最新的核心卷(rollup)、最新的rld卷和最新的libc卷。

很明確,對于pthreads支持,需要本頁上所有的POSIX補丁:

http://support.sgi.com/surfzone/ ... /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.hmake應該也有安排上的問題報告。如果只有一個線程正在運行,事情會變慢的。通過啟動另外一個客戶端來避免它,這可以導致此后其它線程的執(zhí)行速度增加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.a2.12.5.8. SCO UNIX和OpenServer 5.0.x版注意事項
當前的移植僅在“sco3.2v5.0.5”,“sco3.2v5.0.6”和“sco3.2v5.0.7”系統(tǒng)上進行了測試,在“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。

該開發(fā)系統(tǒng)需要在OpenServer 5.0.6O的penServer Execution Environment Supplement oss646B和oss656B,OpenSource庫位于 gwxlibs。所有OpenSource工具位于opensrc目錄?梢詮ftp://ftp.sco.com/pub/openserver5/opensrc/獲得。

我們建議使用最新的MySQL產(chǎn)品發(fā)布。

SCO提供的操作系統(tǒng)補。篛penServer 5.0.[0-6]:ftp://ftp.sco.com/pub/openserver5,OpenServer 5.0.7:ftp://ftp.sco.com/pub/openserverv5/507

SCO提供的關(guān)于安全修復的信息:Server 5.0.x:ftp://ftp.sco.com/pub/security/OpenServer。

OpenSever 5.0.x系統(tǒng)上最大的文件的大小為2GB。

在OpenServer 5.0.x上,可供串緩沖區(qū)、clist和鎖定記錄分配的總內(nèi)存不能超出60MB。

串緩沖區(qū)的分配單位為4096 字節(jié)的頁,clists為70字節(jié),鎖定記錄為64字節(jié),因此為:

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

按照以下步驟來配置Database Services選項。如果你不確定應用程序是否需要,參見隨應用程序提供的文檔。

1.    用root登錄。

2.    編輯/etc/conf/sdevice.d/suds文件啟用SUDS驅(qū)動程序。將第2個域內(nèi)的N更改為Y。

3.    使用mkdev aio或Hardware/Kernel Manager來啟用對asynchronous I/O的支持,并重新連接內(nèi)核。要想讓用戶鎖定內(nèi)存用于該類I/O,更新aiomemlock(F)文件。應當對該文件進行更新,包括進可以使用AIO的用戶和可以鎖定的最大數(shù)量的內(nèi)存。

4.    許多應用程序使用setuid二進制,因此你只能指定單個用戶 。請參見隨應用程序提供的文檔來看是否應用程序是這種情況。

完成該進程后,重新啟動系統(tǒng),創(chuàng)建包括這些更改的新內(nèi)核。

默認情況,/etc/conf/cf.d/mtune中的條目設(shè)置為:

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

NOFILES應當為4096或2048。

MAXUP應當為2048。

要想更改內(nèi)核,進入/etc/conf/bin并使用./idtune name parameter來更改。例如,要將SEMMS改為200,用root賬戶執(zhí)行命令:

# cd /etc/conf/bin# ./idtune SEMMNS 200我們建議對該系統(tǒng)進行調(diào)節(jié),但是使用的正確參數(shù)值取決于訪問應用程序或數(shù)據(jù)庫的用戶數(shù)目和數(shù)據(jù)庫空間(也就是使用的緩沖池)。下面的項影響/etc/conf/cf.d/stune中定義的內(nèi)核參數(shù):

SHMMAX(推薦設(shè)定值:128MB)和SHMSEG(推薦設(shè)定值:15)。這些參數(shù)影響創(chuàng)建用戶緩沖池的MySQL數(shù)據(jù)庫引擎。

NOFILES和MAXUP至少應達到2048。

MAXPROC至少應當設(shè)置到3000/4000(取決于用戶數(shù))或更大值。

建議使用下面的公式來計算SEMMSL、SEMMNS和SEMMNU的值:

SEMMSL = 13發(fā)現(xiàn)13最適合進程和MySQL。

SEMMNS = SEMMSL * 系統(tǒng)上運行的db服務(wù)器數(shù)目。

將SEMMNS設(shè)置為SEMMSL值乘以你在該系統(tǒng)上一次運行的db服務(wù)器的(最大)數(shù)目。

SEMMNU = SEMMNS將SEMMNU值設(shè)置為等于SEMMNS值?梢詫⒃撝翟O(shè)置為75%的SEMMNS,但是這是一個保守的估計。

至少需要安裝"SCO OpenServer Linker and Application Development Libraries"或OpenServer開發(fā)系統(tǒng)來使用gcc。你不能只使用GCC Dev系統(tǒng),而不安裝它們。

你應當獲得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開發(fā)系統(tǒng)。對ODT或OS 3.0,將需要一個GCC 2.5.x的良好移植。沒有一個良好的移植會有很多問題。對這個產(chǎn)品的移植需要SCO UNIX開發(fā)系統(tǒng),沒有它,缺少所需的庫和鏈接器。還需要SCO-3.2v4.2-includes.tar.gz。該文件包含SCO 開發(fā)include 文件的更改這是構(gòu)建MySQL所需要的。需要用這些修改的頭文件替換已有系統(tǒng)的include文件?梢詮 ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz獲得。

為了在系統(tǒng)上構(gòu)造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將在日志文件寫下關(guān)于此的注解。

用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/Do ... 4.2-includes.tar.gz找到新的SCO特定的include文件。你應該在MySQL源碼樹的“include”目錄下打開這個文件。

SCO開發(fā)注意事項:

MySQL應該自動地檢測FSU Pthreads并且用-lgthreads -lsocket -lgthreads選項鏈接mysqld。
SCO開發(fā)庫在FSU Pthreads是重入(reentrant)的。SCO宣稱它的庫函數(shù)是重入的,因此他們一定在FSU Pthreads中是重入的。在 OpenServer上的 FSU Pthreads 試圖使用SCO方案制作重入的庫。
FSU Pthreads(至少在ftp::/ftp.zenez.com的版本)鏈接了GNU malloc,如果你遇到內(nèi)存使用的問題,確定“gmalloc.o”包含在“l(fā)ibgthreads.a”和“l(fā)ibgthreads.so”中。
·         在FSU Pthreads中,下列系統(tǒng)調(diào)用是pthreads感知的:read()、write()、getmsg()、connect()、accept()、select()和wait()。

·         CSSA-2001-SCO.35.2(補丁列為定制erg711905-dscr_remap安全補丁(版本 2.0.0))中斷FSU線程并使mysqld不穩(wěn)定。如果你想在 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的操作系統(tǒng)補丁。

·         SCO在ftp://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.2和libresolv.so.1的telnetd修復,以及在pre-OSR506系統(tǒng)上的安裝說明。

最好在編譯/使用MySQL之前安裝這些補丁。

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

論壇徽章:
0
46 [報告]
發(fā)表于 2008-04-15 12:02 |只看該作者
2.12.5.9. SCO UnixWare 7.1.x和OpenUNIX 8.0.0版注意事項
我們建議使用最新的MySQL產(chǎn)品發(fā)布。
我們可以用下面的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當構(gòu)建MySQL時不使用UnixWare 7.1.4或OpenServer 6.0.0中的Berkeley DB版本。MySQL使用自己的Berkeley DB。用來構(gòu)建靜態(tài)和動態(tài)庫的configure命令在src_directory/bdb/build_unix/中,但是它不在MySQL自己的BDB版本中。工作區(qū)如下所示。

1.    按常規(guī)配置MySQL。

2.    進入(cd)bdb/build_unix/

3.    將 -p Makefile復制(cp)到Makefile.sav

4.    使用同樣的選項并運行../dist/configure。

5.    運行g(shù)make。

6.    cp -p Makefile.sav Makefile

7.    進入頂級源目錄并運行g(shù)make。

允許生成共享和動態(tài)庫并工作。

SCO在ftp://ftp.sco.com/pub/unixware7提供了UnixWare 7.1.1的操作系統(tǒng)補丁,在ftp://ftp.sco.com/pub/unixware7/713/ 提供了UnixWare 7.1.3的操作系統(tǒng)補丁, UnixWare 7.1.4的見ftp://ftp.sco.com/pub/unixware7/714/, OpenUNIX 8.0.0的見 ftp://ftp.sco.com/pub/openunix8

SCO提供的安全修復相關(guān)信息:OpenUNIX見ftp://ftp.sco.com/pub/security/OpenUNIX,UnixWare見 ftp://ftp.sco.com/pub/security/UnixWare。

默認情況,在UnixWare 7.1.1系統(tǒng)中最大文件的大小為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重啟系統(tǒng)。

默認情況,/etc/conf/cf.d/mtune中的條目設(shè)置為:

Value           Default         Min             Max-----           -------         ---             ---SVMMLIM         0x9000000       0x1000000       0x7FFFFFFFHVMMLIM         0x9000000       0x1000000       0x7FFFFFFFSSTKLIM         0x1000000       0x2000          0x7FFFFFFFHSTKLIM         0x1000000       0x2000          0x7FFFFFFF我們建議將這些值設(shè)置為:

SDATLIM 0x7FFFFFFFHDATLIM 0x7FFFFFFFSSTKLIM 0x7FFFFFFFHSTKLIM 0x7FFFFFFFSVMMLIM 0x7FFFFFFFHVMMLIM 0x7FFFFFFFSFNOLIM 2048HFNOLIM 2048我們建議對該系統(tǒng)進行調(diào)節(jié),但是使用的正確參數(shù)值取決于訪問應用程序或數(shù)據(jù)庫的用戶數(shù)目和數(shù)據(jù)庫空間(也就是使用的緩沖池)。下面的項影響/etc/conf/cf.d/stune中定義的內(nèi)核參數(shù):

SHMMAX(推薦設(shè)定值:128MB)和SHMSEG(推薦設(shè)定值:15)。這些參數(shù)影響創(chuàng)建用戶緩沖池的MySQL數(shù)據(jù)庫引擎。

SFNOLIM和HFNOLIM至少應達到2048。

NPROC至少應當設(shè)置到3000/4000(取決于用戶數(shù))。

建議使用下面的公式來計算SEMMSL、SEMMNS和SEMMNU的值:

SEMMSL = 13據(jù)發(fā)現(xiàn)13最適合進程和MySQL。

SEMMNS = SEMMSL * 系統(tǒng)上運行的db服務(wù)器數(shù)目。

將SEMMNS設(shè)置為SEMMSL值乘以你在該系統(tǒng)上一次運行的db服務(wù)器的(最大)數(shù)目。

SEMMNU = SEMMNS

將SEMMNU值設(shè)置為等于SEMMNS值?梢詫⒃撝翟O(shè)置為75%的SEMMNS,但是這是一個保守的估計。

2.12.5.10. SCO OpenServer 6.0.x版注意事項
OpenServer6的主要改進包括:

·         大文件支持,可達到1 TB。

·         多處理器支持,從4個處理器增加到32個處理器。

·         增加的內(nèi)存支持,可達到64GB。

·         將UnixWare的功能擴展到OpenServer6。

·         性能的改進

OpenServer6.0.0具有:

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

·         /u95/bin用于標準的命令,例如大文件系統(tǒng)(LFS)支持。

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

下面是在OpenServer6上設(shè)置PATH的指導。如果用戶想使用傳統(tǒng)的OpenServer5.0.x,則路徑應當首先為/bin。如果用戶需要LFS支持,則 路徑應當為/u95/bin:/bin。如果用戶首選UnixWare 7支持,則路徑應為/udk/bin:/u95/bin:/bin:。

我們建議使用最新的MySQL產(chǎn)品發(fā)布。

我們可以在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當構(gòu)建MySQL時不使用UnixWare 7.1.4或OpenServer 6.0.0中的Berkeley DB版本。MySQL使用自己的Berkeley DB。用來構(gòu)建靜態(tài)和動態(tài)庫的configure命令在src_directory/bdb/build_unix/中,但是它不在MySQL自己的BDB版本中。工作區(qū)如下所示。

1.    按常規(guī)配置MySQL。

2.    進入(cd)bdb/build_unix/

3.    將 -p Makefile復制(cp)到Makefile.sav

4.    使用同樣的選項并運行../dist/configure。

5.    運行g(shù)make。

6.    cp -p Makefile.sav Makefile

7.    進入頂級源目錄并運行g(shù)make。

允許生成共享和動態(tài)庫并工作。OpenServer6.0.0 還需要MySQL源碼樹的補丁和適用于bdb/dist/config.guess的config.guess的補丁。你可以從ftp://ftp.zenez.com/pub/zenez/pr ... osr6-patches.tar.gzftp://ftp.zenez.com/pub/zenez/prgms/mysql-4.x.x-osr6-patches下載補丁。有一個README文件可以提供幫助。

SCO在ftp://ftp.sco.com/pub/openserver6提供了OpenServer6的操作系統(tǒng)補丁。

SCO在ftp://ftp.sco.com/pub/security/OpenServer提供關(guān)于安全修復的信息。

默認情況,在OpenServer6.0.0系統(tǒng)的最大文件大小為1TB。一些操作系統(tǒng)工具的限制是2GB。在UnixWare 7中最大文件大小可以是1TB(用 VXFS或HTFS)。

默認情況,/etc/conf/cf.d/mtune中的條目設(shè)置為:

Value           Default         Min             Max-----           -------         ---             ---SVMMLIM         0x9000000       0x1000000       0x7FFFFFFFHVMMLIM         0x9000000       0x1000000       0x7FFFFFFFSSTKLIM         0x1000000       0x2000          0x7FFFFFFFHSTKLIM         0x1000000       0x2000          0x7FFFFFFF我們建議將這些值設(shè)置為:

SDATLIM 0x7FFFFFFFHDATLIM 0x7FFFFFFFSSTKLIM 0x7FFFFFFFHSTKLIM 0x7FFFFFFFSVMMLIM 0x7FFFFFFFHVMMLIM 0x7FFFFFFFSFNOLIM 2048HFNOLIM 2048我們建議對該系統(tǒng)進行調(diào)節(jié),但是使用的正確參數(shù)值取決于訪問應用程序或數(shù)據(jù)庫的用戶數(shù)目和數(shù)據(jù)庫空間(也就是使用的緩沖池)。下面的項影響/etc/conf/cf.d/stune中定義的內(nèi)核參數(shù):

SHMMAX(推薦設(shè)定值:128MB)和SHMSEG(推薦設(shè)定值:15)。這些參數(shù)影響創(chuàng)建用戶緩沖池的MySQL數(shù)據(jù)庫引擎。

SFNOLIM和HFNOLIM至少應達到2048。

NPROC至少應當設(shè)置到3000/4000(取決于用戶數(shù))。

建議使用下面的公式來計算SEMMSL、SEMMNS和SEMMNU的值:

SEMMSL = 13發(fā)現(xiàn)13最適合進程和MySQL。

SEMMNS = SEMMSL * 系統(tǒng)上運行的db服務(wù)器數(shù)目。

將SEMMNS設(shè)置為SEMMSL值乘以你在該系統(tǒng)上一次運行的db服務(wù)器的(最大)數(shù)目。

SEMMNU = SEMMNS

將SEMMNU值設(shè)置為等于SEMMNS值?梢詫⒃撝翟O(shè)置為75%的SEMMNS,但是這是一個保守的估計。

論壇徽章:
0
47 [報告]
發(fā)表于 2008-04-15 12:03 |只看該作者
2.12.6. OS/2注意事項
MySQL使用太多的打開文件。因此,應該增加類似下面的東西到“CONFIG.SYS”文件:
SET EMXOPT=-c -n -h1024如果不這樣做,將可能碰到下列錯誤:

File 'xxxx' not found (Errcode: 24)`當OS/2 Warp 3上使用MySQL時,要求FixPack 29或以上版本。用OS/2 Wrap 4,要求FixPack 4或以上版本。這是Pthreads庫的一個要求。MySQL必須安裝在支持長文件名的一個分區(qū)上,如HPFS、FAT32等等。

“INSTALL.CMD”腳本必須從OS/2自己的“CMD.EXE”運行并且不能工作在替代外殼如“4OS2.EXE”。

“scripts/mysql-install-db”腳本已經(jīng)被重新命名了:它稱為“install.cmd”并且是一個REXX腳本,將安裝 默認的MySQL安全配置并為MySQL創(chuàng)建WorkPlace Shell圖標。

動態(tài)模塊支持通過編譯但沒有充分測試,動態(tài)模塊應該使用Pthreads運行時刻庫編譯。



gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \    -o example udf_example.cc -L../lib -lmysqlclient udf_example.defmv example.dll example.udf注釋:由于OS/2的限制,UDF模塊名字的詞干不能超過8個字符。模塊存儲在“/mysql2/udf”目錄;safe-mysqld.cmd腳本將把這個目錄放在BEGINLIBPATH環(huán)境變量中。當使用UDF模塊時,指定的擴展名被忽略--它被假定為“.udf”。例如,在 Unix上,共享模塊可能被命名為“example.so”并且可以象這樣從它裝載函數(shù):

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME 'example.so';

在OS/2中, 模塊被命名為example.udf,但是不能指定模塊擴展名:

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME 'example';

論壇徽章:
0
48 [報告]
發(fā)表于 2008-04-15 12:04 |只看該作者

2.13. Perl安裝注意事項

Perl對MySQL的支持借助DBI/DBD客戶端接口。接口要求Perl 5.6.0或以后版本。如果你的Perl版本更舊,接口將不能工作。

如果想要在Perl DBI中使用事務(wù),需要有1.2216版或更新版DBD::mysql。建議使用2.9003版或更新版。

如果你使用MySQL 4.1客戶端庫,必須使用DBD::mysql 2.9003或更新版。

MySQL分發(fā)版不包含Perl支持?梢詮http://search.cpan.org獲得Unix需要的模塊,或在Windows中使用ActiveState ppm程序。以下章節(jié)描述了如何做。

如果你想要運行MySQL基準腳本,必須安裝Perl支持。請參見7.1.4節(jié),“MySQL基準套件”。

論壇徽章:
0
49 [報告]
發(fā)表于 2008-04-15 12:04 |只看該作者
2.13.1. 在Unix中安裝Perl
MySQL Perl支持也要求你安裝了MySQL客戶端編程支持(庫和頭文件)。大多數(shù)安裝中安裝了必要的文件。但是,如果你在Linux中從RPM文件安裝MySQL,確保安裝了開發(fā)者RPM?蛻舳顺绦蛟诳蛻舳薘PM中,但是客戶端編程支持在開發(fā)者RPM。

如果你想要安裝Perl支持,需要的文件能從http://search.cpan.org的CPAN (Comprehensive Perl Archive Network)獲得。

在Unix中安裝Perl模塊最簡單的方法是使用CPAN模塊。例如:

shell> perl -MCPAN -e shellcpan> install DBIcpan> install DBD::mysqlDBD::mysql安裝運行許多測試。測試中使用默認用戶名和密碼嘗試連接本地MySQL服務(wù)器。(默認用戶名是Unix中的登錄名和Windows中的ODBC。默認密碼“沒有密碼!) 如果你不能通過這些值連接服務(wù)器 (例如,如果你的賬戶有密碼),測試失敗?梢允褂胒orce install DBD::mysql忽略失敗的測試。

DBI需要Data:umper模塊。應該可以安裝;如果不能,應當在安裝DBI前安裝Data:umper模塊。

還可以下載tar文件壓縮格式的模塊分發(fā)版,并手動構(gòu)建模塊。例如,解壓縮和構(gòu)建DBI分發(fā)版的過程為:

1.     將分發(fā)版解壓縮到當前目錄:

2.            shell> gunzip < DBI-VERSION.tar.gz | tar xvf -該命令創(chuàng)建目錄 DBI-VERSION。

3.    進入解壓縮分發(fā)版的頂級目錄:

4.            shell> cd DBI-VERSION5.    構(gòu)建分發(fā)版并編譯:

6.            shell> perl Makefile.PL7.            shell> make8.            shell> make test9.            shell> make installmake test命令很重要,因為它驗證模塊正在工作。注意:在你DBD::mysql安裝期間運行該命令試驗接口代碼時,MySQL服務(wù)器必須正在運行,否則測試將失敗。

無論何時你安裝一個新版本的MySQL,重建并且重新安裝DBD::mysql分發(fā)版是一個好主意, 特別是在升級MySQL后,觀察所有異常,如DBI腳本失敗。

如果你沒有權(quán)限在系統(tǒng)目錄下安裝Perl模塊,或如果你安裝本地Perl模塊,下列參考書可以幫助你:http://servers.digitaldaze.com/e ... odules.html#modules

在標題“Installing New Modules that Require Locally Installed Modules”下面查找。

2.13.2. 在Windows下安裝ActiveState Perl
在Windows中,應當按照以下步驟安裝帶ActiveState Perl的MySQL DBD模塊:

·         從http://www.activestate.com/Products/ActivePerl/獲得ActiveState Perl并安裝。

·         打開控制臺窗口(“DOS窗口)。

·         如果需要,設(shè)置HTTP_proxy變量。例如,你可以試試:

·                set HTTP_proxy=my.proxy.com:3128·         啟動PPM程序:

·                C:\> C:\perl\bin\ppm.pl·         如果你還沒有安裝DBI,則安裝:

·                ppm> install DBI·         如果成功,運行下面的命令:

·                install\·                ftp://ftp.de.uu.net/pub/CPAN/aut ... ysql-1.2212.x86.ppd該進程應當在ActiveState Perl 5.6或更新版本中工作。

如果你不能使上述步驟工作,應該安裝MyODBC驅(qū)動程序并且通過ODBC連接MySQL服務(wù)器:

use DBI;$dbh= DBI->connect("DBI:ODBCdsn",$user,$password) ||die "Got error $DBI::errstr when connecting to $dsn\n";2.13.3. 使用Perl DBI/DBD接口的問題
如果Perl報告它不能發(fā)現(xiàn)../mysql/mysql.so模塊,可能試因為Perl不能定位共享庫libmysqlclient.so。

可以使用下面的方法修復該問題:

·         用perl Makefile.PL -static -config而不要用perl Makefile.PL編譯DBD::mysql分發(fā)版。

·         將libmysqlclient.so復制到其它共享庫所在的目錄 (可能為/usr/lib 或/lib)。

·         修改用來編譯DBD::mysql的-L選項,反應libmysqlclient.so的實際位置。

·         在Linux中,你可以將libmysqlclient.so的目錄路徑名增加到/etc/ld.so.conf文件。

·         將libmysqlclient.so的目錄路徑名增加到LD_RUN_PATH環(huán)境變量。一些系統(tǒng)使用LD_LIBRARY_PATH。

注意如果連接器沒有找到另一個庫,你還可能需要修改-L選項。例如,如果因為libc在/lib下并且連接命令指定了-L/usr/lib,連接器不能找到它,將-L選項更改為-L/lib或在連接命令中增加-L/lib。

如果你遇到下面的DBD::mysql錯誤,你可能使用了gcc(或使用了用gcc編譯的舊的二進制):

/usr/bin/perl: can't resolve symbol '__moddi3'/usr/bin/perl: can't resolve symbol '__divdi3'當構(gòu)建mysql.so庫是在連接命令中增加-L/usr/lib/gcc-lib/... -lgcc(當編譯Perl客戶端時檢查生成mysql.so的make的輸出)。-L選項應指定libgcc.a在系統(tǒng)中的安裝目錄的路徑名。

該問題的另一個原因是Perl和MySQL沒有用gcc編譯。在這種情況下,你可以用gcc編譯二者來解決。

當你運行測試時你會從DBD::mysql看見下面的錯誤:

t/00base............install_driver(mysql) failed:Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.這意味著你需要在連接行包括-lz 壓縮庫?梢酝ㄟ^更改文件lib/DBD/mysql/Install.pm的下列行來實現(xiàn):

$sysliblist .= " -lm";更改為:

$sysliblist .= " -lm -lz";然后,你必須運行make realclean 然后重新安裝。

如果你想要在SCO上安裝DBI,需要在DBI-xxx 和每個子目錄中編輯Makefile。請注意下面的更新假定使用gcc 2.95.2或更新版:

舊:                                 新:CC = cc                               CC = gccCCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpicCCDLFLAGS = -wl,-Bexport              CCDLFLAGS = LD = ld                               LD = gcc -G -fpicLDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/libLDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib LD = ld                               LD = gcc -G -fpicOPTIMISE = -Od                        OPTIMISE = -O1 舊:CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include 新:CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include這些更改是必需的,因為用icc或cc編譯的Perl動態(tài)裝載器不裝載DBI模塊。

如果你想要在不支持動態(tài)鏈接(例如 SCO)的系統(tǒng)中使用Perl模塊,可以生成一個包括DBI和DBD::mysql的靜態(tài)版本的Perl。方法是生成一個用DBI代碼連接的Perl版本,并將它安裝到當前Perl的頂級目錄。然后構(gòu)建一個含DBD代碼連接的Perl版本并安裝。

在SCO中,必須將下面的環(huán)境變量設(shè)置為:

LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/libOr:

LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\    /usr/progressive/lib:/usr/skunk/libLIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\    /usr/progressive/lib:/usr/skunk/libMANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\    /usr/skunk/man:首先,在DBD分發(fā)版的安裝目錄運行下述命令來創(chuàng)建一個包括靜態(tài)連接的DBD模塊的Perl:

shell> perl Makefile.PL -static -configshell> makeshell> make installshell> make perl然后必須安裝新的Perl。make perl的輸出表示安裝時需要執(zhí)行的make命令。在SCO中,為make -f Makefile.aperl inst_perl MAP_TARGET=perl。

然后,使用剛剛創(chuàng)建的Perl,在DBD::mysql分發(fā)版的安裝目錄運行下述命令來創(chuàng)建另一個Perl,應包括靜態(tài)連接的DBD::mysql:

shell> perl Makefile.PL -static -configshell> makeshell> make installshell> make perl最后,應當安裝新的Perl。make perl的輸出指示了使用的命令。

論壇徽章:
0
50 [報告]
發(fā)表于 2008-04-15 12:33 |只看該作者

第3章:教程

目錄

3.1. 連接與斷開服務(wù)器
3.2. 輸入查詢
3.3. 創(chuàng)建并使用數(shù)據(jù)庫
3.3.1. 創(chuàng)建并選擇數(shù)據(jù)庫
3.3.2. 創(chuàng)建表
3.3.3. 將數(shù)據(jù)裝入表中
3.3.4. 從表檢索信息
3.4. 獲得數(shù)據(jù)庫和表的信息
3.5. 在批處理模式下使用mysql
3.6. 常用查詢的例子
3.6.1. 列的最大值
3.6.2. 擁有某個列的最大值的行
3.6.3. 列的最大值:按組
3.6.4. 擁有某個字段的組間最大值的行
3.6.5. 使用用戶變量
3.6.6. 使用外鍵
3.6.7. 根據(jù)兩個鍵搜索
3.6.8. 根據(jù)天計算訪問量
3.6.9. 使用AUTO_INCREMENT
3.7. 孿生項目的查詢
3.7.1. 查找所有未分發(fā)的孿生項
3.7.2. 顯示孿生對狀態(tài)的表
3.8. 與Apache一起使用MySQL
本章通過演示如何使用mysql客戶程序創(chuàng)造和使用一個簡單的數(shù)據(jù)庫,提供一個MySQL的入門教程。mysql(有時稱為“終端監(jiān)視器”或只是“監(jiān)視”)是一個交互式程序,允許你連接一個MySQL服務(wù)器,運行查詢并察看結(jié)果。mysql可以用于批模式:你預先把查詢放在一個文件中,然后告訴mysql執(zhí)行文件的內(nèi)容。本章將介紹使用mysql的兩個方法。

要想查看由mysql提供的選擇項目表,可以用--help選項來調(diào)用:

shell> mysql --help
本章假定mysql已經(jīng)被安裝在你的機器上,并且有一個MySQL服務(wù)器可以連接。否則,請聯(lián)絡(luò)MySQL管理員。(如果你是管理員,則需要查閱本手冊的其它章節(jié),例如第5章:數(shù)據(jù)庫管理。)

本章描述建立和使用一個數(shù)據(jù)庫的全過程。如果你僅僅對訪問一個已經(jīng)存在的數(shù)據(jù)庫感興趣,可以跳過描述怎樣創(chuàng)建數(shù)據(jù)庫及它所包含的表的章節(jié)。

由于本章是一個教程,省略了許多細節(jié)。關(guān)于這里所涉及的主題的詳細信息,請查閱本手冊的相關(guān)章節(jié)。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP