Centos7安装SinoDB(Informix)
系统准备
关闭防火墙和Selinux
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config
SELINUX=disabled
系统参数调整优化
vi /etc/sysctl.conf
fs.file-max = 1000000
sysctl -p
用户进程级别的限制修改
echo "
* soft nofile 65535
* hard nofile 70000
" >> /etc/security/limits.conf
> 设置&检查主机名
hostnamectl set-hostname sinodb
hostnamectl status
> 配置hosts
vi /etc/hosts
192.168.1.38 sinodb
说明:这里我刚开始并没有设置hostname,后来因为无法远程连接端口(nc 192.168.1.38 33721) ,后来排查和定位的过程中设置了hostname,但同时也做了其他的修改,这里不太确定SinoDB是否必须设置hostname,没有进一步尝试和研究。
SinoDB底层实际是Informix。
SinoDB 数据库需要一个名字为 informix 的操作系统用户, 做为数据库的超级用户。 我们在安装前, 需要创建好这个用户。
groupadd informix
useradd -g informix -d /home/informix -s /bin/bash -m informix
passwd informix
1q2w3e
以root用户安装(如果用 informix 用户安装,后面会提示有些功能不支持非root用户安装)
mkdir -p /opt/soft
cp /opt/SinoDB.12.10.FC8TL.linux-x86_64-GIT-4bcde202b.tar /opt/soft
cd $_
tar -xvf SinoDB.12.10.FC8TL.linux-x86_64-GIT-4bcde202b.tar
ls
bundle.properties CSDK ICONNECT ids_install JDBC README.html SERVER SinoDB.12.10.FC8TL.linux-x86_64-GIT-4bcde202b.tar
执行安装命令
./ids_install
安装过程中出现命令行交互配置界面:
Enter #确认安装
Enter #License确认
Y #临时License确认
/opt/sinodb #指定数据库的安装位置
Y #确认安装目录指定是否正确
1 #典型安装
Enter #hostname使用默认值: localhost.localdomain
1526 #端口使用默认值:sinodb默认端口是8080,我修改成 1526
yes #是否启用OAT的管理密码、默认启用。如果不启用密码保护,则输入no。如果默认或输入yes,则会提示输入OAT用户名和密码。输入no和输入yes我都试过一次。
Enter #如果前面输入yes,使用默认OAT用户名admin,如果要指定用户名也可以输入指定的
1q2w3e #如果启用OAT的管理密码,会提示输入OAT用户的密码
1q2w3e #如果启用OAT的管理密码,会提示再次输入确认密码
Enter #其他许可信息
Y #其他许可信息确认
1 #安装过程中自动创建数据库实例选择1,如果输入2则不创建数据库实例
Enter #选择数据库预期的用户数量,快速安装默认1~100,则直接回车或者输入1
Enter #安装信息汇总确认,确认无误后,直接回车开始安装
Enter #安装前再次提示确认安装路径是否正确、是否开始安装,确认继续,开始安装,大约需要1~2分钟
Enter #提示直接进行实例初始化(Server Initialization),回车继续,初始化数据库实例,大约1分钟,初始化实例完成后,提示信息如下:
===============================================================================
Using the new instance
----------------------
A database server instance was created. If you chose to initialize the
instance, it is ready to use.
You can open a command prompt to an initialized instance by running one of the
following commands at /opt/sinodb, where ol_sinodb1210 is the path or filename
of the instance.
Windows:
ol_sinodb1210.cmd
UNIX csh:
source ol_sinodb1210.csh
UNIX ksh or bourne:
./ol_sinodb1210.ksh
If initialization fails, check the online.log file for messages. The
instance's root chunk must be owned by the correct user and group, and it must
have readable and writable (rw) permission bits set only for owner and group.
PRESS <ENTER> TO CONTINUE
提示数据库实例已经创建完毕,提示不同系统实例的环境变量文件位置。按照提示,以root身份打开一个新的终端命令行,执行命令加载环境变量:
cd /opt/sinodb
./ol_sinodb1210.ksh
Enter #输入回车,进入下一步,会提示安装成功的信息
Enter #确认安装完毕、退出安装
检查环境变量是否生效:
# echo $INFORMIXDIR
如果没有生效,则手动配置环境变量:
cat /opt/sinodb/ol_sinodb1210.ksh
INFORMIXDIR=/opt/sinodb
INFORMIXSERVER=ol_sinodb1210
ONCONFIG=onconfig.ol_sinodb1210
INFORMIXSQLHOSTS=/opt/sinodb/etc/sqlhosts.ol_sinodb1210
GL_USEGLU=1
PATH=${INFORMIXDIR}/bin:${INFORMIXDIR}/extend/krakatoa/jre/bin:${PATH}
export INFORMIXDIR INFORMIXSERVER ONCONFIG INFORMIXSQLHOSTS GL_USEGLU PATH
给root用户和informix用户添加环境变量:
vi /root/.bash_profile
末尾追加环境变量配置:
INFORMIXDIR=/opt/sinodb
INFORMIXSERVER=ol_sinodb1210
ONCONFIG=onconfig.ol_sinodb1210
INFORMIXSQLHOSTS=/opt/sinodb/etc/sqlhosts.ol_sinodb1210
GL_USEGLU=1
PATH=${INFORMIXDIR}/bin:${INFORMIXDIR}/extend/krakatoa/jre/bin:${PATH}
export INFORMIXDIR INFORMIXSERVER ONCONFIG INFORMIXSQLHOSTS GL_USEGLU PATH
source /root/.bash_profile
echo $INFORMIXDIR
su - informix
vi .bash_profile
末尾添加相同的配置内容
source .bash_profile
echo $INFORMIXDIR
注意环境变量中的关键信息:
默认初始化实例的数据库服务名:ol_sinodb1210
数据库实例(服务)的配置文件:onconfig.ol_sinodb1210
HOSTS配置文件:/opt/sinodb/etc/sqlhosts.ol_sinodb1210
cat /opt/sinodb/etc/onconfig.ol_sinodb1210 #可以不用修改
cat /opt/sinodb/etc/sqlhosts.ol_sinodb1210 #需要根据实际情况修改
查看实例的状态, 如果是 online 说明服务状态正常
onstat -
[root@localhost soft]# onstat -
Your evaluation license will expire on 2022-12-18 00:00:00
Sinoregal SinoDB Dynamic Server Version 12.10.FC8TL -- On-Line -- Up 00:15:04 -- 254088 Kbytes
查看服务监听端口
cat /opt/sinodb/etc/sqlhosts.ol_sinodb1210
[root@localhost etc]# cat /opt/sinodb/etc/sqlhosts.ol_sinodb1210
ol_sinodb1210 onsoctcp localhost.localdomain ol_sinodb1210
dr_sinodb1210 drsoctcp localhost.localdomain dr_sinodb1210
lo_sinodb1210 onsoctcp 127.0.0.1 lo_sinodb1210
查看服务 ol_sinodb1210 对应的监听端口
vi /etc/services
最后几行:
lo_sinodb1210 14782/tcp
ol_sinodb1210_json 27017/tcp #JSON listener for ol_sinodb1210
ol_sinodb1210 33721/tcp #该端口为远程连接数据库访问端口
dr_sinodb1210 26709/tcp
lo_sinodb1210_1 7366/tcp
ol_sinodb1210_json_1 7067/tcp #JSON listener for ol_sinodb1210
[root@sinodb ~]# ps aux |grep informix
informix 1712 0.0 0.0 113280 1196 ? S< 00:59 0:00 /bin/sh -c /opt/sinodb/extend/krakatoa/jre/bin/java -Dcom.ibm.tools.attach.enable=no -jar /opt/sinodb/bin/jsonListener.jar -config /opt/sinodb/etc/jsonListener.properties -logfile /opt/sinodb/ol_sinodb1210_jsonListener.log -start > /dev/null 2>&1
informix 1713 0.0 0.6 2543456 36908 ? S<l 00:59 0:08 /opt/sinodb/extend/krakatoa/jre/bin/java -Dcom.ibm.tools.attach.enable=no -jar /opt/sinodb/bin/jsonListener.jar -config /opt/sinodb/etc/jsonListener.properties -logfile /opt/sinodb/ol_sinodb1210_jsonListener.log -start
informix 1874 0.0 3.6 430964 215584 ? S< 01:21 0:03 oninit
informix 1912 0.0 0.4 430452 24476 ? S< 01:22 0:03 oninit
root 2507 0.0 0.0 112808 968 pts/0 S+ 08:55 0:00 grep --color=auto informix
[root@sinodb ~]#
最初我的监听端口33721无法远程访问(nc 远程无法访问33721,提示连接拒绝,本机通过 127.0.0.1可以访问),显示的监听状态如下:
[root@localhost sinodb]# netstat -an |grep 33721
tcp6 0 0 ::1:33721 :::* LISTEN
[root@localhost sinodb]#
后来修改配置文件中正确以后,正确的监听状态如下:
[root@sinodb ~]# netstat -an |grep 33721
tcp 0 0 192.168.1.38:33721 0.0.0.0:* LISTEN
其中7067,7366端口为本地(内部)JSON listener监听端口:
[root@localhost sinodb]# cat /opt/sinodb/etc/jsonListener.properties
listener.port=7067
url=jdbc:informix-sqli://localhost:7366/sysmaster:INFORMIXSERVER=lo_sinodb1210;USER=ifxjson;PASSWORD=eWLaI(AzWoF
[root@localhost sinodb]#
关于 informix 默认允许访问的用户,Informix数据库支持两种用户访问方式,数据库内部用户和操作系统用户。数据库内部用户是指使用create user命令创建的用户,通过映射配置,新建用户可以映射至操作系统用户。这种方法使系统可以通过映射系统中已存在的除 Informix 和 root 外的其他用户,来访问数据库。这种机制将会减少为了使用数据库而创建的大量系统用户。
查看数据库状态:
onstat -i
[root@sinodb ~]# onstat -i
Your evaluation license will expire on 2022-12-18 00:00:00
Sinoregal SinoDB Dynamic Server Version 12.10.FC8TL -- On-Line -- Up 07:39:04 -- 254088 Kbytes
进入数据库,不指定数据库登录:
dbaccess - -
-- 创建数据库并测试
create database testdb;
create table test (id int not null, name varchar(255), primary key (id));
insert into test values(1,'test');
select * from test;
将 testdb 数据库授权给用户(切换到 testdb 数据库、再执行授权命令)
database testdb;
grant dba to informix;
用 informix 用户连接数据库:
CONNECT TO 'testdb@lo_sinodb1210' USER 'informix';
testdb为数据库、lo_sinodb1210为数据库服务名,输入informix系统用户的密码即可
select * from test;
用 informix 用户连接数据库:
CONNECT TO 'sysmaster@lo_sinodb1210' USER 'informix';
sysmaster为数据库(安装后默认就有了)、lo_sinodb1210为服务名,输入informix系统用户的密码即可
DBeaver远程连接数据库:
JDBC-URL for testdb:
jdbc:informix-sqli://192.168.1.38:33721/testdb:INFORMIXSERVER=lo_sinodb1210
连接用户密码:informix/1q2w3e
JDBC-URL for sysmaster:
jdbc:informix-sqli://192.168.1.38:33721/sysmaster:INFORMIXSERVER=lo_sinodb1210
连接用户密码:informix/1q2w3e
数据库关闭
su - informix
onmode –ky
数据库启动
oninit -v
或者
onmode – vy
查看数据库状态
onstat -i
远程无法访问(无法通过 192.168.1.38 或者hostname sinodb 访问) 33721 端口
onmode -ky
修改配置 sqlhosts.ol_sinodb1210
vi /opt/sinodb/etc/sqlhosts.ol_sinodb1210
修改第一行:
ol_sinodb1210 onsoctcp localhost.localdomain ol_sinodb1210
的 localhost.localdomain 修改为 sinodb
修改后如下:
[root@sinodb etc]# cat sqlhosts.ol_sinodb1210
ol_sinodb1210 onsoctcp sinodb ol_sinodb1210
dr_sinodb1210 drsoctcp localhost.localdomain dr_sinodb1210
lo_sinodb1210 onsoctcp 127.0.0.1 lo_sinodb1210_1
[root@sinodb etc]#
启动数据库:
oninit -v
[root@sinodb etc]# netstat -an |grep 33721
tcp 0 0 192.168.1.38:33721 0.0.0.0:* LISTEN
nc 192.168.1.38 33721
端口能通以后,就可以通过IP地址可以远程访问了,再通过DBeaver客户端工具也就可以远程访问了:
连接默认的sysmaster数据库:
主机:192.168.1.38
端口:33721
服务器:lo_sinodb1210
数据库/模式:sysmaster
用户名:informix
密码:1q2w3e
连接testdb数据库:
主机:192.168.1.38
端口:33721
服务器:lo_sinodb1210
数据库/模式:testdb
用户名:informix
密码:1q2w3e
注意:如果sqlhosts.ol_sinodb1210配置不对的话,只会存在:
[root@localhost ~]# netstat -an |grep 33721
tcp6 0 0 ::1:33721 :::* LISTEN
无法远程访问端口。
配置正确以后:
[root@sinodb etc]# netstat -an |grep 33721
tcp 0 0 192.168.1.38:33721 0.0.0.0:* LISTEN
informix常用命令:参考
informix常用命令:_sunny05296的博客-CSDN博客