CN112463132B - 一种数据库切换工具及切换方法 - Google Patents
一种数据库切换工具及切换方法 Download PDFInfo
- Publication number
- CN112463132B CN112463132B CN202011268464.2A CN202011268464A CN112463132B CN 112463132 B CN112463132 B CN 112463132B CN 202011268464 A CN202011268464 A CN 202011268464A CN 112463132 B CN112463132 B CN 112463132B
- Authority
- CN
- China
- Prior art keywords
- switching
- database
- execution
- state
- plan
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库切换工具及切换方法,属于数据处理技术领域。解决了现有技术中切换过程中没有进行流程控制和前端可视化展示,并且不能实现DNS同步切换的问题。本发明设计了一种数据库切换工具,并通过数据切换工具页面创建预案A;然后分发任务并进行可视化展示;在切换进行中时,前端定时刷新任务状态进行展示,并将切换步骤log日志打印出来;当切换完成时,确认任务完成,预案A关闭,不再提供执行功能,当中间步骤有错误时,任务暂停等待用户操作指令。本发明通过控制端完成前端切换状态和详情可视化、分步骤流程控制,及时定位切换过程中的问题和切换步骤,更好的把控切换过程,通过自动切换DNS和更新CMDB,实现一键切换、大大提高了效率。
Description
技术领域
本发明属于数据处理领域,具体涉及一种数据库切换工具及切换方法。
背景技术
数据库是金融、商业、交通等领域乃至整个社会的关键基础设施,数据库的持续可用是金融、商业、交通等领域可持续向用户正常进行服务的保障。伴随着互联网相关业务不断涌现,有的业务得到了快速迅猛的发展,为了满足业务的正常发展以及数据存储需要建立一套全新数据库,在数据库的实际应用中,出于数据安全、数据处理效率、数据库运维成本、业务发展需求等方面的考虑,可能存在切换数据库的需求。
目前的数据库切换方法,可以包括数据库拆分、失效切换(failover)等的方式。例如,专利号CN107391758B的发明专利公开了一种数据库切换方法、装置及设备。该发明可以减少数据在不同数据库之间的迁移过程,对业务处理过程的影响,进而提高业务处理效率。
但是现有技术中也存在一些缺点,例如切换过程中没有进行流程控制和前端可视化展示,并且不能实现DNS同步切换,在切换中如果有问题,无法知晓该切换任务更改了数据库中的哪些状态,执行只能从头开始。
发明内容
针对现有技术中切换过程中没有进行流程控制和前端可视化展示,并且不能实现DNS同步切换的问题,本发明提供一种数据库切换工具及切换方法,其目的在于:在数据库切换过程中进行前端可视化展示,使工作人员能够进行流程控制并实时了解切换的状态。
本发明采用的技术方案如下:
一种数据库切换工具,所述数据库切换工具为三层结构,底层为状态机,中间层为装饰器模块,上层为执行模块,所述执行模块用于将数据库切换动作分隔成多个执行步骤并生成执行代码,所述装饰器模块用于将执行模块的执行代码进行编排并加载进状态机,所述状态机用于控制执行代码的流转,状态机每执行一段执行代码,则检查是否有新指令,当有新指令并且为合法指令时,则流转到该指令对应的状态,当新指令为不合法指令时,丢弃指令,装饰器模块接收状态机更新后的状态信息。
一种数据库切换方法,采用所述数据库切换工具按以下步骤进行:
步骤1:通过数据库切换工具页面创建预案A;
步骤2:开始切换,分发任务并进行可视化展示;
步骤3:在切换进行中时,前端定时刷新任务状态进行展示,并将切换步骤log日志打印出来;
步骤4:当切换完成时,确认任务完成,预案A关闭,不再提供执行功能,当中间步骤有错误时,任务暂停等待用户操作指令。
进一步的,所述步骤1具体包括以下步骤:
步骤1.1:创建预案A,预案A包含多条切换信息{A1…An},每条切换信息中包含原有数据库信息和即将切换到的目标数据库的信息;
步骤1.2:更新预案A状态为准备执行状态。
进一步的,所述步骤2具体包括以下步骤:
步骤2.1:检查预案A是否为准备执行状态,如果不是准备执行状态则不执行预案A,如果是准备执行状态则开始执行预案A,根据切换信息{A1…An}生成详情任务[A1…An]并分发;
步骤2.2:初始化详情任务[A1…An]的装饰后的执行代码实体,增加一个任务观察者,启动旁路接收指令,将执行代码通过装饰器模块装饰并加载入状态机开始执行切换步骤;
步骤2.3:记录相关日志、更新任务状态,将信息通过前端web展示出来。
进一步的,所述步骤3具体包括以下步骤:
步骤3.1:预案A开始之后,前端页面跳转到切换控制端,观察切换任务执行的状态,并且展示日志;
步骤3.2:切换控制端进行流程控制;
步骤3.3:切换步骤日志通过前端抽屉页面进行分类展示。
进一步的,所述步骤4具体包括以下步骤:
步骤4.1:当切换报错或者检查不通过时,切换步骤暂停执行,控制端通过状态和详情了解问题所在,发送相应指令控制切换流程的流转;
步骤4.2:切换完成之后,观察者关闭切换实体,不再接收指令;
步骤4.3:控制端点击切换完成,预案A状态更新为完成,不再提供切换任务分发和开始功能。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1.通过状态机和装饰实际切换步骤的装饰器模块,完成数据库切换的流程控制,通过流程控制,在数据库切换过程中出问题时暂停在当前步骤等待修复之后继续执行,步骤因为检查不通过卡住时强制跳过。
2.通过控制端完成前端切换状态和详情可视化、分步骤流程控制,通过切换状态和切换日志的可视化,能够及时定位切换过程中的问题和切换步骤,更好的把控切换过程。
3.通过自动切换DNS和更新CMDB,实现一键切换、大大提高了效率。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是数据库切换流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面对本发明作详细说明。
一种数据库切换工具,所述数据库切换工具为三层结构,底层为状态机,中间层为装饰器模块,上层为执行模块,所述执行模块用于将数据库切换动作分隔成多个执行步骤并生成执行代码,所述装饰器模块用于将执行模块的执行代码进行编排并加载进状态机,所述状态机用于控制执行代码的流转,状态机每执行一段执行代码,则检查是否有新指令,当有新指令并且为合法指令时,则流转到该指令对应的状态,当新指令为不合法指令时,丢弃指令,装饰器模块接收状态机更新后的状态信息。
所述数据库切换工具的设计包括以下步骤:
步骤A:根据切换步骤,编写执行代码code{1…n};
步骤B:开发状态机,状态机每执行一段执行代码code{1…n},则检查是否有新指令,当有新指令并且为合法指令时,则流转到该指令对应的状态,否则丢弃指令,指令对应的状态包含“重试、暂停、终止、继续、跳过、重开、异常、成功”;
步骤C:开发包含执行代码的装饰器模块,装饰器模块用于承载执行代码code{1…n}在切换状态机上流转,包含记录日志、接收请求并存入队列、更新任务状态、添加观察者、选择合法指令功能;
所述步骤A具体包括以下步骤:
步骤A1:将切换动作进行分解,得到“检查slave状态、检查master事务、设置事务等待计数器、检查10次无事务、设置master只读、检查master状态、切换数据库、切换DNS、切换后检查、更新CMDB、完成切换”步骤;
步骤A2:编写执行代码code{1…n},每一个步骤包括run、rollback和getLoopCount,run为执行的代码,rollback为该步骤回滚的代码,getLoopCount为该执行代码的执行次数。
所述步骤B具体包括以下步骤:
步骤B1:定义状态机结构,状态机包括“可承载的程序实体、指令接收队列、观察者列表、执行完成状态”结构;
步骤B2:观察者由装饰器模块提供更新方法,在取消执行和执行完成之后调用观察者的Update方法;
步骤B3:启动切换动作,执行代码code{1…n}通过装饰器模块加载放入状态机中开始执行,并且初始化接收执行的队列;
步骤B4:执行代码code{1…n}的指令队列在code{1…n}执行期间接收到的所有指令(重试、暂停、终止、继续、跳过、重开、异常、成功),按照优先级排序、合法性检查进行保留,等到其中一个执行完成之后,再根据状态检查是否执行该动作,若队列中无执行动作,则进行下一个步骤的执行;
步骤B5:可承载的程序实体为装饰器模块实现的接口结构,需要实现初始化、执行、记录日志、更新状态、选择执行指令等方法;
所述步骤C具体包括以下步骤:
步骤C1:将code{1…n}进行任务编排,检查数据库状态并且初始化对应数据库的链接;
步骤C2:定义装饰器模块的结构,包含“切换任务状态、时间计数器、已初始化的数据库客户端、切换预案信息、编排的切换步骤code”结构;
步骤C3:将装饰器模块加载到状态机上面准备执行。
一种数据库切换方法,采用权利所述的数据库切换工具按以下步骤进行:
步骤1:通过数据库切换工具页面创建预案A;
步骤2:开始切换,分发任务并进行可视化展示;
步骤3:在切换进行中时,前端定时刷新任务状态进行展示,并将切换步骤log日志打印出来;
步骤4:当切换完成时,确认任务完成,预案A关闭,不再提供执行功能,当中间步骤有错误时,任务暂停等待用户操作指令。
所述步骤1具体包括以下步骤:
步骤1.1:创建预案A,预案A包含多条切换信息{A1…An},每条切换信息中包含原有数据库信息和即将切换到的目标数据库的信息;
步骤1.2:更新预案A状态为准备执行状态。
所述步骤2具体包括以下步骤:
步骤2.1:检查预案A是否为准备执行状态,如果不是准备执行状态则不执行预案A,如果是准备执行状态则开始执行预案A,根据切换信息{A1…An}生成详情任务[A1…An]并分发;
步骤2.2:初始化详情任务[A1…An]的装饰后的执行代码实体,增加一个任务观察者,启动旁路接收指令,将执行代码通过装饰器模块装饰并加载入状态机开始执行切换步骤;
步骤2.3:记录相关日志、更新任务状态,将信息通过前端web展示出来。
所述步骤3具体包括以下步骤:
步骤3.1:预案A开始之后,前端页面跳转到切换控制端,观察切换任务执行的状态,并且展示日志;
步骤3.2:切换控制端进行流程控制;
步骤3.3:切换步骤日志通过前端抽屉页面进行分类展示。
所述步骤4具体包括以下步骤:
步骤4.1:当切换报错或者检查不通过时,切换步骤暂停执行,控制端通过状态和详情了解问题所在,发送相应指令控制切换流程的流转;
步骤4.2:切换完成之后,观察者关闭切换实体,不再接收指令;
步骤4.3:控制端点击切换完成,预案A状态更新为完成,不再提供切换任务分发和开始功能。
本发明通过控制端完成前端切换状态和详情可视化、分步骤流程控制,通过切换状态和切换日志的可视化,能够及时定位切换过程中的问题和切换步骤,更好的把控切换过程,通过自动切换DNS和更新CMDB,实现一键切换、大大提高了效率。
以上所述实施例仅表达了本申请的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请技术方案构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。
Claims (6)
1.一种数据库切换工具,其特征在于:所述数据库切换工具为三层结构,底层为状态机,中间层为装饰器模块,上层为执行模块,所述执行模块用于将数据库切换动作分隔成多个执行步骤并生成执行代码,所述装饰器模块用于将执行模块的执行代码进行编排并加载进状态机,所述状态机用于控制执行代码的流转,状态机每执行一段执行代码,则检查是否有新指令,当有新指令并且为合法指令时,则流转到该指令对应的状态,当新指令为不合法指令时,丢弃指令,装饰器模块接收状态机更新后的状态信息。
2.一种数据库切换方法,其特征在于,采用权利要求1所述的数据库切换工具按以下步骤进行:
步骤1:通过数据库切换工具页面创建预案A;
步骤2:开始切换,分发任务并进行可视化展示;
步骤3:在切换进行中时,前端定时刷新任务状态进行展示,并将切换步骤log日志打印出来;
步骤4:当切换完成时,确认任务完成,预案A关闭,不再提供执行功能,当中间步骤有错误时,任务暂停等待用户操作指令。
3.根据权利要求2所述的一种数据库切换方法,其特征在于,所述步骤1具体包括以下步骤:
步骤1.1:创建预案A,预案A包含多条切换信息{A1…An},每条切换信息中包含原有数据库信息和即将切换到的目标数据库的信息;
步骤1.2:更新预案A状态为准备执行状态。
4.根据权利要求2所述的一种数据库切换方法,其特征在于,所述步骤2具体包括以下步骤:
步骤2.1:检查预案A是否为准备执行状态,如果不是准备执行状态则不执行预案A,如果是准备执行状态则开始执行预案A,根据切换信息{A1…An}生成详情任务[A1…An]并分发;
步骤2.2:初始化详情任务[A1…An]的装饰后的执行代码实体,增加一个任务观察者,启动旁路接收指令,将执行代码通过装饰器模块装饰并加载入状态机开始执行切换步骤;
步骤2.3:记录相关日志、更新任务状态,将信息通过前端web展示出来。
5.根据权利要求2所述的一种数据库切换方法,其特征在于,所述步骤3具体包括以下步骤:
步骤3.1:预案A开始之后,前端页面跳转到切换控制端,观察切换任务执行的状态,并且展示日志;
步骤3.2:切换控制端进行流程控制;
步骤3.3:切换步骤日志通过前端抽屉页面进行分类展示。
6.根据权利要求2所述的一种数据库切换方法,其特征在于,所述步骤4具体包括以下步骤:
步骤4.1:当切换报错或者检查不通过时,切换步骤暂停执行,控制端通过状态和详情了解问题所在,发送相应指令控制切换流程的流转;
步骤4.2:切换完成之后,观察者关闭切换实体,不再接收指令;
步骤4.3:控制端点击切换完成,预案A状态更新为完成,不再提供切换任务分发和开始功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011268464.2A CN112463132B (zh) | 2020-11-13 | 2020-11-13 | 一种数据库切换工具及切换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011268464.2A CN112463132B (zh) | 2020-11-13 | 2020-11-13 | 一种数据库切换工具及切换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463132A CN112463132A (zh) | 2021-03-09 |
CN112463132B true CN112463132B (zh) | 2023-06-06 |
Family
ID=74826262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011268464.2A Active CN112463132B (zh) | 2020-11-13 | 2020-11-13 | 一种数据库切换工具及切换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463132B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183852A (zh) * | 2015-09-08 | 2015-12-23 | 网易(杭州)网络有限公司 | 一种数据库迁移方法和装置 |
CN105550288A (zh) * | 2015-12-10 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 数据库系统的更新方法和管理系统 |
CN107247749A (zh) * | 2017-05-25 | 2017-10-13 | 阿里巴巴集团控股有限公司 | 一种数据库状态确定方法、一致性验证方法及装置 |
CN107357481A (zh) * | 2016-05-10 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 消息展示方法及消息展示装置 |
CN107391758A (zh) * | 2017-08-24 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 数据库切换方法、装置及设备 |
CN109871369A (zh) * | 2018-12-24 | 2019-06-11 | 天翼电子商务有限公司 | 数据库切换方法、系统、介质和装置 |
CN110532278A (zh) * | 2019-10-30 | 2019-12-03 | 上海爱可生信息技术股份有限公司 | 声明式的MySQL数据库系统高可用方法 |
CN111669452A (zh) * | 2020-05-13 | 2020-09-15 | 新浪网技术(中国)有限公司 | 一种基于多主dns架构的高可用方法及装置 |
CN111881110A (zh) * | 2020-06-18 | 2020-11-03 | 贝壳技术有限公司 | 数据迁移方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8893147B2 (en) * | 2012-01-13 | 2014-11-18 | Ca, Inc. | Providing a virtualized replication and high availability environment including a replication and high availability engine |
US9936019B2 (en) * | 2016-03-16 | 2018-04-03 | Google Llc | Efficient live-migration of remotely accessed data |
-
2020
- 2020-11-13 CN CN202011268464.2A patent/CN112463132B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183852A (zh) * | 2015-09-08 | 2015-12-23 | 网易(杭州)网络有限公司 | 一种数据库迁移方法和装置 |
CN105550288A (zh) * | 2015-12-10 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 数据库系统的更新方法和管理系统 |
CN107357481A (zh) * | 2016-05-10 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 消息展示方法及消息展示装置 |
CN107247749A (zh) * | 2017-05-25 | 2017-10-13 | 阿里巴巴集团控股有限公司 | 一种数据库状态确定方法、一致性验证方法及装置 |
CN107391758A (zh) * | 2017-08-24 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 数据库切换方法、装置及设备 |
CN109871369A (zh) * | 2018-12-24 | 2019-06-11 | 天翼电子商务有限公司 | 数据库切换方法、系统、介质和装置 |
CN110532278A (zh) * | 2019-10-30 | 2019-12-03 | 上海爱可生信息技术股份有限公司 | 声明式的MySQL数据库系统高可用方法 |
CN111669452A (zh) * | 2020-05-13 | 2020-09-15 | 新浪网技术(中国)有限公司 | 一种基于多主dns架构的高可用方法及装置 |
CN111881110A (zh) * | 2020-06-18 | 2020-11-03 | 贝壳技术有限公司 | 数据迁移方法及装置 |
Non-Patent Citations (1)
Title |
---|
"高可用性集群系统及其状态机研究";万静 等;《江苏通信技术》;第22卷(第5期);第28-30页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112463132A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3285166B1 (en) | Optimizing a distribution of applications executing in a multiple platform system | |
US9280554B2 (en) | Using confidence values for synchronizing file systems | |
CN100527085C (zh) | 用于初始化单个虚拟机内多个虚拟处理器的系统和方法 | |
CN106708740B (zh) | 脚本测试方法及装置 | |
US20070240118A1 (en) | System, method, and software for testing a software application | |
US20090183145A1 (en) | Techniques for reducing down time in updating applications with metadata | |
CN102147747B (zh) | 增强的升级路径的系统和方法 | |
CN108491254A (zh) | 一种数据仓库的调度方法及装置 | |
CN105487924A (zh) | 一种批处理控制方法及装置 | |
EP2630567A2 (en) | Coordinated upgrades in distributed systems | |
JP2001134454A (ja) | コンピューティング環境において構成要素を更新する方法、システムおよび製造品 | |
CN113656116B (zh) | 业务流程的处理方法和装置 | |
CN109740765A (zh) | 一种基于亚马逊网络服务器的机器学习系统搭建方法 | |
CN106445681A (zh) | 分布式任务调度系统及方法 | |
CN112199273A (zh) | 一种虚拟机压力/性能测试方法及系统 | |
CN110795118A (zh) | 一种云平台升级工具及升级方法 | |
CN111930398A (zh) | 应用程序更新方法、装置、系统、介质及设备 | |
CN112463132B (zh) | 一种数据库切换工具及切换方法 | |
US9471479B2 (en) | Method and system for simulating job entry subsystem (JES) operation | |
CN112860248B (zh) | 源代码生成方法及装置 | |
CN114217843A (zh) | 系统的运维方法、装置及服务器 | |
CN108733450A (zh) | 虚机规格调整方法及装置 | |
CN110262790B (zh) | 组件生成方法、装置、存储介质及终端设备 | |
CN114090172A (zh) | 跨系统的小部件复用方法及装置 | |
CN113821228A (zh) | 一种基于分层容器镜像构建ros或类ros项目的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |