Linux环境下SinoDB的安装与配置

1. 安装准备

1.1 操作系统支持

  SinoDB 是一款典型的事务型数据库,对安装环境要求不高,可以在虚拟机上进行安装和学习。

  • 建议安装64位Linux操作系统
  • 支持Linux内核2.6及其以上版本
  • 建议CPU2核或以上
  • 建议内存2G或以上
  • 建议磁盘10G或以上
  • 操作系统最小化安装要求:选择基本服务器安装,并添加Web服务下的万维网服务器。

本文安装的操作系统为CentOS 7.6。

1.2 操作系统配置

请使用root用户登入系统,进行如下配置:

1.2.1 关闭并禁用防火墙

#systemctl stop firewalld.service
#systemctl disable firewalld.service

1.2.2 关闭SELINUX

#sed -i ‘/^SELINUX=enforcing/s/./SELINUX=disabled/g’ /etc/selinux/config*

1.2.3 创建informix用户和组

SinoDB需要一个名称为informix的用户和组,做为数据库的超级管理员

# groupadd informix
# useradd -g informix -d /home/informix -s /bin/bash -m informix

数据库安装路径目录准备( /home/informix/sinodb)

# mkdir /home/informix/sinodb

数据库的数据文件目录准备( /home/informix/dbs )

# mkdir /home/informix/dbs

修改目录权限

# chown -Rf informix:informix /home/informix
# chmod 755 /home/informix

1.2.4 上传安装包并解压

可以通过ftp或其它第三方工具,将安装包上传到root用户下的一个目录中并解压

# ls
iif.12.10.FC8.linux-x86_64-GIT-4bcde202b.tar
# tar -xvf /tmp/iif.12.10.FC8.linux-x86_64-GIT-4bcde202b.tar -C /home/informix/sinodb

2. 安装SinoDB数据库

使用root用户进入安装目录,执行ids_install命令。

#cd /home/informix/sinodb
# ./ids_install

根据安装提示进行操作:
1)输入回车
2)确认License,按回车确认
3)输入Y,回车
4)输入安装路径:/home/informix/sinodb,然后回车
5)输入Y,回车
6)选择安装类型,保持默认为1,回车
7)安装程序获取主机名称,默认当前主机名称,回车
8) OAT服务端口,若需要改变端口,则输入端口号,默认8080端口,回车
9) 是否启用OAT密码保护,默认yes(启用),回车即可。
10) 设置OAT用户与密码,默认用户(User name)为admin,回车,然后设置密码
11) CSDk的License授权,回车确认
12) 输入Y,回车
13)选择2- No - do not create an instance,输入2,回车
14)回车确认
15)确认安装目录,回车继续安装
16)输入回车,结束安装

3. 创建数据库实例

请使用informix用户创建数据库实例,手动创建数据库实例的步骤主要有:

1.配置环境变量
2.配置sqlhosts
3.配置onconfig
4.初始化数据库实例

3.1 配置环境变量

在informix用户的/home/informix/.bash_profile文件中配置环境变量如下

vi /home/informix/.bash_profile

export INFORMIXSERVER=sinodb
export INFORMIXDIR=/home/informix/sinodb
export ONCONFIG=onconfig.sinodb
export INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts.sinodb
export PATH=$INFORMIXDIR/bin:${INFORMIXDIR}/extend/krakatoa/jre/bin:/usr/bin:${PATH}:.
export LD_LIBRARY_PATH=${INFORMIXDIR}/lib:${INFORMIXDIR}/lib/esql:${INFORMIXDIR}/lib/cli
export TERM=vt100
export TERMCAP=$INFORMIXDIR/etc/termcap
export INFORMIXTERM=termcap
export DBTEMP=$INFORMIXDIR/tmp

其中:
INFORMIXSQLHOSTS指定的sqlhosts文件的路径和名称;
INFORMIXSERVER指定了数据库实例的名称;
ONCONFIG指定了配置参数文件名称。

运行source命令,使环境变量生效。

$ source .bash_profile
$ env |grep INFORMIX

通过env命令查看,配置的环境变量是否已生效。

3.2 配置sqlhosts文件

参考环境变量中设置的$INFORMIXSERVER与$INFORMIXSQLHOSTS,生成sqlhosts的配置文件。

$ cp $INFORMIXDIR/etc/sqlhosts.std $INFORMIXSQLHOSTS
$ echo “$INFORMIXSERVER onsoctcp 192.168.84.145 1526”>>$INFORMIXSQLHOSTS
$ cat $INFORMIXSQLHOSTS

sinodb onsoctcp 192.168.84.145 1526

sqlhosts文件配置信息中:
第一部分sinodb,指定了数据库实例名称;
第二部分onsoctcp,指定了通讯协议;
第三部分192.168.84.145,指定了服务器监听的IP地址;
第四部分1526,指定了服务器监听的端口号。

3.3 配置onconfig文件

根据配置的环境变量$ONCONFIG值,我们在$INFORMIXDIR/etc目录下,创建名称为$ONCONFIG值的文件,即配置参数文件为/home/informix/onconfig.sinodb

$ cd /home/informix/sinodb/etc
$ cp onconfig.std $ONCONFIG
vi $INFORMIXDIR/etc/$ONCONFIG

修改onconfig配置中的以下参数值:

ROOTPATH /home/informix/dbs/rootdbs
ROOTSIZE 2048000 #分配2GB空间,可根据实际情况修改
DBSERVERNAME sinodb #与环境变量INFORMIXSERVER保持一致
TAPEDEV /dev/null
LTAPEDEV /dev/null

3.4 初始化实例

请使用informix用户进行以下操作。

在初始化实例前,先根据onconfig文件中配置的ROOTPATH路径创建数据库的根数据空间,并授权(660权限)。

#su - informix
$ cd /home/informix/dbs
$ touch rootdbs
$ chmod 660 /home/informix/dbs/
*

通过oninit -ivy命令初始化数据库实例:

$ oninit -ivy

Initializing dataskip structure…succeeded
Checking for temporary tables to drop…succeeded
Updating Global Row Counter…succeeded
Forking onmode_mon thread…succeeded
Creating periodic thread…succeeded
Creating VP cache drain thread…succeeded
Creating limits manager thread…succeeded
Starting scheduling system…succeeded
Verbose output complete: mode = 5

mode=5说明实例初始化成功,可通过onstat -查看数据库实例当前状态。

$ onstat -
Sinoregal SinoDB Dynamic Server Version 12.10.FC8 – On-Line – Up 00:01:40 – 171264 Kbytes

当前的数据库实例显示为On-Line,至此,一个简单的数据库实例已经创建成功。

4. 验证

  • 建库、建表并插入数据

$ echo “create database testdb;” | dbaccess
$ echo “create table tuser(cuserid int, cusername varchar(20));” | dbaccess testdb
$ echo “insert into tuser values(1, ‘sinodb’);” | dbaccess testdb
$ echo “select * from tuser;” | dbaccess testdb
$ echo “drop database testdb;” | dbaccess