文档库 最新最全的文档下载
当前位置:文档库 › Sybase IQ Multiplex 16.0集群搭建

Sybase IQ Multiplex 16.0集群搭建

Sybase IQ Multiplex 16.0集群搭建
Sybase IQ Multiplex 16.0集群搭建

Sybase IQ Multiplex集群配置

SAP Sybase IQ Multiplex 是一种可高度伸缩的共享磁盘网格技术,允许通过连接到共享数据源的独立数据处理节点进行并发的数据装载和查询。

IQ Multiplex 技术具有以下优点:

(1)性能- IQ Multiplex 采用标准IQ 服务器引擎,提供可靠的查询和装载性能。

(2)所有权总成本低–IQ Multiplex 采用标准的低成本硬件和操作系统。

(3)设置和配置简单、灵活–IQ Multiplex 可借助SQL接口或通过Sybase Control Center GUI 轻松进行配置。

(4)可伸缩性–IQ Multiplex 可扩展至大量节点以支持数以万计的用户,当节点添加至Multiplex 时几乎不会降低数据装载和查询性能。

(5)高可用性–任何节点出现故障都不会妨碍其它节点上的查询作业。

SAP Sybase IQ Multiplex 采用混合聚簇体系结构,同时涉及共享存储和本地存储。

共享存储用于分布式查询处理所需永久IQ 数据和共享临时数据。本地存储用于目录元数据、临时数据和事务日志。

每台服务器都具有其自己的临时存储库和目录存储库。

所有服务器共用共享IQ 存储库和共享临时存储库。

Sybase IQ 集群体系结构如下图:

下面以两节点为例,介绍如何配置和实现IQ集群。

(一)环境准备

1. 整体架构

2. 前期准备

首先在2台Linux服务器上安装Sybase IQ 16.0软件,两个节点的环境如下:SFTJ1:135.0.0.141 “协调节点”

SFTJ2:135.0.0.142 “写节点”

在磁盘阵列上分别给两台Linux服务器划分如下逻辑卷:

Linux服务器1(SFTJ1)

卷名:db_share_sys_100_01;大小:100GB;属性:共享卷

卷名:db_share_temp_200_01;大小:200GB;属性:共享卷

卷名:db_share_user_500_01;大小:500GB;属性:共享卷

卷名:db_temp_local_100_01;大小:100GB;属性:非共享卷

Linux服务器2(SFTJ2)

卷名:db_share_sys_100_01;大小:100GB;属性:共享卷

卷名:db_share_temp_200_01;大小:200GB;属性:共享卷

卷名:db_share_user_500_01;大小:500GB;属性:共享卷

卷名:db_temp_local_100_02;大小:100GB;属性:非共享卷

三个共享裸设备(用于IQ Main Store存储设备,采用PV,不建议采用LV):

1. /dev/sde 100G, 映射为/dev/raw/raw1,用作IQ_Main_Store

2. /dev/sdb 500G, 映射为/dev/raw/raw2,用作IQ_User_Store

3. /dev/sdd 200G, 映射为/dev/raw/raw3,用作IQ_Shared_Store

两个独享裸设备(每台机器1 个,用于IQ Temp Store 存储设备)

1. SFTJ1 本地裸设备:/dev/sdf 100G,映射为/dev/raw/raw10

2. SFTJ2 本地裸设备:/dev/sdf 100G,映射为/dev/raw/raw20

注意:IQ Multiplex 安装前对于存储的规划是最重要的一项准备工作,IQ Temp Store 中的设备是节点自己本地存储上的裸设备,IQ Main Store 和Shared Store 中的设备必须是各节点可以读写的裸设备,并且裸设备的设备名要完全相同,建议在数据量较大的时候采用多个裸设备链接以便于利用存储的并发性提高效率。

(二)建裸设备

1.coordinator节点(SFTJ1)

#cd /etc/udev/rules.d

#vi 60-raw.rules

-----按实际环境添加如下内容(其中集群中只有用于建本地临时表空间的是本地磁盘,其他的都需要是共享的磁盘)

ACTION=="add",KERNEL=="sde",RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add",KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add",KERNEL=="sdd",RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add",KERNEL=="sdf",RUN+="/bin/raw /dev/raw/raw10 %N"

KERNEL=="raw1", OWNER="sybaseIQ", GROUP="sybase", MODE="660"

KERNEL=="raw2", OWNER="sybaseIQ", GROUP="sybase", MODE="660"

