马 腾
(福建省建设信息中心,福建 福州 350001)
福建省自1994年起实施住房公积金制度以来,住房公积金在健全城镇住房供应和保障体系、加快解决中低收入家庭住房问题、促进住房消费、推动房地产市场持续健康发展等方面发挥了重要作用。
为了推动全省住房公积金管理的标准化、规范化和信息化,提高全省住房公积金管理的服务水平,2002年,省住建厅牵头开发建设了福建省住房公积金业务处理信息系统,并在全省9个设区城市住房公积金管理中心和省直、铁路、能源集团等3个行业住房公积金管理机构中推广应用,大大提高了我省住房公积金管理信息化水平。
随着住房公积金业务的快速发展和信息系统的推广应用,住房公积金数据量越来越大,截止2011年10月底,全省住房公积金缴存人数230多万人,缴存金额突破1200亿元,数据安全已经成为亟待解决的重大问题。
为此,省住建厅决定建立全省住房公积金灾备中心。数据库远程复制是灾备中心建设的关键技术,由于全省住房公积金业务处理信息系统统一采用Informix数据库,因此,基于Informix的数据库复制技术是本文研究的重点。
数据库远程复制通常是指把数据从生产数据库服务器复制到备份数据库服务器,生产服务器和备份服务器分别位于不同的地点,二者通过TCP/IP建立连接,提供一种可靠、即时的容灾备份机制。另外,由于生产服务器和备份服务器处于“双活”状态,因此用于备份的备份服务器可被用于进行一些查询、统计等操作,提高数据的利用率,分担生产服务器的负载。
Informix是IBM公司出品的关系数据库管理系统(RDBMS)家族,作为一个集成解决方案,它被定位为作为IBM在线事务处理 (OLTP)旗舰级数据服务系统,在金融、电信、零售等行业广泛使用。在数据复制方面,Informix数据库系统提供了包括企业复制(Enterprise Replication,ER)和高可用性数据复制(High-Availability Data Replication,HDR)在内的强大数据复制解决方案。
*HDR (High-Availability Data Replication)高可用性数据复制技术
HDR是通过读取数据库事务日志的方式实现主、备机互相接管的功能,当主机工作时,备机提供只读功能,因此,备机可以提供查询、报表等功能,实现负载分担的功能,当主机发生故障,备机会自动接管,实现主机及备机的接管功能。
*ER(Enterprise Replication)企业复制技术
ER也是通过读取数据库日志的方式实现数据同步功能,当源数据库数据发生变化后,Informix数据库通过读取数据库日志,将变化的数据及时同步到目标数据库。
ER方式和HDR方式的不同在于HDR数据库的接管是基于数据库服务器的,也就是HDR的作用范围是基于整个实例的,而ER的作用范围是作用于一个表,ER方式可以灵活定义需要复制哪些数据列及数据行,而且可以灵活定义数据复制的方式,是采用主从方式、汇总方式还是双向复制方式。
同时,HDR还要求主服务器和备份服务器的操作系统和硬件相同,添加到每个服务器的块的磁盘布局必须相同,主服务器和备份服务器上的IDS的版本必须一样,而ER就没有上述要求。
因此,在远程数据容灾方式下,ER数据库复制技术是更为主流的选择,本文主要针对ER的研究。
IBM Informix Enterprise Replication是基于日志的异步工具,用在数据库服务器之间复制数据,它可以跨平台、跨IBM Informix Dynamic Server的各个版本使用,Enterprise Replication不需要在实例之间定义相同的储存,甚至不需要使用相同的表结构和名称。生产服务器上的Enterprise Replication通过读取逻辑日志、存储事务并将每个事务作为复制数据可靠传输至备份服务器来捕获要复制的事务,备份数据库服务器的Enterprise Replication接收复制数据中所包含的每个事务,并将其应用到对应的数据库和表中,成为正常的已记录事务。
生产数据库服务器在把逻辑日志缓冲区中的内容写往磁盘之前,先将其拷贝至数据复制缓冲区,数据复制缓冲区的内容通过TCP/IP经由网络传到备份数据库服务器的数据复制缓冲区中,备份数据库服务器中的数据接收线程接收数据复制缓冲区的内容并将其放入恢复缓冲区,数据复制线程根据这些上传的逻辑日志记录进行数据库写入操作,从而使备份服务器起到了对生产服务器进行数据备份的作用。
上述数据复制过程在异步方式下工作,生产数据库的数据处理无需等待备份服务器的数据复制,因此,ER数据复制基本不影响生产服务器的业务处理性能。
ER支持两种类型的复制系统:主-目标复制系统、随处更新复制系统。在主-目标复制系统中,数据的复制是单向的,始终由生产服务器向备份服务器发送数据。在随处更新复制系统中,在任何参与的数据库服务器上进行的更改都被复制到所有其它参与的数据库服务器。
ER灵活支持多种拓扑结构,适应多种数据复制方式。
福建省住房公积金业务处理信息系统采用分布式架构,在全省9个设区市住房公积金管理中心和省直、铁路、能源集团等3个行业住房公积金管理机构进行部署,配置独立的Informix数据库服务器。福建省住房公积金数据灾备中心采用基于Informix ER的数据库远程复制方式。
福建省住房公积金数据灾备中心为全省12个住房公积金管理中心业务处理信息系统提供数据远程灾备。Informix ER支持多对一的数据库复制,并可实现数据的实时复制,系统架构如下:
数据灾备中心的数据库复制拓扑采用集中星型(hub-spoke)拓扑:
数据复制采用主-目标复制模式,在该模式下,数据的复制是单向的,由各住房公积金管理中心的数据库服务器发送数据,数据灾备中心服务器只接收并写入数据库,如果数据灾备中心服务器停止运行或网络连接出现故障,各住房公积金管理中心服务器上的ER将持续记录数据库日志,一旦与数据灾备中心数据库连接恢复,将继续进行数据复制。
数据灾备中心Informix数据库一直处于OPEN状态,Informix ER通过接口将复制的数据实时写入数据灾备中心数据库。当生产中心出现灾难时,可由数据灾备中心在短时间内恢复数据。
Informix ER数据复制操作只是读取数据库系统的日志文件,同时通过TCP/IP方式传输发生改变的数据,使得网络负载降至最低,实际每小时传输的数据量不大于每小时日志文件的大小。
文件备份:
实施过程需要修改生产服务器(fz_refms)中部分参数或配置文件,故在修改这些参数前做需要做好下列文件的备份工作,以root登录生产服务器。
cp /home/informix/etc/onconfig.refms /home/informix/etc/onconfig.refms.bak
cp/home/Informix/etc/sqlhost/home/Informix/etc/sqlhosts.bak
cp/etc/hosts/etc/hosts.bak
cp/etc/services/etc/services.bak
cp/etc/fstab/etc/fstab.bak
修改HOSTS文件:
在生产服务器上的/etc/hosts文件上添加:1.1.1.1 fjst
在备份服务器 (fjst)上的/etc/hosts文件上添加:
2.2.2.2 fz_refms
校准服务器时间:
采用NTP协议保证复制双方时间的一致性。
设置可信环境:
在生产服务器上的/etc/hosts.equiv文件上添加:fjst informix;fz_refms informix
在备份服务器上的/etc/hosts.equiv文件上添加:fjst informix;fz_refms informix
设置服务端口:
在生产服务器上的/etc/services文件上添加:st2_service 1527/tcp
设置SQLHOSTS文件:
以informix登录,在生产服务器上的$INFORMIXDIR/etc/sqlhosts文件上添加:
g_fz group - - i=6
refms onsoctcp fz_refms informix_ser g=g_fz
g_fjst group - - i=2
fjst onsoctcp fjst st2_service g=g_fjst
设置生产服器上的发送队列缓冲空间:
以informix登录
建立CDR_QHDR_DBSPACE(2G)
touch/informix/er_dbs/cdr_qhdr_dbspace
chmod 660/informix/er_dbs/cdr_qhdr_dbspace
onspaces-c-d cdr_qhdr_dbspace-p/informix/er_dbs/cdr_qhdr_dbspace-o 0-s 2000000
建立CDR_DBSPACE(2G)
touch/informix/er_dbs/cdr_dbspace
chmod 660/informix/er_dbs/cdr_dbspace
onspaces-c-d cdr_dbspace-p/informix/er_dbs/cdr_dbspace-o 0-s 2000000
建立 cdr_qdata_sbspace(53G)
touch/informix/er_dbs/cdr_qdata_sbspace
chmod 660/informix/er_dbs/cdr_qdata_sbspace
onspaces-c-S cdr_qdata_sbspace-p/informix/er_dbs/cdr_qdata_sbspace -s 53000000 -o 0 -Df"AVG_LO_SIZE=2,LOGGING=OFF"
建立异常事务文件位置:
以informix登录,在生产服务器上建立ATS目录和RTS目录:
mkdir/informix/er_dbs/ats
mkdir/informix/er_dbs/rts
设置onconfig配置参数:
以informix登录,在生产服务器上修改参数文件onconfig.refms,添加以下几行:
CDR_DBSPACE cdr_dbspace
CDR_QHDR_DBSPACE cdr_qhdr_dbspace
CDR_QDATA_SBSPACE cdr_qdata_sbspace
重启生产数据库:
以informix登录,在生产服务器上运行如下命令重启数据库:
onmode-ky
oninit-vy
初始化数据:
生产服务器通过dbexport命令导出数据,上传备份服务器,通过dbimport导入
建立复制:
通过cdr define replicate创建表复制
验证复制是否建立成功:cdr list repl
通过cdr change replicateset创建复制集合
验证是否建立成功:cdr list replset replset_fzdb
启动复制:cdr start replset replset_fzdb
检查复制:cdr list server
在Informix ER的运行过程中,可查看生产服务器和备份服务器的运行状态,监控ER发送队列和接收队列缓冲区的使用情况,防止ER发送队列和接收队列从内存溢出,并且可以添加、删除数据表的复制,Informix ER主要的日常监控和维护命令包括:
*cdr list server,查看本地服务器和已知的每个服务器的状态。这个命令还可输出服务器组的队列的大小。
*cdr list replcate,查看复制的属性。如果未在命令行指定所定义的复制名称,ER列出当前服务器上定义的所有复制的详细信息。
*数据库日志文件online.log,可以查看数据库运行情况,记录online系统的启动信息、ER的状态信息、参数调整信息、检查点信息、错误信息和关闭系统信息等。
*onstat-d,监控ER缓冲区使用情况,正常情况下,ER发送队列和接收队列不应当从内存溢出到磁盘中,但是当发生异常情况时ER发送队列和接收队列将可能从内存溢出到磁盘中,为防止内存队列溢出,应定期监控发送和接收队列的磁盘空间使用情况。
*onstat-g rqm,查看暂留在本地的数据量。
*cdr stop命令停止 ER线程。在使用cdr stop时,ER停止读取逻辑日志和寻找要复制的数据。在ER停止时,要确保当时没有数据库活动发生,否则这个生产服务器就会与备份服务器上的数据不同步。
*要想重新启动已经停止的ER服务器,应该使用cdr start。在重新启动服务器时,ER线程启动并从重放位置(原来停止的位置)继续计算逻辑日志。如果重放的位置指向的逻辑日志不再存在,那么重新启动失败,在服务器上ER不处于活跃状态。
*cdr change replicateset-add,将新表添加到ER复制。
*drop table,删除已加入ER复制的表。
当某一个或多个住房公积金管理中心发生数据灾难时,可以通过数据灾备中心的备份数据进行恢复。
在数据恢复前,首先停止生产中心的应用,将灾备中心的数据以全库或个别库的方式导出,生成导出文件,将导出文件通过传输网络复制回生产中心,导入生产中心数据库中,并经过严格的数据一致性检查,确认恢复数据与业务的一致性后,恢复生产中心的运行状态。
数据恢复时间与备份数据量大小相关,影响的主要因素在于网络传输的时间,以恢复1GB数据为例,生产中心备份与灾备中心之间的传输网络带宽为10Mbps,约为每秒1~1.2M字节,传输1GB数据所需时间=1000M/(1—1.2)=833— 1000S,约为 16 分钟左右。
根据上述估算,全省各住房公积金管理中心备份数据均可在24小时内完成全库恢复。
基于Informix ER的数据复制实现方式灵活,支持实时复制,对主机、存储平台无一致性要求,并且能够实现跨平台、跨版本复制,但也存在以下约束因素:
数据库系统:生产服务器和备份服务器必须采用Informix数据库系统,并且尽量采用相同的版本。
日志记录:在ER复制所涉及的所有服务器实例上创建数据库时,必须带有日志记录,为了使对数据库系统的影响最小,尽可能使用已缓冲的日志记录。
临时表:由于数据库服务器在应用程序终止或关闭数据库时会删除临时表,所以不应将这些表包含在复制环境中。
主键约束:需要复制的所有表必须在至少一列上定义Primary Key约束,ER需要使用主键提高性能和解决冲突,尽管最新的Informix 11.7版本能够支持无主键表复制,但为了提高ER性能,应尽量建立主键。
大事务处理:虽然ER能够处理大事务,但它是为小事务优化的,为了获得最佳性能,应尽量避免大事务。
SQL语句:在表加入复制后,不能执行任何更改表结构的操作,必须操作时,需先停止复制。禁用的SQL 语句包括:drop table、rename table、alter fragment。
时钟同步:ER使用时间戳标记、解决复制冲突,因此参与复制的数据库服务器时间须进行同步,应使用NTP保证时钟同步。
避免频繁启停ER:在实际实施过程中,笔者发现,如果ER频繁启停,容易导致数据库系统的异常,导致需要重启数据库,因此应尽量避免。
本文采用基于Informix ER机制的远程数据库复制技术很好地适应了全省12个住房公积金管理中心的软硬件现状,满足了全省住房公积金数据灾备中心的建设要求,通过数据集中备份和共享硬件平台的方式,建立全省住房公积金数据灾备中心,对于建立全省统一的住房公积金数据安全管理应急处置机制,确保全省住房公积金数据安全,实现对全省住房公积金管理全过程实施动态监管,提高全省住房公积金数据综合利用水平,促进全省住房公积金信息共享和业务协调,避免各地重复建设,降低建设与维护成本具有重要意义。