IQ群集搭建
環(huán)境要求

IQ 15.3 Multiplex支持的操作系統(tǒng)包括:IBM AIX、HP-IA、Linux、Sun Solaris和windows等平臺(tái)。具體的版本和補(bǔ)丁要求這里就不說(shuō)了,參見(jiàn)sybase官方網(wǎng)站或者本人的博文"IQ 15 官方資源匯集(2)"
這個(gè)例子是兩個(gè)運(yùn)行Red Hat Linux的虛擬機(jī)構(gòu)成的集群(虛擬機(jī)建立共享虛擬盤(pán)),IQ采用的是15.3企業(yè)版。
IQ 15.3集群除具有兩個(gè)集群之間的通訊機(jī)制:一個(gè)是INC(用于傳遞節(jié)點(diǎn)心跳信息和全局事物協(xié)調(diào)管理的信息),另一個(gè)是MIPC(用于DQP處理)。INC使用公有網(wǎng)絡(luò)(public netework);MIPC可以與INC共用網(wǎng)絡(luò),也可以使用單獨(dú)的私有網(wǎng)絡(luò)(private network)。由于進(jìn)行DQP處理時(shí)需要交換的信息相對(duì)較多、較大,建議MIPC使用單獨(dú)的私有網(wǎng)絡(luò)。
兩個(gè)節(jié)點(diǎn)的環(huán)境如下:
(1) node1和node2兩個(gè)節(jié)點(diǎn)分別具有兩個(gè)虛擬網(wǎng)卡,地址如下:
node1: 192.168.2.191 ? ? ?#public ip
node1_priv 172.16.1.101 ? #private ip
node2: 192.168.2.193 ? ? ?#public ip
node2_priv 172.16.1.103 ? #private ip
(2) node1和node2兩個(gè)節(jié)點(diǎn)上要安裝好IQ 15.3企業(yè)版軟件,node1作為協(xié)調(diào)節(jié)點(diǎn)。
(3) 用于IQ_SYSTEM_MAIN Store的共享設(shè)備:
/dev/sdc1 2G, 映射為/dev/raw/raw21
(4) 在本示例中,IQ_SYSTEM_TEMP Store使用本地文件作為存儲(chǔ),不使用裸設(shè)備
(5) 用于IQ_SHARED_TEMP Store的裸設(shè)備的共享設(shè)備(IQ 15.3新增的,用于DQP處理):
/dev/sdd1 4G, 映射為/dev/raw/raw31
(6) 用于存放用戶(hù)數(shù)據(jù)的user main dbspace的共享設(shè)備:
/dev/sdd3 2G, 映射為/dev/raw/raw41
注意:IQ Multiplex安裝前對(duì)于存儲(chǔ)的規(guī)劃是最重要的一項(xiàng)準(zhǔn)備工作,IQ_SYSTEM_MAIN、IQ_SHARED_TEMP和user main 等dbsapce中的設(shè)備必須是各節(jié)點(diǎn)可以讀寫(xiě)的裸設(shè)備,并且裸設(shè)備的設(shè)備名要完全相同。IQ Temp Store中的設(shè)備是節(jié)點(diǎn)自己本地存儲(chǔ)上的裸設(shè)備或文件系統(tǒng)中的文件。
2. 創(chuàng)建Simplex IQ Server
IQ 15.3 Mulitplex創(chuàng)建比較有意思,首先要?jiǎng)?chuàng)建一個(gè)單IQ Server(又叫做Simplex),然后把它轉(zhuǎn)換為Multiplex,再往其中增加其它節(jié)點(diǎn)。
創(chuàng)建Simplex IQ Server的步驟:
(1) 創(chuàng)建符號(hào)鏈接
A.在node1和node2上用root用戶(hù)分別執(zhí)行(假設(shè)IQ Catalog DB在/sybiq/mp2目錄下):
ln -s /dev/raw/raw21 MP2_SYS_MAIN_FILE01.iq
ln -s /dev/raw/raw31 MP2_SHARED_TEMP_FILE01.iq
ln -s /dev/raw/raw41 MP2_USER_MAIN_FILE01.iq
B.在node1上用root用戶(hù)執(zhí)行
chmod 777 /dev/rawctl #這一步是為sybiq用戶(hù)授權(quán)以便能存儲(chǔ)設(shè)備。
C.在node2上用root用戶(hù)執(zhí)行
chmod 777 /dev/rawctl #這一步是為sybiq用戶(hù)授權(quán)以便能存儲(chǔ)設(shè)備
(2) 在node1上啟動(dòng)iq utility server創(chuàng)建數(shù)據(jù)庫(kù)
start_iq -n utility_srv
(3) 編寫(xiě)創(chuàng)建數(shù)據(jù)的腳本createdb.sql
CREATE DATABASE '/sybiqdb/mp2/mp2.db'
LOG ON 'mp2.log'
CASE RESPECT
ACCENT IGNORE
PAGE SIZE 4096
COLLATION '936ZHO'
BLANK PADDING ON
JCONNECT ON
IQ PATH '/sybiqdb/mp2/MP2_SYS_MAIN_FILE01.iq' --IQ_SYSTEM_MAIN
TEMPORARY PATH '/sybiqdb/mp2/MP2_SYS_TEMP_FILE01.iqtmp' ?--使用文件方式。
TEMPORARY SIZE 2048 ?--使用文件方式必須指定尺寸。
MESSAGE PATH 'mp2.iqmsg'
IQ PAGE SIZE 131072;
(4) 執(zhí)行createdb.sql腳本,創(chuàng)建mp2數(shù)據(jù)庫(kù)
dbisql -c "uid=DBA;pwd=sql;dbn=utility_db;eng=utility_srv" -nogui createdb.sql
(5) 編輯params.cfg參數(shù)文件
-cl ?128m
-ch ?256m
-gc ?20
-gd ?dba
-gk ?dba
-gl ?all
-gm ?20
-ti ?4400
-tl ?300
-iqmc 256
-iqtc 256
-iqmsgsz 64
-iqmsgnum 4
(6)啟動(dòng)創(chuàng)建好的mp2庫(kù)
以sybiq用戶(hù)登錄操作系統(tǒng),然后執(zhí)行:
cd /sybiqdb/mp2
start_iq @params.cfg -n mp2node_c -x "tcpip{host=node1;port=4888}" mp2.db
3. 創(chuàng)建IQ Multiplex
在創(chuàng)建了IQ Simplex Server之后,就可以使用相應(yīng)的命令把其轉(zhuǎn)換為IQ Multiplex。下面是具體的步驟:
(1) 確認(rèn)node1機(jī)器上的以如下方式啟動(dòng)mp2數(shù)據(jù)庫(kù)
start_iq @params.cfg -n mp2node_c -x "tcpip{host=node1;port=4888}" mp2.db
(2) 使用dbisql用DBA用戶(hù)連接到mp2node_c上,執(zhí)行如下命令
CREATE MULTIPLEX SERVER mp2node_w1 DATABASE '/sybiqdb/mp2/mp2.db' HOST 'node2' PORT 4888 ROLE WRITER STATUS INCLUDED
注意:當(dāng)執(zhí)行完上面的語(yǔ)句后,node1機(jī)器上的mp2node_c iq server會(huì)自動(dòng)shutdown
(3) 啟動(dòng)node1機(jī)器上的協(xié)調(diào)節(jié)點(diǎn)mp2node_c
start_iq @params.cfg -n mp2node_c -x "tcpip{host=node1;port=4888}" mp2.db
(4) 在node2機(jī)器上將node1上的mp2node_c iq server的Catalog DB備份到node2的相應(yīng)目錄中,命令如下:
dbbackup -y -d -c "uid=DBA;pwd=sql;links=tcpip;eng=mp2node_c" /sybiqdb/mp2
(5) 在node2機(jī)器的相應(yīng)目錄下,刪除.log文件(如果有的話(huà))
(6) 在node2機(jī)器的應(yīng)目錄下,重新生成log文件
cd /sybiqdb/mp2
dblog -r -t mp2.log mp2.db
(7) 在node2機(jī)器上的/sybiqdb/mp2目錄下創(chuàng)建params.cfg參數(shù)文件
-cl ?128m
-ch ?256m
-gc ?20
-gd ?dba
-gk ?dba
-gl ?all
-gm ?20
-ti ?4400
-tl ?300
-iqmc 256
-iqtc 256
-iqmsgsz 64
-iqmsgnum 4
(8) 啟動(dòng)node2機(jī)器上的mp2node_w1寫(xiě)iq server
start_iq -STARTDIR /sybiqdb/mp2/ @params.cfg -n mp2node_w1 -x "tcpip{host=node2;port=4888}" mp2.db
(9) 連接到node2機(jī)器上的寫(xiě)節(jié)點(diǎn)mp2node_w1,執(zhí)行如下命令為IQ_SYSTEM_TEMP臨時(shí)存儲(chǔ)空間增加db files(必須執(zhí)行這一步,否則由于mp2node_w1沒(méi)有IQ_SYSTEM_TEMP而不能進(jìn)行操作!)
ALTER DBSPACE IQ_SYSTEM_TEMP ADD FILE IQ_SYSTEM_TEMP_FILE01 '/sybiqdb/mp2/MP2_SYS_TEMP_W1_FILE01.iqtmp' size 2048
(10) 連接到IQ Multiplex的協(xié)調(diào)節(jié)點(diǎn)(node1機(jī)器上的mp2node_c),執(zhí)行如下存儲(chǔ)過(guò)程校驗(yàn)集群配置:
sp_iqmpxvalidate
如果返回“No errors detected”,表式集群配置正常。
到此,一個(gè)兩節(jié)點(diǎn)的IQ 15.3 Multiplex創(chuàng)建完成!
4. 設(shè)置IQ Multiplex
在進(jìn)行了前3步驟之后,我們已經(jīng)創(chuàng)建了一個(gè)兩節(jié)點(diǎn)的IQ 15.3 集群。需要注意的是,從IQ 15開(kāi)始,不建議在系統(tǒng)的IQ_SYSTEM_MAIN創(chuàng)建用戶(hù)對(duì)象。用戶(hù)應(yīng)該創(chuàng)建新的dbspaces來(lái)存放用戶(hù)數(shù)據(jù)。
接下來(lái)我們將進(jìn)行一些必要的設(shè)置工作。
(1) 創(chuàng)建存放用戶(hù)數(shù)據(jù)的dbspace
使用dbisql連接到mp2node_c節(jié)點(diǎn)(下面若無(wú)特殊說(shuō)明都連接到該節(jié)點(diǎn)),執(zhí)行下面的命令:
CREATE DBSPACE MP2_USER_MAIN USING FILE MP2_USER_MAIN_FILE01 '/sybiqdb/mp2/MP2_USER_MAIN_FILE01.iq'
成功執(zhí)行完上面的命令后,執(zhí)行sp_iqdbspace,可以看到新增加的dbspace信息。此外,登錄mp2node_w1寫(xiě)節(jié)點(diǎn),執(zhí)行sp_iqdbspace同樣可以看到新增加的dbspace信息。
(2) 設(shè)置IQ_SYSTEM_MAIN的main reserve空間大小
SYBASE建議為IQ_SYSTEM_MAIN尺寸的20%,最少不能低于200M
SET OPTION PUBLIC.MAIN_RESERVED_DBSPACE_MB = 200 --單位為M
(3) 回收用戶(hù)在IQ_SYSTEM_MAIN上創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象(表和索引等)的權(quán)限
REVOKE CREATE ON IQ_SYSTEM_MAIN FROM PUBLIC
(4) 創(chuàng)建用戶(hù)
sp_iqaddlogin mp2user,mpuserpwd
grant resource to mp2user
grant readclientfile TO mp2user --支持load table from client
GRANT CREATE ON MP2_USER_MAIN TO mp2user --允許用戶(hù)在MP2_USER_MAIN上創(chuàng)建用戶(hù)對(duì)象
SET OPTION mp2user.DEFAULT_DBSPACE='MP2_USER_MAIN' --設(shè)置用戶(hù)的缺省dbspace
(5) 設(shè)置數(shù)據(jù)庫(kù)選項(xiàng)(一些建議的選項(xiàng),在實(shí)踐中應(yīng)當(dāng)根據(jù)需要設(shè)定)
set option public.NOTIFY_MODULUS=2000000;
set option public.force_no_scroll_cursors='on';
set option public.query_temp_space_limit=0; --IQ 15已經(jīng)是缺省了
set option public.append_load = 'off';
set option public.minimize_storage='on';
set option public.Query_Plan='OFF';
set option Public.Query_Detail ='OFF';
set option public.ASE_BINARY_DISPLAY='Off';
set option public.TEMP_SPACE_LIMIT_CHECK='ON'; ?--IQ 15已經(jīng)是缺省了
SET OPTION PUBLIC.ALLOW_READ_CLIENT_FILE='ON'; --允許load table from client特性
set option public.string_rtruncation='off'; ?--字符串截?cái)鄷r(shí)不拋出錯(cuò)誤。12.7的缺省值為OFF,15的缺省值是ON
(6) 用新建立的用戶(hù)mp2user登錄創(chuàng)建表
使用dbisql工具連接到mp2node_w1上,創(chuàng)建測(cè)試表:
create table test1(id unsigned int,name char(8));
insert into test1 values(1,'tiger123');
commit
使用dbisql工具以mp2user用戶(hù)連接到mp2node_c上,查詢(xún)表
select * from test1
--執(zhí)行上面的查詢(xún)會(huì)看到從寫(xiě)節(jié)點(diǎn)插入的數(shù)據(jù)
5. 為支持DQP進(jìn)行設(shè)置
IQ 15.3企業(yè)版從功能上說(shuō)缺省時(shí)打開(kāi)DQP(分布式查詢(xún)處理)的,但是需要進(jìn)行相應(yīng)的設(shè)置才能正常使用。
(1)設(shè)置共享的IQ_SHARED_TEMP dbspace
在創(chuàng)建IQ 15.3數(shù)據(jù)庫(kù)后,就具有IQ_SHARED_TEMP dbsapce,不過(guò)這個(gè)dbspace沒(méi)有任何dbfile。
為了支持DQP,我們需要往這個(gè)dbspace中增加dbfile,命令如下:
ALTER DBSPACE IQ_SHARED_TEMP ADD FILE IQ_SHARED_TEMP_FILE01 '/home/sybiq15/sybiqdb/mp2/MP2_SHARED_TEMP_FILE01.iq'
在增加了dbfile之后,被增加的dbfile是只讀的,所以我們還需要把其改為可讀寫(xiě)的(這一步很重要,否則DQP功能還是不能使用!),命令如下:
alter dbspace IQ_SHARED_TEMP alter file IQ_SHARED_TEMP_FILE01 readwrite
(2)為了性能,修改MIPC讓其使用private network(可選)
執(zhí)行如下命令讓Mulitplex每個(gè)節(jié)點(diǎn)使用private network進(jìn)行DQP通訊:
ALTER MULTIPLEX SERVER mp2node_c HOST 'node1' PORT 4888 PRIVATE HOST 'node1_priv' PORT 6000
ALTER MULTIPLEX SERVER mp2node_w1 HOST 'node2' PORT 4888 PRIVATE HOST 'node2_priv' PORT 6000
數(shù)據(jù)庫(kù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。