一种透明化的数据库端口更改方法与流程

文档序号:12364415阅读:541来源:国知局
一种透明化的数据库端口更改方法与流程

本发明涉及一种数据库连接方法,尤其涉及一种透明化的数据库端口更改方法。



背景技术:

一般来说,java应用程序访问数据库的过程是:①装载数据库驱动程序;②通过jdbc建立数据库连接;③访问数据库,执行sql语句;④断开数据库连接。其中JDBC是java和关系数据库的之间的桥梁。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。JDBC通过Connection(连接对象接口),指向具体数据库连接对象=Drivermanager.getConnection(String URL)),其中URL这里配置的是数据库的连接字符串,包括数据库的连接IP地址,连接端口及数据库实例名,如:jdbc:oracle:thin:@192.168.1.1:1521:testdb。URL串中的IP地址可以使用域名,再通过DNS服务器转换成真实的IP地址。

为加强数据库的安全性,实际使用中往往需要更改数据库默认连接端口。但是在URL串中数据库连接端口号是一个具体数值。如果变更了数据库的连接端口,则需要到所有对应的每一台应用服务器上修改数据库连接的URL中的端口号数值,配置变更的过程非常繁琐,增加了大型企业应用服务器集群对数据库访问管理的难度。

由上可见,现有更改数据库默认连接端口存在如下技术问题:

1)、效率低。一个数据库通常都会有很多的应用连接上来,如果数据库变更了连接端口,则需要到每个应用上修改数据库连接配置,不得不操作额外的服务器,在大型的企业系统环境中配置变更的效率将非常的低。

2)、安全性低。在大型的企业环境中,修改了数据库连接端口后,可能会存在遗漏的系统配置未变更,或者改错的情况,导致应用连接不上数据库,造成生产故障,配置变更安全性非常低。

3)、不易管理。当数据库变更了连接端口后,则需要人为的到每台应用服务器上去修改数据库连接URL里的端口号,站在高效运维和自动化运维的角度来衡量,这样的配置变更非常不便于管理。



技术实现要素:

本发明所要解决的技术问题是提供一种透明化的数据库端口更改方法,能够实现数据库端口变更对应用程序访问透明,可以提高变更效率,变更的安全性及变更的易管理性,减少变更造成的故障,提高系统运行的稳定性。

本发明为解决上述技术问题而采用的技术方案是提供一种透明化的数据库端口更改方法,包括如下步骤:a)在应用服务器上配置数据库的默认连接端口,并启动端口转换模块;b)客户端发起请求,应用服务器收到请求后,对连接端口是否为数据库的默认连接端口进行判断;c)如果连接端为默认连接端口,则截取请求包,封包进入端口转换模块,通过指定的端口映射对应关系将端口进行转换;d)所述端口转换模块将请求包中的目标端口转换为变更的端口后,再和数据库创建物理连接,从数据库中获取数据,并返回给客户端。

上述的透明化的数据库端口更改方法,其中,所述默认连接端口配置在数据库的连接字符串中,所述数据库的连接字符串中还包括数据库的连接地址和数据库实例名,所述数据库的连接地址为IP地址或域名地址。

上述的透明化的数据库端口更改方法,其中,所述端口转换模块扫描本地发起的所有连接,对连接端口是否为数据库的默认连接端口进行判断,如果为非默认连接端口的请求,原请求直接发出;如果为默认连接端口,则截取请求包,封包进入端口转换模块,通过指定的端口映射对应关系将端口进行转换,再封包将请求发出。

上述的透明化的数据库端口更改方法,其中,所述端口转换模块启动后,先根据数据库的默认连接端口尝试与数据库服务器创建数据库连接,如果默认连接端口不存在,则遍历数据库服务器上所有端口,直至确认数据库服务器上的真实连接端口,并存储默认连接端口与真实连接端口之间的映射对应关系。

上述的透明化的数据库端口更改方法,其中,所述应用服务器与数据库服务器之间通过三次握手建立一个TCP连接,在TCP的包头里包含了数据库服务器的真实连接端口号。

本发明对比现有技术有如下的有益效果:本发明提供的透明化的数据库端口更改方法,通过,可以确保在修改数据库连接端口后,所有的应用在不需要做配置变更的情况下,都能正确的通过新的端口连接到数据库上进行数据库访问,大大提高变更效率,变更的安全性及变更的易管理性,减少变更造成的故障,提高系统运行的稳定性。