KERNEL=="raw3", OWNER="sybaseIQ", GROUP="sybase", MODE="660"

KERNEL=="raw10", OWNER="sybaseIQ", GROUP="sybase", MODE="660"

#start_udev

#raw -qa ---查看裸设备情况

2.辅助节点(SFTJ2)

#cd /etc/udev/rules.d

#vi 60-raw.rules

-----按实际环境添加如下内容(其中集群中只有用于建本地临时表空间的是本地磁盘,其他的都需要是共享的磁盘)

ACTION=="add",KERNEL=="sde",RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add",KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add",KERNEL=="sdd",RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add",KERNEL=="sdf",RUN+="/bin/raw /dev/raw/raw20 %N"

KERNEL=="raw1", OWNER="sybaseIQ", GROUP="sybase", MODE="660"

KERNEL=="raw2", OWNER="sybaseIQ", GROUP="sybase", MODE="660"

KERNEL=="raw3", OWNER="sybaseIQ", GROUP="sybase", MODE="660"

KERNEL=="raw20", OWNER="sybaseIQ", GROUP="sybase", MODE="660"

#start_udev

#raw -qa ---查看裸设备情况

3.创建符号链接

在两个节点服务器上面分别创建目录

mkdir -p /IQData/SFTJ

创建符号链接

在SFTJ1和SFTJ2上用root用户分别执行(IQ Catalog DB在/IQData/SFTJ下)

ln -s /dev/raw/raw1 /IQData/SFTJ/SYS_MAIN_FILE01.iq

ln -s /dev/raw/raw2 /IQData/SFTJ/USER_MAIN_FILE01.iq

ln -s /dev/raw/raw3 /IQData/SFTJ/Shared_Temp_FILE01.iq

在SFTJ1上执行

ln -s /dev/raw/raw10 /IQData/SFTJ/SYS_TEMP_FILE01.iqtmp

在SFTJ2上执行:

ln -s /dev/raw/raw20 /IQData/SFTJ/SYS_TEMP_FILE02.iqtmp

(三)创建Simplex IQ Server

1.启动utility服务

在coordinator上操作启动utility服务

$start_iq -ch 1024 -iqmc 4000 -iqtc 4000 -n utility_db --加上缓存参数,以防止在200G的裸设备上建不了库

2.创建建库脚本

创建数据的脚本createdb.sql

CREATE DATABASE '/IQData/SFTJ/SFTJ.db'

CASE RESPECT

ACCENT IGNORE

BLANK PADDING ON

JCONNECT ON

PAGE SIZE 4096

IQ PAGE SIZE 131072

COLLATION 'UTF8'

IQ PATH '/IQData/SFTJ/SYS_MAIN_FILE01.iq'

TEMPORARY PATH '/IQData/SFTJ/SYS_TEMP_FILE01.iqtmp'

LOG ON 'SFTJ.log'

MESSAGE PATH 'SFTJ.iqmsg'

3 . 创建数据库

执行createdb.sql 脚本,创建db数据库

dbisql -c "uid=DBA;pwd=sql;dbn=utility_db;eng=utility" -nogui createdb.sql

4.创建参数文件

在/IQData/SFTJ/下创建SFTJ.cfg参数文件(需要根据机器配置进行调整)

-n SFTJ1

-x tcpip{port=6638}

-cl 256m

-ch 2048m

-gc 20

-gd DBA

-gl all

-gm 300

-gr 5000

-gp 4096

-tl 700

-iqpartition 64

-iqgovern 100

-iqmt 1840

-iqmc 5120

-iqtc 7168

5 . 启动SFTJ库

以sybaseIQ用户登录操作系统,然后执行:

cd /IQData/SFTJ

start_iq @SFTJ.cfg -n SFTJ1 -x "tcpip{host=SFTJ1;port=6638}" SFTJ.db

(四)创建IQ集群

在创建了IQ Simplex Server之后,启动agent服务($IQDIR15\bin64\S99SybaseIQAgent15),就可以使用相应的命令把其转换为IQ Multiplex。

下面是具体的步骤:

(1)确认SFTJ1机器上的以如下方式启动SFTJ数据库

start_iq @SFTJ.cfg -n SFTJ1 -x "tcpip{host=SFTJ1;port=6638}" SFTJ.db

(2)使用dbisql用DBA用户连接到SFTJ1上,执行如下命令

