CN108984660A - 一种MySQL数据库主从同步数据去重方法 - Google Patents
一种MySQL数据库主从同步数据去重方法 Download PDFInfo
- Publication number
- CN108984660A CN108984660A CN201810687546.7A CN201810687546A CN108984660A CN 108984660 A CN108984660 A CN 108984660A CN 201810687546 A CN201810687546 A CN 201810687546A CN 108984660 A CN108984660 A CN 108984660A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- duplicate removal
- master
- mysql
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种MySQL数据库主从同步数据去重方法。所述方法将MySQL数据库同步操作与数据去重操作区分开来,作为两个连续的操作步骤来执行,即在完成数据同步操作后,通过将本次同步的数据与同步日志中的数据进行比对,找到重复数据,并将从库中的重复数据删除。本发明所述方法无需对数据库表执行加锁操作,不影响数据库对外提供的并行服务功能,同时也不会引入过大的性能开销,因此在数据库操作并行性和性能开销方面优于现有的解决方法。
Description
技术领域
本发明属于数据库应用技术领域,具体涉及一种MySQL数据库主从同步数据去重方法。
背景技术
SaaS架构通过将应用直接剥离出去,将平台留下来,做平台的始终做平台,而做云计算资源的人就专心做好自身的调度和服务。这种方式使做SaaS的人可以专注于自己所熟悉的业务,为别人提供软件和服务的应用。
MySQL数据库是一种非常流行的开源数据库管理***,应用非常广泛。MySQL数据库管理***的主数据库与从数据库同步技术在国内外使用得都非常的频繁。但是MySQL数据库在实现主从同步的时候容易出现数据重复的问题,这是个非常令人头痛的问题,需要采取技术措施来检查并删除重复的数据。
目前的解决方法主要有两类,一类是MySQL官方推荐的表级加锁方法,另一类是大部分企业使用的联合主键和多个唯一键的方法,也称为传统解决方法。这两类方法都存在缺陷。下面分别予以阐述。
一、 MySQL官方解决方法
使用表级锁,每次同步前先对主库中的表进行加锁,其次把主库中的表数据备份并导出,再次拷贝导出后的MySQL主库数据到MySQL从库当中,按照binlog进行同步数据,最后解除主库的表级锁。这种方法存在的问题是:数据操作程序只能使用单线程,只能单个***使用数据库,如果其他***同时使用该数据库,则会被锁表。这不能满足现在分布式***的并行数据库访问需求。
二、 传统解决方法
使用联合主键和唯一键,但是每次对数据进行insert,update操作的时候都要逻辑验证每个主键字段和唯一键字段的唯一性,性能开销巨大。数据库服务器的主要用途是存储数据,不应该在逻辑处理上产生过多的开销,这种方式造成了数据库服务器性能的浪费。
发明内容
为了解决现有的MySQL数据库主从同步数据去重方法存在的性能开销大、只能提供单线程访问等问题,本发明提供一种MySQL数据库主从同步数据去重方法,所述方法采取分布操作,在每次数据同步后,扫描本次同步的数据,检测从库中重复的数据并进行删除。所述方法无需对数据库表执行加锁操作,不影响数据库对外提供的并行服务功能,同时也不会引入过大的性能开销,因此在数据库操作并行性和性能开销方面优于现有的解决方法。
为实现上述目标,本发明采用以下技术方案:
一种MySQL数据库主从同步数据去重方法,所述方法将数据库同步操作与数据去重操作区分开来,作为两个连续的操作步骤来执行,即在完成数据同步操作后,通过将本次同步的数据与同步日志中的数据进行比对,找到重复数据,并将从库中的重复数据删除。
一种MySQL数据库主从同步数据去重方法,所述方法包括以下步骤:
1)把待同步的主数据库中的数据保存在服务器的临时文件当中;
2)执行主数据库与从数据库的数据同步操作;
3)调用MySQL触发器,在主从同步日志表中记录同步操作完成的日志信息,但是记录中的“去重表级字段”记录为“未去重”;
4)SAAS架构程序定期扫描主从同步日志表;
5)如果发现有新的已完成同步但没有去重的批次数据,则将这些已完成同步但尚未去重的数据与所述步骤1)中存储的临时文件中的数据进行比对;如果扫描未发现有新的已完成同步但没有去重的批次数据,则跳转步骤9);
6)如果比对后未发现有重复数据,则将主从同步日志中的去重状态更新为“无须去重”,跳转到所述步骤9);
7)如果经比对发现有重复的数据,则删除此批同步在从库中的数据,并将保存在临时文件中的数据***到从库中;
8)将主从同步日志中的去重状态更新为“完成”;
9)删除所述步骤1)中存储的临时文件。
优选的,所述步骤4)中的定期扫描为每隔5秒扫描一次。
优选的,所属步骤6)中的数据比对方式为逐条循环比对。
本发明的优点和有益效果为:将数据同步操作与数据去重区分为两个操作步骤,使得数据同步操作进程加快,不会影响其他进程对数据库的并行访问操作;通过数据比对查找重复数据,处理逻辑简单清晰,引入的开销较小,与现有技术相比,性能提升显著。
附图说明
附图1是本发明所述的MySQL数据库主从同步数据去重方法的工作流程图。
具体实施方式
下面结合实施例对本发明作进一步说明。
实施例1
参见附图1。
一种MySQL数据库主从同步数据去重方法,按以下步骤执行:
1)把待同步的主数据库中的数据保存在服务器的临时文件当中;
2)执行主数据库与从数据库的数据同步操作;
3)调用MySQL触发器,在主从同步日志表中记录同步操作完成的日志信息,但是记录中的“去重表级字段”记录为“未去重”;
4)SAAS架构程序每隔5秒扫描主从同步日志表;
5)扫描未发现有新的已完成同步但没有去重的批次数据,删除所述步骤1)中存储的临时文件。
实施例2
参见附图1。
一种MySQL数据库主从同步数据去重方法,按以下步骤执行:
1)把待同步的主数据库中的数据保存在服务器的临时文件当中;
2)执行主数据库与从数据库的数据同步操作;
3)调用MySQL触发器,在主从同步日志表中记录同步操作完成的日志信息,但是记录中的“去重表级字段”记录为“未去重”;
4)SAAS架构程序每隔5秒扫描主从同步日志表;
5)发现有新的已完成同步但没有去重的批次数据,将这些已完成同步但尚未去重的数据与所述步骤1)中存储的临时文件中的数据进行比对;
6)比对后未发现有重复数据,删除所述步骤1)中存储的临时文件。
实施例3
参见附图1。
一种MySQL数据库主从同步数据去重方法,按以下步骤执行:
1)把待同步的主数据库中的数据保存在服务器的临时文件当中;
2)执行主数据库与从数据库的数据同步操作;
3)调用MySQL触发器,在主从同步日志表中记录同步操作完成的日志信息,但是记录中的“去重表级字段”记录为“未去重”;
4)SAAS架构程序每隔5秒扫描主从同步日志表;
5)发现有新的已完成同步但没有去重的批次数据,将这些已完成同步但尚未去重的数据与所述步骤1)中存储的临时文件中的数据进行比对;
6)经比对发现有重复的数据,删除此批同步在从库中的数据,并将保存在临时文件中的数据***到从库中;
7)将主从同步日志中的去重状态更新为“完成”;
8)删除所述步骤1)中存储的临时文件。
性能对比例
为了说明本发明所述方法在性能方面的优势,我们将MySQL官方提供的同步数据去重方法与本发明所述方法在引入***开销方面进行了对比,结果如表1、表2所示。
表1 MySQL主数据库服务器性能测试报表
服务器型号 | 处理器型号级数量 | 内存 | 网速 | 数据量(条) | MySQL官方方法的性能消耗CPU/内存 | 本发明所述方法的性能消耗CPU/内存 |
EG520MS-G10 | Intel® Xeon® E5-2600v3/v 4 2个 | 32GB DDR4 RECC | 千兆 | 10000000 | 25%/8GB | 25%/8GB |
表2 MySQL从数据库服务器性能测试报表
服务器型号 | 处理器型号级数量 | 内存 | 网速 | 数据量(条) | MySQL官方方法的性能消耗CPU/内存 | 本发明所述方法的性能消耗CPU/内存 |
EG520MS-G10 | Intel® Xeon® E5-2600v3/v 4 2个 | 32GB DDR4 RECC | 千兆 | 10000000 | 28%/12GB | 25%/8GB |
从表2可以看出,在同样条件下,本发明所述方法比MySQL官方采用的同步数据去重方法,节省了3%的CPU性能开销,节省了4GB内存开销。
最后应说明的是:显然,上述实施例仅仅是为清楚地说明本发明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明的保护范围之中。
Claims (4)
1.一种MySQL数据库主从同步数据去重方法,其特征在于:所述方法将数据库同步操作与数据去重操作区分开来,作为两个连续的操作步骤来执行,即在完成数据同步操作后,通过将本次同步的数据与同步日志中的数据进行比对,找到重复数据,并将从库中的重复数据删除。
2.根据权利要求1 所述的一种MySQL数据库主从同步数据去重方法,其特征在于,所述方法包括以下步骤:
1)把待同步的主数据库中的数据保存在服务器的临时文件当中;
2)执行主数据库与从数据库的数据同步操作;
3)调用MySQL触发器,在主数据库和从数据库同步日志表中记录同步操作完成的日志信息,但是记录中的“去重表级字段”记录为“未去重”;
4)SaaS架构程序定期扫描主数据库和从数据库同步日志表;
5)如果发现有新的已完成同步但没有去重的批次数据,则将这些已完成同步但尚未去重的数据与所述步骤1)中存储的临时文件中的数据进行比对;如果扫描未发现有新的已完成同步但没有去重的批次数据,则跳转步骤9);
6)如果比对后未发现有重复数据,则将主数据库和从数据库同步日志中的去重状态更新为“无须去重”,跳转到所述步骤9);
7)如果经比对发现有重复的数据,则删除此批同步在从数据库中的数据,并将保存在临时文件中的数据***到从数据库中;
8)将主从同步日志中的去重状态更新为“完成”;
9)删除所述步骤1)中存储的临时文件。
3.根据权利要求2所述的一种MySQL数据库主从同步数据去重方法,其特征在于:所述步骤4)中的定期扫描为每隔5秒扫描一次。
4.根据权利要求2所述的一种MySQL数据库主从同步数据去重方法,其特征在于:所述步骤6)中的数据比对方式为逐条循环比对。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810687546.7A CN108984660A (zh) | 2018-06-28 | 2018-06-28 | 一种MySQL数据库主从同步数据去重方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810687546.7A CN108984660A (zh) | 2018-06-28 | 2018-06-28 | 一种MySQL数据库主从同步数据去重方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108984660A true CN108984660A (zh) | 2018-12-11 |
Family
ID=64539314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810687546.7A Pending CN108984660A (zh) | 2018-06-28 | 2018-06-28 | 一种MySQL数据库主从同步数据去重方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108984660A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256685A (zh) * | 2020-10-30 | 2021-01-22 | 深圳物讯科技有限公司 | 基于电子表格的分割去重导入方法及相关产品 |
CN115934428A (zh) * | 2023-01-10 | 2023-04-07 | 湖南三湘银行股份有限公司 | 一种mysql数据库的主灾备切换方法、装置及电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102158540A (zh) * | 2011-02-18 | 2011-08-17 | 广州从兴电子开发有限公司 | 分布式数据库实现***及方法 |
CN101551822B (zh) * | 2009-05-27 | 2012-07-18 | 北京星网锐捷网络技术有限公司 | 一种数据库复制方法和装置 |
CN104268272A (zh) * | 2014-10-14 | 2015-01-07 | 青岛海尔软件有限公司 | 一种数据唯一性检查方法及装置 |
CN104516989A (zh) * | 2015-01-26 | 2015-04-15 | 北京京东尚科信息技术有限公司 | 增量数据推送***和方法 |
CN105912628A (zh) * | 2016-04-07 | 2016-08-31 | 北京奇虎科技有限公司 | 主从数据库的同步方法及装置 |
CN105956099A (zh) * | 2016-04-28 | 2016-09-21 | 安徽四创电子股份有限公司 | 一种基于HBase高表的主键设计方法 |
CN106250514A (zh) * | 2016-08-04 | 2016-12-21 | 摩贝(上海)生物科技有限公司 | 基于Mysql数据库和SQL日志的跨国数据同步方法 |
CN106354865A (zh) * | 2016-09-09 | 2017-01-25 | 北京奇虎科技有限公司 | 一种同步主从数据库的方法、装置和*** |
CN107357883A (zh) * | 2017-06-30 | 2017-11-17 | 北京奇虎科技有限公司 | 数据迁移方法及装置 |
US20180052902A1 (en) * | 2016-08-16 | 2018-02-22 | Quintessencelabs Pty Ltd. | Network partition handling in fault-tolerant key management system |
CN108415951A (zh) * | 2018-02-02 | 2018-08-17 | 广东睿江云计算股份有限公司 | 一种数据库控制方法和*** |
-
2018
- 2018-06-28 CN CN201810687546.7A patent/CN108984660A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551822B (zh) * | 2009-05-27 | 2012-07-18 | 北京星网锐捷网络技术有限公司 | 一种数据库复制方法和装置 |
CN102158540A (zh) * | 2011-02-18 | 2011-08-17 | 广州从兴电子开发有限公司 | 分布式数据库实现***及方法 |
CN104268272A (zh) * | 2014-10-14 | 2015-01-07 | 青岛海尔软件有限公司 | 一种数据唯一性检查方法及装置 |
CN104516989A (zh) * | 2015-01-26 | 2015-04-15 | 北京京东尚科信息技术有限公司 | 增量数据推送***和方法 |
CN105912628A (zh) * | 2016-04-07 | 2016-08-31 | 北京奇虎科技有限公司 | 主从数据库的同步方法及装置 |
CN105956099A (zh) * | 2016-04-28 | 2016-09-21 | 安徽四创电子股份有限公司 | 一种基于HBase高表的主键设计方法 |
CN106250514A (zh) * | 2016-08-04 | 2016-12-21 | 摩贝(上海)生物科技有限公司 | 基于Mysql数据库和SQL日志的跨国数据同步方法 |
US20180052902A1 (en) * | 2016-08-16 | 2018-02-22 | Quintessencelabs Pty Ltd. | Network partition handling in fault-tolerant key management system |
CN106354865A (zh) * | 2016-09-09 | 2017-01-25 | 北京奇虎科技有限公司 | 一种同步主从数据库的方法、装置和*** |
CN107357883A (zh) * | 2017-06-30 | 2017-11-17 | 北京奇虎科技有限公司 | 数据迁移方法及装置 |
CN108415951A (zh) * | 2018-02-02 | 2018-08-17 | 广东睿江云计算股份有限公司 | 一种数据库控制方法和*** |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256685A (zh) * | 2020-10-30 | 2021-01-22 | 深圳物讯科技有限公司 | 基于电子表格的分割去重导入方法及相关产品 |
CN115934428A (zh) * | 2023-01-10 | 2023-04-07 | 湖南三湘银行股份有限公司 | 一种mysql数据库的主灾备切换方法、装置及电子设备 |
CN115934428B (zh) * | 2023-01-10 | 2023-05-23 | 湖南三湘银行股份有限公司 | 一种mysql数据库的主灾备切换方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3120261B1 (en) | Dependency-aware transaction batching for data replication | |
US9965359B2 (en) | Log forwarding to avoid deadlocks during parallel log replay in asynchronous table replication | |
US9589041B2 (en) | Client and server integration for replicating data | |
WO2017076321A1 (zh) | 数据库同步方法及***、源数据和目标数据同步装置 | |
CN106815326B (zh) | 一种检测无主键数据表一致性的***及方法 | |
CN110309161B (zh) | 一种数据同步方法、装置及服务器 | |
US10489378B2 (en) | Detection and resolution of conflicts in data synchronization | |
WO2018113580A1 (zh) | 一种数据管理方法及服务器 | |
US10783163B2 (en) | Instance-based distributed data recovery method and apparatus | |
JP2005222552A5 (zh) | ||
CN110858194A (zh) | 一种数据库扩容的方法和装置 | |
CN109783578B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
CN102946411A (zh) | 网络同步*** | |
CN105353988A (zh) | 一种元数据读写方法及装置 | |
CN108984660A (zh) | 一种MySQL数据库主从同步数据去重方法 | |
CN105447168A (zh) | Mp4格式的碎片文件恢复与重组的方法 | |
WO2022242372A1 (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
US20160275134A1 (en) | Nosql database data validation | |
US20170199921A1 (en) | Bloom filter driven data synchronization | |
CN111858626B (zh) | 一种基于并行执行的数据同步的方法和装置 | |
CN113297159A (zh) | 数据存储方法以及装置 | |
US9547651B1 (en) | Establishing file relationships based on file operations | |
CN106874341A (zh) | 一种数据库同步方法 | |
CN106708948A (zh) | 一种用主键唯一性实现事务操作的方法及装置 | |
CN107590286B (zh) | 在集群文件***中事务信息的管理方法和装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181211 |
|
RJ01 | Rejection of invention patent application after publication |