[发明专利]基于MySQL的分库分表同步方法、装置、电子设备和计算机可读存储介质在审
申请号: | 202110571891.6 | 申请日: | 2021-05-25 |
公开(公告)号: | CN113360470A | 公开(公告)日: | 2021-09-07 |
发明(设计)人: | 颜许晓 | 申请(专利权)人: | 深圳市珍爱捷云信息技术有限公司 |
主分类号: | G06F16/182 | 分类号: | G06F16/182;G06F16/178;G06F16/22;G06F16/242 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518000 广东省深圳市南山区前海*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 mysql 分库分表 同步 方法 装置 电子设备 计算机 可读 存储 介质 | ||
1.一种基于MySQL的分库分表同步方法,其特征在于,包括:
获取同步指令和配置信息;
判断所述同步指令是否包含占位符,若包含,解析所述同步指令提取待同步库名称和待同步表名称替换所述占位符,得到多条结构化查询语言SQL指令;
初始化线程池,通过所述线程池链接所述配置信息对应的目标SQL数据库,提取所述多条SQL指令对应的多组待同步表数据;
合并所述多组待同步表数据得到至少一个本地同步文件;
调用预设的分布式文件系统HDFS接口将所述至少一个本地同步文件存储至预设的HDFS存储表的预设路径。
2.根据权利要求1所述的方法,其特征在于,所述占位符包括:库占位符和表占位符,所述解析所述同步指令提取待同步库名称和待同步表名称替换所述占位符,包括:
通过正则表达式从所述同步指令中获取库编号区间;
获取预设的数据库前缀;
在所述库编号区间内循环提取库编号作为数据库后缀,基于所述数据库前缀和所述数据库后缀生成所述待同步库名称;
基于所述待同步库名称替换所述同步指令的库占位符,得到待替换SQL指令;
解析所述同步指令提取所述待同步表名称替换所述待替换SQL指令的表占位符。
3.根据权利要求1或2所述的方法,其特征在于,所述解析所述同步指令提取所述待同步表名称替换所述待替换SQL指令的表占位符,包括:
针对每一所述待替换SQL指令,通过所述正则表达式从所述待替换SQL指令中获取表编号区间;
获取预设的数据表前缀;
在所述表编号区间内循环提取表编号作为数据表后缀,基于所述数据表前缀和所述数据表后缀生成所述待同步表名称;
基于所述待同步表名称替换所述表占位符,得到所述SQL指令。
4.根据权利要求1所述的方法,其特征在于,所述调用预设的分布式文件系统HDFS接口将所述至少一个本地同步文件存储至预设的HDFS存储表的预设路径之后,还包括:
判断所述HDFS存储表是否为分区表;
若是,调用Java数据库连接接口将所述预设路径更新至Hive元数据数据库的分区信息表的分区路径字段。
5.根据权利要求1所述的方法,其特征在于,所述合并所述多组待同步表数据得到至少一个本地同步文件,包括:
通过所述线程池的多条线程将所述多组待同步表数据写入多个待同步本地文件;
基于所述多个待同步本地文件生成目标文件目录;
遍历所述目标文件目录,针对所述多个待同步本地文件中任意一个待同步本地文件;
判断预设待处理链表的文件大小计数器的数值是否小于预设阈值;
若所述数值不小于所述预设阈值,合并所述待处理链表的文件作为所述本地同步文件,初始化所述待处理链表和所述文件大小计数器。
6.根据权利要求4所述的方法,其特征在于,还包括:
若所述数值小于所述预设阈值,获取所述任意一个同步本地文件的文件大小;
将所述任意一个待同步本地文件存储至所述待处理链表,基于所述文件大小和所述数值的和对所述数值进行更新。
7.根据权利要求1所述的方法,其特征在于,所述提取所述多条SQL指令对应的多组待同步表数据,还包括:
基于所述多条SQL指令生成指令链表;
将所述指令链表作为所述线程池的输入,提取所述多组待同步表数据,其中,所述多组待同步表数据对应所述线程池的多条线程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市珍爱捷云信息技术有限公司,未经深圳市珍爱捷云信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110571891.6/1.html,转载请声明来源钻瓜专利网。