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
#vi /etc/selinux/config #修改为SELINUX=disabled
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
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.初始化数据库实例
5.创建数据库空间
6.将逻辑日志从根数据库空间,迁移到正式的逻辑日志空间。
7.将物理日志从根数据库空间,迁移到正式的物理日志空间。
8.根据创建的数据库空间,更新onconfig
3.1 规划数据库空间
在正式开始创建数据库实例前,先规划一下数据库空间。
SinoDB 中可以创建多种类型的数据库空间
本次实验我们规划创建的数据库空间如下(注意:使用informix用户进行操作):
#su - informix
$ cd /home/informix/dbs
$ touch rootdbs llogdbs plogdbs tempdbs1 tempdbs2 tempdbs3 tempdbs4 datadbs1sbdbs1 bindbs1
$ chmod 660 /home/informix/dbs/*
3.2 配置环境变量
在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.3 配置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.4 配置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.5 初始化实例
在初始化实例前,需要保证rootdbs对应的文件已经存在,并有正确的访问权限(660权限)。我们在前面已经创建了根数据库空间rootdbs,并授权。现在我们可以通过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,至此,一个简单的数据库实例已经创建成功。
3.6 添加表空间
只有root数据库空间的实例,无法应用于实际生产环境。我们可以根据实际要求,创建适合多个数据库空间。SinoDB 提供了onspaces命令,用于数据库空间的创建。
$onspaces -c -d llogdbs -p /home/informix/dbs/llogdbs -o 0 -s 2048000
$onspaces -c -d plogdbs -p /home/informix/dbs/plogdbs -o 0 -s 2048000
$onspaces -c -d tempdbs1 -t -p /home/informix/dbs/tempdbs1 -o 0 -k 8 -s 512000
$onspaces -c -d tempdbs2 -t -p /home/informix/dbs/tempdbs2 -o 0 -k 8 -s 512000
$onspaces -c -d tempdbs3 -t -p /home/informix/dbs/tempdbs3 -o 0 -k 8 -s 512000
$onspaces -c -d tempdbs4 -t -p /home/informix/dbs/tempdbs4 -o 0 -k 8 -s 512000
$onspaces -c -b bindbs1 -p /home/informix/dbs/bindbs1 -o 0 -g 4 -s 1024000
$onspaces -c -S sbdbs1 -p /home/informix/dbs/sbdbs1 -o 0 -s 1024000
$onspaces -c -d datadbs1 -p /home/informix/dbs/datadbs1-1 -o 0 -s 2048000 -k 4
3.7 迁移物理日志
数据库在第一次初始化时,将逻辑日志和物理日志全部保存在根数据库空间中。我们需要将逻辑日志和物理日志迁移到对应的数据库空间中。使用onparams命令,将逻辑日志和物理日志进行迁移。
- 迁移物理日志
$onparams -p -d plogdbs -s 2047890 -y
3.8 迁移逻辑日志
多次执行以下命令,来创建新的逻辑日志文件,直至提示数据库空间不足。
$ onparams -a -d llogdbs -s 204780
- onstat -l 查看已经创建的物理日志与逻辑日志文件。
$onstat -l
- 切换并删除系统默认的逻辑日志
$ onmode -l
$ onmode -l
$ onmode -l
$ onmode -l
$ onmode -l
$ onmode -l
$ onmode -c
$ onstat -l
- 删除根目录中的逻辑日志文件命令
$onparams -d -l 1 -y
$onparams -d -l 2 -y
$onparams -d -l 3 -y
$onparams -d -l 4 -y
$onparams -d -l 5 -y
$onparams -d -l 6 -y
至此,逻辑日志迁移成功。
3.9 优化onconfig参数
vi /home/informix/sinodb/etc/onconfig.sinodb
修改onconfig.sinodb文件中的参数如下:
DBSPACETEMP tempdbs1,tempdbs2,tempdbs3,tempdbs4
SBSPACENAME sbdbs1
SYSSBSPACENAME sbdbs1
NETTYPE soctcp,2,2000,NET
MULTIPROCESSOR 1
VPCLASS cpu,num=2,noage
CLEANERS 32
DIRECT_IO 1
LOCKS 200000
DEF_TABLE_LOCKMODE row
SHMVIRTSIZE 1024000
SHMADD 512000
EXTSHMADD 8192
BUFFERPOOL size=2K,buffers=500000,lrus=32,lru_min_dirty=50,lru_max_dirty=60
修改参数后,重启数据库
$onmode -ky
$oninit -vy
4. 验证
- 建库、建表并插入数据
$ echo “create database testdb in datadbs1 with log;” | 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