SQL-Relay学习笔记(1)

基本配置

文件位置

Unix和Linux下其配置文件位于

  • Built from source - /usr/local/firstworks/etc/sqlrelay.conf
  • RPM package - /etc/sqlrelay.conf
  • FreeBSD package - /usr/local/etc/sqlrelay.conf
  • NetBSD package - /usr/pkg/etc/sqlrelay.conf
  • OpenBSD package - /usr/local/etc/sqlrelay.conf

Windows下
安装目录\etc
例如:C:\Program Files\Firstworks\etc\sqlrelay.conf


文件结构

<?xml version="1.0"?>
<instances>

        <instance id="example">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="user=scott;password=tiger;oracle_sid=orcl"/>
                </connections>
        </instance>

</instances>

实例的名称为example
实例的用户名为sqlruser,口令为sqlrpassword
数据库的用户名为scott,口令为tiger,sid为orc1
默认5个持久连接, 要修改的话在 instance标签加入connections属性

开启命令:
sqlr-start -id example
默认使用9000端口

开启远程主机的sqlrelay:
sqlrsh -host hostname -user sqlruser -password sqlrpassword

开启本地服务
sqlrsh -host localhost -user sqlruser -password sqlrpassword


Database Cursor(数据库光标)

用于执行请求并处理结果集。大部分应用只用得到一个光标,有的请求需要多个。。
sqlrelay会想保持链接一样保持光标,默认情况下,每个连接打开一个光标,但每个连接可以开启的光标数,可以由instance的cursor属性指定


动态缩放

connections和cursors都可以动态缩放,设置初始值和上限即可,都是动态开辟,用后释放的模式。

<?xml version="1.0"?>
<instances>

        <instance id="example" connections="10" maxconnections="20" cursors="2" maxcursors="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="user=scott;password=tiger;oracle_sid=orcl"/>
                </connections>
        </instance>

</instances>

除此之外,还有一些属性

  • maxqueuelength
  • growby
  • ttl
  • cursors_growby

监听器配置

默认端口是9000,可以通过port属性修改

开启命令修改为:
sqlrsh -host sqlrserver -port 9001 -user sqlruser -password sqlrpassword

可以绑定unix的socket
sqlrsh -socket /tmp/example.socket -user sqlruser -password sqlrpassword

如果服务器有多个网口,可以用addresses属性绑定多个IP

<instance id="example" addresses="192.168.1.50,192.168.123.51" connections="10">
...
</instance>

但这种情况下不会监听本机


数据库配置

通过修改dbase属性修改数据库,默认是oracle
如下配置可以连接IBM DB2数据库

<?xml version="1.0"?>
<instances>

        <instance id="example" dbase="db2" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="db=testdb;user=db2inst1;password=db2inst1pass;lang=C;timeout=0"/>
                </connections>
        </instance>

</instances>

会话-请求

在会话开始和结束时运行一系列请求

<?xml version="1.0"?>
<instances>

        <instance id="example" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <session>
                        <start>
                                <runquery>alter session set nls_date_format='MM/DD/YYYY'</runquery>
                        </start>
                        <end>
                                <runquery>alter session set nls_date_format='DD-MON-YYYY'</runquery>
                        </end>
                </session>
                <connections>
                        <connection string="user=scott;password=tiger;oracle_sid=orcl"/>
                </connections>
        </instance>

</instances>


多个实例

配置文件中可以定义多个实例(instance)

<?xml version="1.0"?>
<instances>

        <instance id="oracleexample" port="9000" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="user=scott;password=tiger;oracle_sid=orcl"/>
                </connections>
        </instance>

        <instance id="sapexample" dbase="sap" port="9001" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="sybase=/opt/sap;lang=en_US;server=TESTDB;user=testuser;password=testpassword;db=testdb"/>
                </connections>
        </instance>

        <instance id="db2example" dbase="db2" port="9002" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="db=testdb;user=db2inst1;password=db2inst1pass;lang=C;timeout=0"/>
                </connections>
        </instance>