CREATE MULTIPLEX SERVER SFTJ2 DATABASE '/IQData/SFTJ/SFTJ.db' HOST 'SFTJ2' PORT 6638 ROLE WRITER STATUS INCLUDED

注意:当执行完上面的语句后,SFTJ1机器上的iq server会自动shutdown

(3)启动SFTJ1机器上的协调节点SFTJ1

start_iq @SFTJ.cfg -n SFTJ1 -x "tcpip{host= SFTJ1;port=6638}" SFTJ.db

(4)在SFTJ2机器上将SFTJ2上的iq server的Catalog DB备份到SFTJ1的相应目录中,命令如下:

dbbackup -y -d -c "uid=DBA;pwd=sql;links=tcpip;eng= SFTJ1 " /IQData/db

(5)在SFTJ2机器的相应目录下,删除.log文件(如果有的话)

(6)在SFTJ2机器的应目录下,重新生成log文件

cd /IQData/SFTJ

dblog -r -t SFTJ.log SFTJ.db

(7)在SFTJ2机器上的/IQData/SFTJ目录下创建SFTJ.cfg参数文件(需要根据机器配置进行调整)

-x tcpip{port=[IQDBPORT]}

-cl 256m

-ch 2048m

-gc 20

-gd DBA

-gl all

-gm 300

-gr 5000

-gp 4096

-ti 4400

-tl 700

-iqpartition 64

-iqgovern 100

-iqmt 1840

-iqmc 5120

-iqtc 7168

(8)启动SFTJ2机器上的iq server

Start_iq –STARTDIR /IQData/SFTJ @SFTJ.cfg –n SFTJ2 –x “tcpip{host=SFTJ2;port=6638}” SFTJ.db

(9)连接到SFTJ2机器上的写节点,执行如下命令为IQ_SYSTEM_TEMP临时存储空间增加db files(必须执行这一步,否则由于SFTJ2没有IQ_SYSTEM_TEMP而不能进行操作!) ALTER DBSPACE IQ_SYSTEM_TEMP ADD FILE IQ_SYSTEM_TEMP_FILE02 ‘/IQData/SFTJ/SYS_TEMP_FILE02.iqtmp’

(10)连接到SFTJ1机器上的协调节点上,执行如下命令增加共享存储空间并修改状态,否则将无法进行分布式计算(IQ 15.6的PlexQ)

ALTER DBSPACE IQ_SHARED_TEMP ADD FILE IQ_SHARED_TEMP1 ‘/IQData/SFTJ/Shared_Temp_FILE01.iqtmp’;

ALTER DBSPACE IQ_SHARED_TEMP ALTER FILE IQ_SHARED_TEMP1 READWRITE

(11)连接到IQ Multiplex的协调节点(node1机器上dbnode1),执行如下存储过程校验集群配置:

sp_iqmpxvalidate

如果返回“No errors detected”,表式集群配置正常。

到此,一个两节点的IQ Multiplex创建完成!

(五)设置IQ集群

在进行了前3步骤之后,我们已经创建了一个两节点的集群。需要注意的是,不建议在系统的IQ_SYSTEM_MAIN创建用户对象。用户应该创建新的dbspaces来存放用户数据。

接下来我们将进行一些必要的设置工作。

(1)创建存放用户数据的dbspace

使用dbisql连接到dbnode1节点(下面若无特殊说明都连接到该节点),执行下面的命令:CREATE DBSPACE IQ_USER_MAIN

USING FILE IQ_USER_MAIN_FILE01 '/IQData/SFTJ/USER_MAIN_FILE01.iq' SIZE 480GB

成功执行完上面的命令后,执行sp_iqdbspace,可以看到新增加的dbspace信息。此外,登录SFTJ2写节点,执行sp_iqdbspace同样可以看到新增加的dbspace信息。

(2)设置IQ_SYSTEM_MAIN的main reserve空间大小

SYBASE建议为IQ_SYSTEM_MAIN尺寸的20%,最少不能低于200M

SET OPTION PUBLIC.MAIN_RESERVED_DBSPACE_MB=200

(3)回收用户在IQ_SYSTEM_MAIN上创建数据库对象(表和索引等)的权限

GRANT CREATE ON IQ_USER_MAIN to PUBLIC;

REVOKE CREATE ON IQ_SYSTEM_MAIN from PUBLIC;

set option PUBLIC.default_dbspace='IQ_USER_MAIN'

GO

set option public.DML_Options9=10

go

相关文档