搜索 Search
你的位置:首页 > 行业快讯 > 消费机

数据库备份方案进行数据转储

2014/3/22 16:21:03点击:

4.5.6数据库备份方案进行数据转储是一卡通系统数据安全性和进行数据恢复的前提,一卡通系统的数据库备份采用增量转储,分地转储的方案。

转储由中心数据服务器发起,由各个子服务器进行。

分地转储的方法是中心服务器考虑数据的重要性、子服务器的位置、可靠性以及通信速度后确定策略,将一个服务器上的数据放置在另一个服务器上,这样做可以在一台服务器硬件损坏时保证数据不被丢失。

转储时采用增量转储的方案,因为一卡通的数据库容量非常庞大,如果采用海量转储,不但通信效率会大大降低,磁盘的容量也有可能不足,采用增量转储的方法,每次只存储与上次不同的部分,恢复时利用系统日志,可以完全恢复到原来的状态。

4.6本章小结本章对一卡通系统的总体设计方案进行了描述,指出了系统的总体设计目标与功能模块的划分,从后台管理、前台设计、网络结构模型等方面将一卡通系统设计过程中涉及到的技术进行了大致的描述。

505章系统详细设计及编码实现5.1通信模块设计通信模块包括通信协议、监听处理过程、加密解密模块、数据分类等,下面具体介绍各个模块的设计。

一卡通系统的通信协议是指终端机与服务器之间的通信数据格式,包括请求的类型、数据、时间和其它的附加字段,具体用C语言定义如下:enumREQUEST_TYPE:BYTE{//枚举类型,代表请求的类型TYPE_CREATE_CARD=0,//类型:创建卡片TYPE_REQUEST_CARD,//类型:查询卡片状态TYPE_REQUEST_USER,//类型:查询用户信息TYPE_MEAL_BUY,//类型:刷卡TYPE_SHOP_BUY,//类型:商店刷卡TYPE_USER_VALID,//类型:查询用户是否有效......};typedefstructtagSmartCardRequest{//结构类型,代表单次请求REQUEST_TYPErType;//请求类型,REQUEST_TYPE的一个值INT32requestSize;//请求结构大小BYTE*requestData;//请求数据BYTEoptionData[40];//附加数据CTimerTime;//时间戳}SmartCardRequest,*pSmartCardRequest;监听处理过程是一卡通服务器的主要处理过程,它采用ServiceProc静态方法来实时监听用户的请求,在得到一个用户请求后调用dealRequest处理用户请求,代码如下描述:51加密解密模块采用现有的加密解密库进行处理,我们采用开源的openssl处理请求消息,在发送重要消息时调用encypt_rsa()进行RSA加密,一般情况下调用encypt_des()将消息进行MD5加密。

到达服务器端后采用其相对应的解密函数(decypt_rsa()或者decypt_des())进行解密。

5.2服务器管理与维护服务器管理维护由数据中心后台操作员操作执行,它可以分为服务器启动停止、服务器状态查看、日志管理、终端机操作记录查看、一卡通操作记录查看、实时通信质量报告、数据库备份情况报告等。

与日志相关的设计将在5.9节加以介绍,下面介绍服务器服务过程的相关设计。

在服务器出现故障或者有其它需要时,可以手动启动和停止服务器,后台提供服务器操作员接口方便地进行操作,还可以查看服务器的服务状态,以利于维护人员进行维护。

绑定端口:bind()初始化ioctlsocket(sock,FIONBIO,&arg)创建socket:Socket()是否结束接受一个客户端的连接提供服务直到客户端断开连接结束52下面是服务启动的代码段,其主要过程是建立监听线程,并初始化相关参数,主要函数是startListen函数。

HRESULTCServerService::startListen(){_ASSERTE(_listenThread==NULL);if(_listenThread!=NULL)returnE_UNEXPECTED;_list=list;LISTEN_PARAM*param=newLISTEN_PARAM;param->finishEvent=&_finishEvent;CWinThread*pThread=AfxBeginThread(CServerService::serviceProc,(LPVOID)param,0,0,CREATE_SUSPENDED);_ASSERTE(pThread!=NULL);if(pThread==NULL)returnE_FAIL;HANDLEhProcess=::GetCurrentProcess();BOOLret=::DuplicateHandle(hProcess,pThread->m_hThread,hProcess,&_listenThread,0,TRUE,DUPLICATE_SAME_ACCESS);_ASSERTE(ret!=FALSE);if(ret==FALSE)returnE_FAIL;pThread->ResumeThread();returnS_OK;}停止服务器的过程是将_finishEvent置位使得服务器监听过程检测到结束状态,并等待服务器结束,然后返回。

_finishEvent.SetEvent();DWORDret=::WaitForSingleObject(_listenThread,5000);53_ASSERTE(ret==WAIT_OBJECT_0);if(ret!=WAIT_OBJECT_0)returnE_FAIL;broadcastServer.stopListen();::CloseHandle(_listenThread);_listenThread=NULL;5.3一卡通卡片信息管理模块对一卡通卡片信息的管理包括一卡通的开卡、挂失与解锁、信息查询、信息打印、信息修改、销卡、换卡等。