本技术涉及数据处理,尤其涉及一种数据库系统及数据库系统的处理方法。
背景技术:
1、随着互联网的不断普及和信息化技术的发展,数据库中的数据信息也日益庞大和复杂,长此以往,这为数据库的稳定运行带来了潜在的风险和隐患。
2、现有技术中,通过容灾备份中心向数据库发送数据,来实现数据库中数据的恢复。
3、然而,现有技术中,容灾备份中心发生故障,将导致数据不可用,导致数据库瘫痪。
技术实现思路
1、本技术提供一种数据库系统及数据库系统的处理方法,以解决现有技术中灾备份中心发生故障,将导致数据不可用,数据库瘫痪的问题。
2、第一方面,本技术提供一种数据库系统,包括::至少两个异地部署的数据库,每个数据库对应已部署的一个canal服务端和一个canal客户端;
3、针对任一数据库,在所述任一数据库对应的canal服务端监测到所述任一数据库执行了查询语句时,拉取所述任一数据库执行所述查询语句产生的逻辑日志;
4、在所述任一数据库对应的canal客户端在监测到所述canal服务端中拉取了所述逻辑日志时,获取所述逻辑日志并将所述逻辑日志转化为查询语句实体;
5、所述canal客户端根据所述查询语句实体中对应的数据变更信息,生成对应的查询语句;
6、所述canal客户端判断所述对应的查询语句的类型是否为预设类型,若所述对应的查询语句的类型是预设类型,则判断所述对应的查询语句是否为其他数据库执行过的查询语句;若所述对应的查询语句不是其他数据库执行过的查询语句,则将所述对应的查询语句发送至各其他数据库;
7、若所述对应的查询语句的类型不是预设类型,则将所述对应的查询语句发送至各其他数据库;
8、所述其他数据库中每个数据库执行所述对应的查询语句,以完成所有数据库的数据同步。
9、在一种可能的设计中,所述canal客户端根据所述查询语句实体中对应的数据变更信息,生成对应的查询语句,包括:获取所述数据变更信息中的查询语句的类型、同步前的列数据值、同步后的列数据值和列的属性;根据所述查询语句的类型、同步前的列数据值、同步后的列数据值和列的属性,生成对应的查询语句。
10、在一种可能的设计中,其中所述查询语句的类型为插入类型;相应地,所述根据所述查询语句的类型、同步前的列数据值、同步后的列数据值和列的属性,生成对应的查询语句,包括:确定所述同步前的列数据值为零,所述同步后的列数据值为插入的值;确定所述插入的值所在的列的属性;根据所述插入的值和所述插入的值所在的列的属性,生成对应的查询语句。
11、在一种可能的设计中,其中所述查询语句的类型为更新类型;相应地,所述根据所述查询语句的类型、同步前的列数据值、同步后的列数据值和列的属性,生成对应的查询语句,包括:确定所述同步前的列数据值为更新前的值,所述同步后的列数据值为更新后的值;确定所述更新后的值所在的列的属性;根据所述更新前的值、所述更新后的值和所述更新后的值所在的列的属性,生成对应的查询语句。
12、在一种可能的设计中,其中所述查询语句的类型为删除类型;相应地,所述根据所述查询语句的类型、同步前的列数据值、同步后的列数据值和列的属性,生成对应的查询语句,包括:确定所述同步前的列数据值为删除前的值,所述同步后的列数据值为零;确定所述删除前的值所在的列的属性;根据所述删除前的值和所述删除前的值所在的列的属性,生成对应的查询语句。
13、在一种可能的设计中,其中所述预设类型为插入类型和/或更新类型,插入类型和更新类型的查询语句都配置有唯一的方向数据信息;所有数据库中都配置有一个状态表,用来存储所述方向数据信息;相应地,所述canal客户端判断所述对应的查询语句是否为其他数据库执行过的查询语句,包括:将所述对应的查询语句配置的方向数据信息和所述其他数据库的状态表中存储的方向数据信息进行对比;若所述其他数据库的状态表中存储的方向数据信息中不存在所述对应的查询语句配置的方向数据信息,则确定所述对应的查询语句没有在所述其他数据库执行;若所述其他数据库的状态表中存储的方向数据信息中存在所述对应的查询语句配置的方向数据信息,则确定所述对应的查询语句在所述其他数据库执行。
14、在一种可能的设计中,所述canal客户端配置有查询数据的同步白名单;相应地,所述对应的查询语句不是其他数据库执行过的查询语句,则将所述对应的查询语句发送至各其他数据库之后,还包括:判断所述同步白名单中是否存在所述对应的查询语句,若所述同步白名单中存在所述对应的查询语句,则将所述对应的查询语句发送至各其他数据库;若所述同步白名单中不存在所述对应的查询语句,则结束流程。
15、第二方面,本技术提供一种数据库系统的处理方法,所述数据库系统包括:至少两个异地部署的数据库,每个数据库对应已部署的一个canal服务端和一个canal客户端;
16、所述方法包括:
17、针对任一数据库,在所述任一数据库对应的canal服务端监测到所述任一数据库执行了查询语句时,拉取所述任一数据库执行所述查询语句产生的逻辑日志;
18、在所述任一数据库对应的canal客户端在监测到所述canal服务端中拉取了所述逻辑日志时,获取所述逻辑日志并将所述逻辑日志转化为查询语句实体;
19、所述canal客户端根据所述查询语句实体中对应的数据变更信息,生成对应的查询语句;
20、所述canal客户端判断所述对应的查询语句的类型是否为预设类型,若所述对应的查询语句的类型是预设类型,则判断所述对应的查询语句是否为其他数据库执行过的查询语句;若所述对应的查询语句不是其他数据库执行过的查询语句,则将所述对应的查询语句发送至各其他数据库;
21、若所述对应的查询语句的类型不是预设类型,则将所述对应的查询语句发送至各其他数据库;
22、所述其他数据库中每个数据库执行所述对应的查询语句,以完成所有数据库的数据同步。
23、在一种可能的设计中,所述canal客户端根据所述查询语句实体中对应的数据变更信息,生成对应的查询语句,包括:获取所述数据变更信息中的查询语句的类型、同步前的列数据值、同步后的列数据值和列的属性;根据所述查询语句的类型、同步前的列数据值、同步后的列数据值和列的属性,生成对应的查询语句。
24、在一种可能的设计中,其中所述查询语句的类型为插入类型;相应地,所述根据所述查询语句的类型、同步前的列数据值、同步后的列数据值和列的属性,生成对应的查询语句,包括:确定所述同步前的列数据值为零,所述同步后的列数据值为插入的值;确定所述插入的值所在的列的属性;根据所述插入的值和所述插入的值所在的列的属性,生成对应的查询语句。
25、本技术提供的数据库系统及数据库系统的处理方法,提出一种数据库系统,在异地部署至少两个数据库,在任一数据库执行了查询语句后,通过canal服务端拉取数据的逻辑日志,再通过canal客户端根据逻辑日志获取查询语句,基于查询语句实现对其他数据库进行数据同步,以此避免了数据库瘫痪不可用的风险。
1.一种数据库系统,其特征在于,包括:至少两个异地部署的数据库,每个数据库对应已部署的一个canal服务端和一个canal客户端;
2.根据权利要求1所述的系统,其特征在于,所述canal客户端根据所述查询语句实体中对应的数据变更信息,生成对应的查询语句,包括:
3.根据权利要求2所述的系统,其特征在于,其中所述查询语句的类型为插入类型;
4.根据权利要求2所述的系统,其特征在于,其中所述查询语句的类型为更新类型;
5.根据权利要求2所述的系统,其特征在于,其中所述查询语句的类型为删除类型;
6.根据权利要求2所述的系统,其特征在于,其中所述预设类型为插入类型和/或更新类型,插入类型和更新类型的查询语句都配置有唯一的方向数据信息;所有数据库中都配置有一个状态表,用来存储所述方向数据信息;
7.根据权利要求1至6任一项所述的系统,其特征在于,所述canal客户端配置有查询数据的同步白名单;
8.一种数据库系统的处理方法,其特征在于,所述数据库系统包括:至少两个异地部署的数据库,每个数据库对应已部署的一个canal服务端和一个canal客户端;
9.根据权利要求8所述的方法,其特征在于,所述canal客户端根据所述查询语句实体中对应的数据变更信息,生成对应的查询语句,包括:
10.根据权利要求9所述的方法,其特征在于,其中所述查询语句的类型为插入类型;