具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
T-SQL(Transact-SQL),微软提供的基于SQL的扩展,用于让应用程序与SQLServer实例之间交互的主要语言,可以提供标准SQL的DLL和DML功能,加上延伸的函数、系统预存程序以及程式设计结构让程式设计更有弹性。
DBCC Trace Flag:是指数据库实例的跟踪标记,包含于T-SQL,其中,Transact-SQL编程语言提供DBCC语句作为SQLServer的数据库控制台命令,用于对数据库的物理和逻辑一致性进行检查。
链接服务器(Linked Server):SQLServer提供的一项能够跨实例执行T-SQL的功能的服务器。
双机集群系统(High Availability,HA):一种保障服务高可用性的集群系统,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点即备用节点。
实施例1
根据本申请实施例,提供了一种操作对象数据同步方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现操作对象数据同步方法的计算机终端(或移动设备)的硬件结构框图,如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的操作对象数据同步方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的操作对象数据同步方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
在本技术领域中,关系型数据管理系统SQLServer双机高可用版系列产品中,采用一主一备两台主机的形态提供服务,正常情况下主节点提供数据库服务,当主节点发生故障时,双机集群系统将用户流量引到备节点使数据库继续正常提供服务,并为故障节点提供充足的恢复时间。
用户在使用SQLServer数据库时,存在创建数据库、创建登录账号、修改DBCC跟踪标记、修改实例参数等需求,由于SQLServer双机高可用版系列产品的形态是一主一备两台主机,因此,SQL Server实例级别的特性不会自动同步到备用的主机。
本申请实施例提供一种自动化的操作对象数据同步方法,无需经过数据库控制台,即可直接实现同步用户在主节点上的增、删、改等操作对象数据至备节点,实现了降低同步过程的学习成本并提高操作效率的技术效果。
在上述运行环境下,本申请提供了如图2所示的一种操作对象数据同步方法,图2是根据本申请实施例的一种操作对象数据同步方法的流程图,如图2所示,上述方法包括如下方法步骤:
步骤S202,检测第一主机上是否发生用户实例修改操作;
步骤S204,当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
需要说明的是,上述步骤S202至步骤S204的执行主体可以为第一主机,还可以为数据库管理系统。
在一种可选的实施例中,SQLServer双机高可用版系列产品中的每个实例(instance)对应两台主机,其中,两台主机的角色分别为:主节点(master)和备节点(slave),具体的,上述第一主机可以为主节点,上述第二主机可以为备节点,其中,第一主机和第二主机可以构成用户实例。
在本申请实施例中,用户实例为用户提供第一主机的链接地址,允许用户通过任意客户端与SQLServer中的第一主机建立连接,并通过SQL进行创建数据库、用户实例修改操作等。
在本申请实施例中,可以但不限于在生成用户实例的过程中,通过管控服务器在数据库上预先创建一系列触发器,其中,上述一系列触发器用于捕获用户实例修改操作,并且,在检测到用户实例修改操作的情况下,上述触发器对操作对象数据进行结构化处理,并按照预设数据结构将上述操作对象数据记录在第一主机上。
其中,上述用户实例修改操作包括:创建数据库、创建登录账号、修改DBCC跟踪标记、修改实例参数等操作;上述操作对象数据包括:操作对象名称、操作对象参数等内容。
以本申请实施例中的执行主体为第一主机为例,当检测到第一主机上发生用户实例修改操作,并检测是否已经将上述操作对象数据同步到第二主机上,第一主机可以实时获取用户实例修改操作对应的操作对象数据,并记录上述操作对象数据。
并且,本申请实施例中的第一主机中还可以设置有代理模块Agent,用于实现用户实例修改操作的检测,以及发送通知消息至服务端的功能,以使得在检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,通过上述代理模块向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
此外,本申请实施例中的第二主机上也设置有代理模块Agent,上述第二主机上的代理模块可以但不限于与第一主机上的代理模块类型相同,但是,上述第二主机上的代理模块可以通过数据库的状态判断出自身处于备节点,由于用户无法直接登录备节点进行操作,所以第二主机上的代理模块并不会向服务端发送任何消息。
在上述可选的实施例中,第一主机可以通过触发器记录上述用户实例修改操作和对应的操作对象数据,上述代理模块可以采用定时轮询的方式获取上述触发器所记录的用户实例修改操作,当代理模块检测到新的用户实例修改操作时,且操作对象数据未被同步到第二主机时,上述代理模块可以推送一条通知消息至服务端。
需要说明的是,上述通知消息中可以但不限于包含用户实例的标识ID和第一主机的标识ID、第二主机的标识ID,并不包含具体的操作对象数据。
在本申请实施例中,通过检测第一主机上是否发生用户实例修改操作;当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
容易注意到的是,本申请实施例通过第一主机检测该第一主机上是否发生用户实例修改操作,并在检测到发生用户实例修改操作,且并未将上述用户实例修改操作的操作对象数据同步至第二主机时,通过向服务端发送通知消息的方式,通知服务端将上述操作对象数据同步至第二主机。
由此,本申请实施例达到了无需经过数据库控制台,即可直接实现同步第一主机的操作对象数据至第二主机的目的,从而实现了降低同步过程的学习成本并提高操作效率的技术效果,进而解决了现有技术中,需要通过控制台完成操作对象数据的同步,导致同步过程的学习成本高且操作效率低的技术问题。
在本申请实施例中,可以按照预设数据结构记录上述操作对象名称和上述操作对象参数。
可选的,上述预设数据结构的表结构设计如下:
其中,在本申请实施例中,不同操作类型对应不同的记录表,以xxx指代具体的操作类型。
此外,在一种可选的实施例中,可以分别使用一张数据表记录每种操作类型的操作对象数据中已经同步到第二主机的第二操作标识batch_id。
CREATE TABLE xxx_batch_id_on_slave(
batch_id int
)
在一种可选的实施例中,如图3所示,检测到发生用户实例修改操作且操作对象数据尚未同步至第二主机包括:
步骤S302,在检测到发生用户实例修改操作的情况下,获取第一操作标识和第二操作标识。
在上述步骤S302中,第一操作标识用于表示与用户实例修改操作的操作对象类型对应的存储记录中的最新记录标识,例如,可以为每种操作类型xxx_records里最大的batch_id;第二操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识,例如,可以为xxx_batch_id_on_slave表里的batch_id。
步骤S304,通过比较第一操作标识和第二操作标识确定操作对象数据尚未同步至第二主机。
可选的,在上述步骤S304中,在上述第一操作标识大于上述第二操作标识的情况下,表明上述操作对象数据尚未同步至第二主机,进而可以在确定操作对象数据尚未同步至第二主机的情况下,向服务端发送通知消息,以达到通知服务端将上述操作对象数据同步至第二主机的目的。
在一种可选的实施例中,上述服务端包括:日志服务器和管控服务器,向服务端发送通知消息可以通过如下方法步骤实现:
持续向日志服务器发送通知消息,以便管控服务器从日志服务器批量获取通知消息,并根据通知消息中携带的用户实例标识查看用户实例的状态,以产生对应的同步任务,其中,用户实例由第一主机和第二主机构成。
在上述可选的实施例中,上述日志服务器为一种消息中间件,可以但不限于通过如下任意之一消息中间件实现:LogHub、Kafka、RabbitMQ、RocketMQ等。
在本申请实施例中,由于一台管控服务器需要负责管理成百上千的用户实例,因此在消息处理效率上需要优化处理,通过设置日志服务器作为接收通知消息的消息中间件,进而管控服务器可以批量获取从日志服务器中获取通知消息,可以有效提高管控服务器的消息处理效率,并且,上述通知消息中可以仅包含用户实例的标识ID和第一主机的标识ID、第二主机的标识ID,并不包含具体的操作对象数据,这种推送消息协议设计减轻了消息中间件的负担。
需要说明的是,在本申请实施例中,在代理模块已推送上述通知消息至服务端,但上述通知消息未被管控服务器消费之前,用户可能还会持续地在第一主机上进行用户实例修改操作,在此种情况下,代理模块只要探测到检测到发生用户实例修改操作则可以继续推送新的通知消息,若在管控服务器中同一个用户实例存在多条未消费的通知消息,则通过管控服务器对上述多条未消费的通知消息进行去重处理。
在一种可选的实施例中,上述管控服务器可以使用set数据接口保存通知消息中的用户实例标识ID,并且,上述set数据接口可以根据用户实例标识ID,自动对多条未消费的通知消息进行去重处理,管控服务器可以查看set数据接口中的所有用户实例标识ID对应的实例状态,并根据上述实例状态产生对应的同步任务。
其中,如果上述用户实例标识ID对应的实例状态为删除状态,则丢弃上述用户实例标识ID,如果上述用户实例标识ID对应的实例状态为同步中状态,已有同步任务正在处理则丢弃上述用户实例标识ID,仅对剩余的用户实例标识ID对应的用户实例批量产生对应的同步任务,并根据待执行的同步任务将操作对象数据同步至第二主机。
管控服务器是提供数据库运维、资源调度、双机集群等一系列服务的综合服务器,在本申请方案中,可以但不限于主要涉及两个服务:消息消费服务(consumer)和任务管理器(task manager),其中,上述消息消费服务主要负责消费第一主机中的代理模块推送的消息;任务管理器作为一套运维系统,可将用户、运维人员对用户实例的日常操作都转化成任务的形式进行管理和跟踪。
需要说明的是,本申请实施例中,还可以将上述服务端中实现的同步逻辑下沉到第一主机的代理模块和第二主机的代理模块上,形成一个架构更加简单的操作对象数据同步方案。
在一种可选的实施例中,如图4所示,在向服务端发送通知消息之后,还包括:
步骤S402,接收管控服务器返回的确认消息;
步骤S404,响应于确认消息,更新第二操作标识,其中,第二操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识。
在本申请实施例中,上述确认消息为管控服务器确认已收到上述通知消息,并将第一主机上的操作对象数据同步至上述第二主机,具体的,上述管控服务器可以直接通过任务管理器将上述确认消息发送至第一主机,无需经过消息中间件。并且,上述第一主机在接收到上述确认消息之后,响应上述确认消息并对第二操作标识进行更新处理。
其中,响应上述确认消息并对第二操作标识进行更新处理,即为更新第一主机的状态,例如,更新第一主机上的xxx_batch_id_on_slave表,表示对应batch_id的修改已经同步到第二主机上,下次检测可以跳过已经同步的内容。
在一种可选的实施例中,根据第一主机按照预设数据结构记录的操作对象数据,可以很方便地将第一主机中未同步到第二主机中的操作对象数据批量读取出来,并在第二主机上进行相应的同步处理,进而实现上述第一主机和第二主机对同步的过程无感知,用户体验和单机版产品无差别。
需要说明的是,根据用户实例修改操作类型的不同,同步处理方法可以略有不同,其中:数据库的新建、复制操作:需要在第一主机上备份数据库,并将上述备份数据库拷贝至第二主机进行还原,然后搭建镜像复制关系;数据库的删除操作:根据记录表中的database字段获取待删除的数据库,在第二主机上的对应的数据表执行drop database操作,由于数据库的删除操作相对危险,删除前需要二次确认数据库处于非在线状态;登录账号的增删改、修改DBCC跟踪标记、修改实例参数等操作:由于触发器已经将相关数据库语句存入记录表的sql_cmd字段,直接在第二主机上执行即可。
为便于理解本申请实施例所提供的操作对象数据同步方法,以下通过如图5所示的一种可选的操作对象数据同步的场景示意图,对本申请实施例进行解释说明:
如图5所示,上述可选的场景可以通过本申请实施例提供的可选的操作对象数据同步系统实现,其中,上述操作对象数据同步系统包括:用户实例502、第一主机504、第二主机506、代理模块508、日志服务器512、管控服务器514、消息消费服务516和任务管理器518。
其中,上述用户实例502可以由第一主机504、第二主机506构成,第一主机504为主节点,第二主机506为备节点,用户可以在第一主机504上进行用户实例修改操作,上述代理模块508设置在上述第一主机504上,用于实现用户实例修改操作的检测,以及发送通知消息至服务端的功能,以使得在检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机506时,通过上述代理模块508向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机506。
具体的,服务端包括:日志服务器512、管控服务器514;上述代理模块508可以持续向日志服务器512发送通知消息,以便管控服务器514从日志服务器512批量获取通知消息,并根据通知消息中携带的用户实例标识查看用户实例500的状态,以产生对应的同步任务,以使得将操作对象数据同步至第二主机506。
在一种可选的实施例中,上述管控服务器514涉及如下两个服务:消息消费服务516和任务管理器518,其中,上述消息消费服务516主要负责消费第一主机504中的代理模块508推送的消息;任务管理器518作为一套运维系统,可将用户、运维人员对用户实例502的日常操作都转化成任务的形式进行管理和跟踪,上述任务管理器518可以发送确认消息至第一主机504,并获取第一主机504中记录的操作对象数据,根据待执行的同步任务将操作对象数据同步至第二主机506。
与基于控制台实现的现有方案相比,本申请实施例中用户直接在用户实例上进行操作,易用性、扩展性更好,通过SQLServer提供的规范化SQL语句实现,可使用脚本批量操作,突破了控制台交互的限制,且操作不需要经过API接口、管控服务器,操作后可以马上看到操作结果。
实施例2
根据本申请实施例,还提供了另一种操作对象数据同步方法的实施例,图6是根据本申请实施例的另一种操作对象数据同步方法的流程图,如图6所示,上述方法包括如下方法步骤:
步骤S602,获取通知消息,其中,上述通知消息是第一主机在检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,向服务端发送的消息,通知消息携带的用户实例标识,用户实例由第一主机和第二主机构成。
步骤S604,根据用户实例标识确定待执行的同步任务;
步骤S606,根据待执行的同步任务将操作对象数据同步至第二主机。
需要说明的是,上述步骤S602至步骤S604的执行主体可以为服务端,具体的,为服务端中的管控服务器。
在一种可选的实施例中,SQLServer双机高可用版系列产品中的每个实例(instance)对应两台主机,其中,两台主机的角色分别为:主节点(master)和备节点(slave),具体的,上述第一主机可以为主节点,上述第二主机可以为备节点,其中,第一主机和第二主机可以构成用户实例。
在本申请实施例中,用户实例为用户提供第一主机的链接地址,允许用户通过任意客户端与SQLServer中的第一主机建立连接,并通过SQL进行创建数据库、用户实例修改操作等。
在本申请实施例中,可以但不限于在生成用户实例的过程中,通过管控服务器在数据库上预先创建一系列触发器,其中,上述一系列触发器用于捕获用户实例修改操作,并且,在检测到用户实例修改操作的情况下,上述触发器对操作对象数据进行结构化处理,并按照预设数据结构将上述操作对象数据记录在第一主机上。上述用户实例修改操作包括:创建数据库、创建登录账号、修改DBCC跟踪标记、修改实例参数等操作;上述操作对象数据包括:操作对象名称、操作对象参数等内容。
并且,本申请实施例中的第一主机中还可以设置有代理模块Agent,用于实现用户实例修改操作的检测,以及发送通知消息至服务端的功能,以使得在检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,通过上述代理模块向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
在上述可选的实施例中,第一主机可以通过触发器记录上述用户实例修改操作和对应的操作对象数据,上述代理模块可以采用定时轮询的方式获取上述触发器所记录的用户实例修改操作,当代理模块检测到新的用户实例修改操作时,且操作对象数据未被同步到第二主机时,上述代理模块可以推送一条通知消息至服务端。
需要说明的是,上述通知消息中可以但不限于包含用户实例的标识ID和第一主机的标识ID、第二主机的标识ID,并不包含具体的操作对象数据。
在本申请实施例中,管控服务器根据通知消息中的用户实例标识确定待执行的同步任务查询每个用户实例对应的实例状态,并根据上述实例状态产生对应的同步任务。
其中,如果上述用户实例标识ID对应的实例状态为删除状态,则丢弃上述用户实例标识ID,如果上述用户实例标识ID对应的实例状态为同步中状态,即已有同步任务正在处理,则丢弃上述用户实例标识ID,仅对剩余的用户实例标识ID对应的用户实例批量产生对应的同步任务。
步骤S606,根据待执行的同步任务将操作对象数据同步至第二主机。
在一种可选的实施例中,根据第一主机按照预设数据结构记录的操作对象数据,管控服务器可以很方便地将第一主机中未同步到第二主机中的操作对象数据批量读取出来,并在第二主机上进行相应的同步处理,进而实现上述第一主机和第二主机对同步的过程无感知,用户体验和单机版产品无差别。
需要说明的是,根据用户实例修改操作类型的不同,同步处理方法可以略有不同,其中:数据库的新建、复制操作:需要在第一主机上备份数据库,并将上述备份数据库拷贝至第二主机进行还原,然后搭建镜像复制关系;数据库的删除操作:根据记录表中的database字段获取待删除的数据库,在第二主机上的对应的数据表执行drop database操作,由于数据库的删除操作相对危险,删除前需要二次确认数据库处于非在线状态;登录账号的增删改、修改DBCC跟踪标记、修改实例参数等操作:由于触发器已经将相关数据库语句存入记录表的sql_cmd字段,直接在第二主机上执行即可。
在本申请实施例中,通过获取通知消息,其中,通知消息是第一主机在检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,向服务端发送的消息,通知消息携带的用户实例标识,用户实例由第一主机和第二主机构成;根据用户实例标识确定待执行的同步任务;根据待执行的同步任务将操作对象数据同步至第二主机。
容易注意到的是,本申请实施例中,当第一主机检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,向服务端发送通知消息,管控服务器通过获取第一主机发送的通知消息,根据通知消息中携带的用户实例标识确定待执行的同步任务,并根据待执行的同步任务将操作对象数据同步至第二主机。
由此,本申请实施例达到了无需经过数据库控制台,即可直接实现同步第一主机的操作对象数据至第二主机的目的,从而实现了降低同步过程的学习成本并提高操作效率的技术效果,进而解决了现有技术中,需要通过控制台完成操作对象数据的同步,导致同步过程的学习成本高且操作效率低的技术问题。
在一种可选的实施例中,上述步骤S602,获取通知消息可以通过如下方法步骤实现:从日志服务器批量获取通知消息,其中,日志服务器用于从第一主机实时采集通知消息。
可选的,本申请实施例中的服务端包括:日志服务器和管控服务器,其中,上述日志服务器为一种消息中间件,可以但不限于通过如下任意之一消息中间件实现:LogHub、Kafka、RabbitMQ、RocketMQ等。
在本申请实施例中,由于一台管控服务器需要负责管理成百上千的用户实例,因此在消息处理效率上需要优化处理,通过设置日志服务器作为接收通知消息的消息中间件,进而管控服务器可以批量获取从日志服务器中获取通知消息,可以有效提高管控服务器的消息处理效率,并且,上述通知消息中可以仅包含用户实例的标识ID和第一主机的标识ID、第二主机的标识ID,并不包含具体的操作对象数据,这种推送消息协议设计减轻了消息中间件的负担。
需要说明的是,在本申请实施例中,在代理模块已推送上述通知消息至服务端,但上述通知消息未被管控服务器消费之前,用户可能还会持续地在第一主机上进行用户实例修改操作,在此种情况下,代理模块只要探测到检测到发生用户实例修改操作则可以继续推送新的通知消息,若在管控服务器中同一个用户实例存在多条未消费的通知消息,则通过管控服务器对上述多条未消费的通知消息进行去重处理。
在一种可选的实施例中,图7是根据本申请实施例的另一种可选的操作对象数据同步方法的流程图,如图7所示,上述根据用户实例标识确定待执行的同步任务,可以通过如下步骤实现:
步骤S6040,根据批量获取到的通知消息中携带的用户实例标识查询每个用户实例对应的实例状态;
步骤S6042,在根据查询到的实例状态丢弃实例状态处于删除状态的第一部分用户实例以及丢弃已有同步任务正在处理的第二部分用户实例的情况下,为剩余的用户实例批量产生待执行的同步任务。
在本申请实施例中,管控服务器根据通知消息中的用户实例标识确定待执行的同步任务查询每个用户实例对应的实例状态,并根据上述实例状态产生对应的同步任务。
其中,如果上述用户实例标识ID对应的实例状态为删除状态,则丢弃上述用户实例标识ID,如果上述用户实例标识ID对应的实例状态为同步中状态,即已有同步任务正在处理,则丢弃上述用户实例标识ID,仅对剩余的用户实例标识ID对应的用户实例批量产生对应的同步任务。
在一种可选的实施例中,上述步骤S606,根据待执行的同步任务将操作对象数据同步至第二主机,可以通过如下步骤实现:
步骤S6060,根据待执行的同步任务从第一主机批量读取操作对象数据。
其中,操作对象数据包括:数据库操作数据和非数据库操作数据,非数据库操作数据至少包括:登录账号操作数据、修改数据库控制台命令跟踪标记、修改实例参数操作数据。
在一种可选的实施例中,根据第一主机按照预设数据结构记录的操作对象数据,管控服务器可以很方便地将第一主机中未同步到第二主机中的操作对象数据批量读取出来,并在第二主机上进行相应的同步处理,进而实现上述第一主机和第二主机对同步的过程无感知,用户体验和单机版产品无差别。
步骤S6062,当操作对象数据为数据库新建或复制操作数据时,将数据库新建或复制操作数据拷贝至第二主机,并在第一主机与第二主机之间建立镜像复制关系;当操作对象数据为数据库删除操作数据时,从第一主机获取待删除的数据库,并在第二主机上删除对应的数据库;当操作对象数据为非数据库操作数据时,在第二主机上执行非数据库操作数据对应的操作。
在一种可选的实施例中,根据用户实例修改操作类型的不同,同步处理方法可以略有不同,其中:数据库的新建、复制操作:需要在第一主机上备份数据库,并将上述备份数据库拷贝至第二主机进行还原,然后搭建镜像复制关系;数据库的删除操作:根据记录表中的database字段获取待删除的数据库,在第二主机上的对应的数据表执行drop database操作,由于数据库的删除操作相对危险,删除前需要二次确认数据库处于非在线状态;登录账号的增删改、修改DBCC跟踪标记、修改实例参数等操作:由于触发器已经将相关数据库语句存入记录表的sql_cmd字段,直接在第二主机上执行即可。
在一种可选的实施例中,在根据待执行的同步任务将操作对象数据同步至第二主机之后,还包括:
步骤S608,向第一主机发送确认消息,以更新第一主机上记录的预设操作标识,其中,预设操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识。
在本申请实施例中,上述确认消息为管控服务器确认已收到上述通知消息,并将第一主机上的操作对象数据同步至上述第二主机,具体的,上述管控服务器可以直接通过任务管理器将上述确认消息发送至第一主机,无需经过消息中间件。并且,上述第一主机在接收到上述确认消息之后,响应上述确认消息并对预设操作标识进行更新处理。
其中,响应上述确认消息并对预设操作标识进行更新处理,即为更新第一主机的状态,例如,更新第一主机上的xxx_batch_id_on_slave表,表示对应batch_id的修改已经同步到第二主机上,下次检测可以跳过已经同步的内容。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例上述的方法。
实施例3
根据本申请实施例,还提供了一种操作对象数据同步系统的实施例,包括:第一主机,用于检测第一主机上是否发生用户实例修改操作,当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据;管控服务器,用于获取第一主机发送的通知消息,通知消息携带的用户实例标识,用户实例由第一主机和第二主机构成;并根据用户实例标识确定待执行的同步任务;根据待执行的同步任务将操作对象数据同步至第二主机。
在本申请实施例中,通过检测第一主机上是否发生用户实例修改操作;当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
容易注意到的是,本申请实施例通过第一主机检测该第一主机上是否发生用户实例修改操作,并在检测到发生用户实例修改操作,且并未将上述用户实例修改操作的操作对象数据同步至第二主机时,通过向服务端发送通知消息的方式,通知服务端将上述操作对象数据同步至第二主机。
由此,本申请实施例达到了无需经过数据库控制台,即可直接实现同步第一主机的操作对象数据至第二主机的目的,从而实现了降低同步过程的学习成本并提高操作效率的技术效果,进而解决了现有技术中,需要通过控制台完成操作对象数据的同步,导致同步过程的学习成本高且操作效率低的技术问题。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
实施例4
根据本申请实施例,还提供了一种计算机系统的实施例,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:检测第一主机上是否发生用户实例修改操作;当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
在本申请实施例中,通过检测第一主机上是否发生用户实例修改操作;当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
容易注意到的是,本申请实施例通过第一主机检测该第一主机上是否发生用户实例修改操作,并在检测到发生用户实例修改操作,且并未将上述用户实例修改操作的操作对象数据同步至第二主机时,通过向服务端发送通知消息的方式,通知服务端将上述操作对象数据同步至第二主机。
由此,本申请实施例达到了无需经过数据库控制台,即可直接实现同步第一主机的操作对象数据至第二主机的目的,从而实现了降低同步过程的学习成本并提高操作效率的技术效果,进而解决了现有技术中,需要通过控制台完成操作对象数据的同步,导致同步过程的学习成本高且操作效率低的技术问题。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
实施例5
根据本申请实施例,还提供了一种用于实施上述操作对象数据同步方法的装置实施例,图8是根据本申请实施例的一种操作对象数据同步装置的示意图,如图8所示,该装置800包括:检测模块802和处理模块804,其中:
检测模块802,用于检测第一主机上是否发生用户实例修改操作;处理模块804,用于当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
此处需要说明的是,上述检测模块802和处理模块804对应于实施例1中的步骤S202至步骤S204,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
实施例6
根据本申请实施例,还提供了另一种用于实施上述操作对象数据同步方法的装置实施例,图9是根据本申请实施例的另一种操作对象数据同步装置的示意图,如图9所示,该装置900包括:获取模块902、确定模块904和同步模块906,其中:
获取模块902,用于获取通知消息,其中,上述通知消息是第一主机在检测到发生用户实例修改操作且上述用户实例修改操作的操作对象数据尚未同步至第二主机时,向服务端发送的消息,上述通知消息携带的用户实例标识,用户实例由上述第一主机和上述第二主机构成;确定模块904,用于根据上述用户实例标识确定待执行的同步任务;同步模块906,用于根据上述待执行的同步任务将上述操作对象数据同步至上述第二主机。
在本申请实施例中,通过获取通知消息,其中,通知消息是第一主机在检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,向服务端发送的消息,通知消息携带的用户实例标识,用户实例由第一主机和第二主机构成;根据用户实例标识确定待执行的同步任务;根据待执行的同步任务将操作对象数据同步至第二主机。
容易注意到的是,本申请实施例中,当第一主机检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,向服务端发送通知消息,管控服务器通过获取第一主机发送的通知消息,根据通知消息中携带的用户实例标识确定待执行的同步任务,并根据待执行的同步任务将操作对象数据同步至第二主机。
由此,本申请实施例达到了无需经过数据库控制台,即可直接实现同步第一主机的操作对象数据至第二主机的目的,从而实现了降低同步过程的学习成本并提高操作效率的技术效果,进而解决了现有技术中,需要通过控制台完成操作对象数据的同步,导致同步过程的学习成本高且操作效率低的技术问题。
此处需要说明的是,上述获取模块902、确定模块904和同步模块906对应于实施例2中的步骤S602至步骤S606,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例1和2中的相关描述,此处不再赘述。
实施例7
根据本申请的实施例,还提供一种计算机终端的实施例,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行应用程序的漏洞检测方法中以下步骤的程序代码:检测第一主机上是否发生用户实例修改操作;当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
可选地,图10是根据本申请实施例的一种计算机终端的结构框图,如图10所示,该计算机终端1000可以包括:一个或多个(图中仅示出一个)处理器1002、存储器1004、以及外设接口1006。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的安全漏洞检测方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的系统漏洞攻击的检测方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端1000。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:检测第一主机上是否发生用户实例修改操作;当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
可选的,上述处理器还可以执行如下步骤的程序代码:在检测到发生用户实例修改操作的情况下,获取第一操作标识和第二操作标识,其中,第一操作标识用于表示与用户实例修改操作的操作对象类型对应的存储记录中的最新记录标识,第二操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识;通过比较第一操作标识和第二操作标识确定操作对象数据尚未同步至第二主机。
可选的,上述处理器还可以执行如下步骤的程序代码:按照预设数据结构记录操作对象名称和操作对象参数。
可选的,上述处理器还可以执行如下步骤的程序代码:持续向日志服务器发送通知消息,以便管控服务器从日志服务器批量获取通知消息,并根据通知消息中携带的用户实例标识查看用户实例的状态,以产生对应的同步任务,其中,用户实例由第一主机和第二主机构成。
可选的,上述处理器还可以执行如下步骤的程序代码:接收管控服务器返回的确认消息;响应于确认消息,更新第二操作标识,其中,第二操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识。
可选的,上述处理器还可以执行如下步骤的程序代码:获取通知消息,其中,通知消息是第一主机在检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,向服务端发送的消息,通知消息携带的用户实例标识,用户实例由第一主机和第二主机构成;根据用户实例标识确定待执行的同步任务;根据待执行的同步任务将操作对象数据同步至第二主机。
可选的,上述处理器还可以执行如下步骤的程序代码:从日志服务器批量获取通知消息,其中,日志服务器用于从第一主机实时采集通知消息。
可选的,上述处理器还可以执行如下步骤的程序代码:根据批量获取到的通知消息中携带的用户实例标识查询每个用户实例对应的实例状态;在根据查询到的实例状态丢弃实例状态处于删除状态的第一部分用户实例以及丢弃已有同步任务正在处理的第二部分用户实例的情况下,为剩余的用户实例批量产生待执行的同步任务。
可选的,上述处理器还可以执行如下步骤的程序代码:根据待执行的同步任务从第一主机批量读取操作对象数据,其中,操作对象数据包括:数据库操作数据和非数据库操作数据,非数据库操作数据至少包括:登录账号操作数据、修改数据库控制台命令跟踪标记、修改实例参数操作数据;当操作对象数据为数据库新建或复制操作数据时,将数据库新建或复制操作数据拷贝至第二主机,并在第一主机与第二主机之间建立镜像复制关系;当操作对象数据为数据库删除操作数据时,从第一主机获取待删除的数据库,并在第二主机上删除对应的数据库;当操作对象数据为非数据库操作数据时,在第二主机上执行非数据库操作数据对应的操作。
可选的,上述处理器还可以执行如下步骤的程序代码:向第一主机发送确认消息,以更新第一主机上记录的预设操作标识,其中,预设操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识。
采用本申请实施例,提供了一种操作对象数据同步的方案,通过检测第一主机上是否发生用户实例修改操作;当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
由此,本申请实施例达到了无需经过数据库控制台,即可直接实现同步第一主机的操作对象数据至第二主机的目的,从而实现了降低同步过程的学习成本并提高操作效率的技术效果,进而解决了现有技术中,需要通过控制台完成操作对象数据的同步,导致同步过程的学习成本高且操作效率低的技术问题。
本领域普通技术人员可以理解,图10所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,计算机终端1000还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例8
根据本申请的实施例,还提供了一种存储介质的实施例。可选地,在本实施例中,上述存储介质可以用于保存上述实施例1所提供的操作对象数据同步方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:检测第一主机上是否发生用户实例修改操作;当检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,记录操作对象数据,并向服务端发送通知消息,以使服务端将操作对象数据同步至第二主机。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在检测到发生用户实例修改操作的情况下,获取第一操作标识和第二操作标识,其中,第一操作标识用于表示与用户实例修改操作的操作对象类型对应的存储记录中的最新记录标识,第二操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识;通过比较第一操作标识和第二操作标识确定操作对象数据尚未同步至第二主机。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:按照预设数据结构记录操作对象名称和操作对象参数。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:持续向日志服务器发送通知消息,以便管控服务器从日志服务器批量获取通知消息,并根据通知消息中携带的用户实例标识查看用户实例的状态,以产生对应的同步任务,其中,用户实例由第一主机和第二主机构成。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:接收管控服务器返回的确认消息;响应于确认消息,更新第二操作标识,其中,第二操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取通知消息,其中,通知消息是第一主机在检测到发生用户实例修改操作且用户实例修改操作的操作对象数据尚未同步至第二主机时,向服务端发送的消息,通知消息携带的用户实例标识,用户实例由第一主机和第二主机构成;根据用户实例标识确定待执行的同步任务;根据待执行的同步任务将操作对象数据同步至第二主机。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:从日志服务器批量获取通知消息,其中,日志服务器用于从第一主机实时采集通知消息。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据批量获取到的通知消息中携带的用户实例标识查询每个用户实例对应的实例状态;在根据查询到的实例状态丢弃实例状态处于删除状态的第一部分用户实例以及丢弃已有同步任务正在处理的第二部分用户实例的情况下,为剩余的用户实例批量产生待执行的同步任务。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据待执行的同步任务从第一主机批量读取操作对象数据,其中,操作对象数据包括:数据库操作数据和非数据库操作数据,非数据库操作数据至少包括:登录账号操作数据、修改数据库控制台命令跟踪标记、修改实例参数操作数据;当操作对象数据为数据库新建或复制操作数据时,将数据库新建或复制操作数据拷贝至第二主机,并在第一主机与第二主机之间建立镜像复制关系;当操作对象数据为数据库删除操作数据时,从第一主机获取待删除的数据库,并在第二主机上删除对应的数据库;当操作对象数据为非数据库操作数据时,在第二主机上执行非数据库操作数据对应的操作。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:向第一主机发送确认消息,以更新第一主机上记录的预设操作标识,其中,预设操作标识用于表示在第二主机上已同步执行的与操作对象类型对应的操作记录中的最新记录标识。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。