附图说明

图1为本发明透明化的数据库端口更改系统架构示意图;

图2为本发明透明化的数据库端口更改流程示意图;

图3为本发明检测数据服务器连接端口流程示意图;

图4为本发明的应用服务器和数据库服务器之间建立TCP连接示意图;

图5为图4中TCP包头结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的描述。

图1为本发明透明化的数据库端口更改系统架构示意图;图2为本发明透明化的数据库端口更改流程示意图。

请参见图1和图2,本发明提供的透明化的数据库端口更改方法,包括如下步骤:

a)在应用服务器上配置数据库的默认连接端口,并启动端口转换模块;

b)客户端发起请求,应用服务器收到请求后,对连接端口是否为数据库的默认连接端口进行判断;

c)如果连接端为默认连接端口,则截取请求包,封包进入端口转换模块,通过指定的端口映射对应关系将端口进行转换;

d)所述端口转换模块将请求包中的目标端口转换为变更的端口后,再和数据库创建物理连接,从数据库中获取数据,并返回给客户端。

本发明通过端口映射把该进程上需要监控的端口进行重定向,再连接该服务。比如在应用服务器中配置的数据库连接池的模式为域名:端口,端口为默认的端口号1521;

客户端发起请求,应用服务器收到请求后向数据库发起连接;

本机的端口转换进程扫描本地发起的所有连接,对端口是否为1521进行判断,如果为非1521端口的请求,原请求发出;

如果为1521端口,则截取请求包,封包进入端口转换模块,通过端口转换模块指定的端口映射对应关系将端口进行转换,再封包将请求发出;

请求包中的目标端口已经转换为变更后的端口,利用变更后的端口和数据库创建物理连接,从数据库中获取数据,返回给客户端。

在程序启动的时候,同时启动端口转换模块,不停的异步监听本机发出的http连接请求,一旦监听到请求的报文里有需要变换的端口,如Oracle数据库的默认端口1521,端口转换模块就启动一个线程,就把该端口重定向到真实的端口上(如1789端口),在这个线程里,完成端口转换。为了保证实现透明化的自动化重定向,在端口转换模块启动后需要先与远端的数据库服务器创建数据库连接,使用的是默认端口1521,端口转换模块会先到远端主机上尝试与1521创建连接,如果1521端口不存在,则到远程主机上遍历所有端口,确认数据库的真实连接端口值,再将1521端口转换为真实的数据库端口,整个过程由端口转换模块自动完成,不需要手动在端口转换模块中配置目标端口号,如图3所示。同时远程主机和host的hostport端口建立连接。也可以在端口映射装置的配置文件中指定端口的转发。通过这种端口映射装置,在数据库修改默认端口的情况下,应用端可以透明地连接到数据库上,不需要做大规模的配置变更。将本地主机要访问的远程端口进行映射变更,实现本地主机访问远程服务器的1521端口就相当于访问远程服务器的1789端口。

本发明的应用服务器与数据库服务器之间通过三次握手建立一个TCP连接,如图4所示,在应用服务器(主机A)的配置中,发起的请求是连接到数据库服务器(主机B)的1521端口,但数据库服务器的1521端口已被改为1789端口。通过本发明的端口转换模块,在主机A(应用服务器)发起第一次握手前,已将http报文内的目的端口从1521改成1789,主机发起第一次握手,发送给正确的数据库(主机B)的监控端口上,主机B收到请求后发起第二次握手回复连接确认信息给主机A,主机A再发起第三次握手,此时也需通过端口转换模块将连接确认信息发送给主机B。虽然主机A发起请求连接的端口是1521,但实际上是与主机B的1789端口建立了TCP连接。以此实现变更数据库端口对应用透明。在TCP的包头里包含了目标主机的端口号,如图5为TCP包头的结构。

综上所述,本发明的数据库端口变更后,不需要变更现有的应用代码,不需要变更现有的中间件运行配置,不需要额外的配置工作量,提高工作效率,简化复杂繁琐的工作。此外,本发明可以自动发现数据库端口号变更,并自动连接到真实的数据库端口上,而不需要做任何的手动配置,减少数据库变更带来的风险,提升数据库端口变更管理操作的可靠性、安全性,减少遗漏操作等带来应用系统无法正常连接等负面影响。本发明的数据库端口变更对应用透明,对于大型的生产环境,有效的提升了生产环境管理的简易性和效率。

虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1