</instances>

启动命令
sqlr-start -id oracleexample
sqlr-start -id sapexample
sqlr-start -id db2example
链接命令
sqlrsh -host sqlrserver -port 9000
sqlrsh -host sqlrserver -port 9001
sqlrsh -host sqlrserver -port 9002


配置路径

多个实例在一个文件中有时候也会存在问题,所以拆分成多个配置文件也是需要的。
将配置文件放入sqlrelay.conf.d

.../sqlrelay.conf.d/oracle.conf

<?xml version="1.0"?>
<instances>

        <instance id="oracleexample" port="9000" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="user=scott;password=tiger;oracle_sid=orcl"/>
                </connections>
        </instance>

</instances>

.../sqlrelay.conf.d/sap.conf

<?xml version="1.0"?>
<instances>

        <instance id="sapexample" dbase="sap" port="9001" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="sybase=/opt/sap;lang=en_US;server=TESTDB;user=testuser;password=testpassword;db=testdb"/>
                </connections>
        </instance>

</instances>

.../sqlrelay.conf.d/db2.conf

<?xml version="1.0"?>
<instances>

        <instance id="db2example" dbase="db2" port="9002" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="db=testdb;user=db2inst1;password=db2inst1pass;lang=C;timeout=0"/>
                </connections>
        </instance>

</instances>


指定配置文件

开启命令除了id参数还有config参数
当指定一个文件时,file://前缀可省略,但指定一个文件夹时,dir://不可省略

sqlr-start -id oracleexample -config /home/myuser/mysqlrelay.conf
sqlr-start -id oracleexample -config file:///home/myuser/mysqlrelay.conf
sqlr-start -id oracleexample -config dir:///home/myuser/mysqlrelay.conf.d

config后可以接多个参数,用逗号隔开即可。


使用远程配置文件

可以通过libcurl内的协议,使用远程的配置文件,如http,ftp,scp,sftp,smb等

sqlr-start -id oracleexample -config http://configserver.mydomain.com/sqlrconfig/sqlrelay.conf
sqlr-start -id oracleexample -config http://myuser:mypassword@configserver.mydomain.com/sqlrconfig/sqlrelay.conf
sqlr-start -id oracleexample -config http://[/usr/local/firstworks/etc/sqlruserpwd.txt]@configserver.mydomain.com/sqlrconfig/sqlrelay.conf

第一种方法,无验证,直接远程获取
第二种方法,URL中给定用户名和口令并用@隔开
第三种方法,文件中写入用户名口令(文件的内容遵循格式“username:password”)
最好使用第三种方法。


链接文件

配置文件可以包含其他配置文件的链接

# oracle configuration
http://myuser:mypassword@configserver.mydomain.com/sqlrconfig/oracle.conf

# sap/sybase configuration
http://myuser:mypassword@configserver.mydomain.com/sqlrconfig/sap.conf

# db2 configuration
http://myuser:mypassword@configserver.mydomain.com/sqlrconfig/db2.conf


自动运行配置文件

之前的例子,都是通过sqlr-start命令和-id参数启动配置文件,如果不带id参数调用sqlr-start,则会将所有enabled属性为yes的实例启动

<?xml version="1.0"?>
<instances>

        <instance id="oracleexample" enabled="yes" port="9000" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="user=scott;password=tiger;oracle_sid=orcl"/>
                </connections>
        </instance>

        <instance id="sapexample" dbase="sap" port="9001" connections="10">
                <users>
                        <user user="sqlruser" password="sqlrpassword"/>
                </users>
                <connections>
                        <connection string="sybase=/opt/sap;lang=en_US;server=TESTDB;user=testuser;password=testpassword;db=testdb"/>
                </connections>
        </instance>


</instances>

上面的配置,sqlr-start命令会启动oracleexample,而不会启动sapexample。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值