CN106250514A - 基于Mysql数据库和SQL日志的跨国数据同步方法 - Google Patents

基于Mysql数据库和SQL日志的跨国数据同步方法 Download PDF

Info

Publication number
CN106250514A
CN106250514A CN201610630962.4A CN201610630962A CN106250514A CN 106250514 A CN106250514 A CN 106250514A CN 201610630962 A CN201610630962 A CN 201610630962A CN 106250514 A CN106250514 A CN 106250514A
Authority
CN
China
Prior art keywords
daily record
data base
sql
data
country
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.)
Granted
Application number
CN201610630962.4A
Other languages
English (en)
Other versions
CN106250514B (zh
Inventor
王建国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Baoyi Intelligent Technology Co ltd
Original Assignee
Mobi (shanghai) Biotechnology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mobi (shanghai) Biotechnology Co Ltd filed Critical Mobi (shanghai) Biotechnology Co Ltd
Priority to CN201610630962.4A priority Critical patent/CN106250514B/zh
Publication of CN106250514A publication Critical patent/CN106250514A/zh
Application granted granted Critical
Publication of CN106250514B publication Critical patent/CN106250514B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Abstract

一种基于Mysq1数据库和SQL日志的跨国数据同步方法,包括:以每个国家作为结点,在每个国家结点,建立日志主数据库,通过Mysq1主从配置,建立其他国家的日志从数据库;PHP调用mysq1binlog命令,实时读取和解析每个国家结点网站数据库产生的binlog日志,并进行参数解码和参数定位,实时提取出binlog日志中的SQL语句和执行环境参数,写入日志主数据库;每个国家将日志主数据库分发同步到其他国家建立的日志从数据库中;在每个国家结点,都启动写入进程,将其他国家结点同步过来的日志从数据库中的SQL语句和执行环境参数,同步到该国网站数据库中,实现不同国家间网站数据库的同步。本发明解决了多个国家跨机房数据同步的问题,在网络稳定的情况下,可达到秒级实时同步的要求。

Description

基于Mysql数据库和SQL日志的跨国数据同步方法
技术领域
本发明涉及数据同步领域,尤其涉及基于Mysql数据库和SQL日志的跨国数据同步方法。
背景技术
在化工行业,经常有国际贸易发生,跨国的B2B电商平台可支撑这些贸易服务。平台要求在全球地区都能快速的访问,同时用户和账单等数据能及时同步更新。
在目前跨国网络状况不佳的情况下,使用Mysql自有的数据库同步方法,会因为网络不稳定而中断或者出现数据冲突错误。也会因为网络的延时导致数据重复错误,没有完善的日志可以分析排错。Mysql多主同步只能跳过当前的语句,导致手动修复麻烦,而且无法在第一时间进行报警。
因此,需要提供一个跨国数据同步方法,来解决多个国家跨机房数据同步问题。
发明内容
本发明的目的是为了解决现有技术的不足,提供一种基于Mysql数据库和SQL日志的跨国数据同步方法。
本发明的目的是通过以下技术方案实现的:
一种基于Mysql数据库和SQL日志的跨国数据同步方法,包括:
(1)以每个国家作为结点,在每个国家结点,建立日志主数据库,通过Mysql主从配置,建立其他国家的日志从数据库;
(2)PHP调用mysqlbinlog命令,实时读取和解析每个国家结点网站数据库产生的binlog日志,并进行参数解码和参数定位,实时提取出binlog日志中的SQL语句和执行环境参数,写入日志主数据库;
(3)每个国家将日志主数据库中的数据,通过Mysql主从配置,分发同步到其他国家建立的日志从数据库中;
(4)在每个国家结点,都启动写入进程,将其他国家结点同步过来的SQL语句和执行环境参数,通过日志从数据库,同步写入到该国网站数据库中,实现不同国家间网站数据库的同步。
上述的基于Mysql数据库和SQL日志的跨国数据同步方法,其中,所述步骤(3)还包括:通过grep命令,对网站产生的日志文件进行过滤,提取出SQL语句和执行环境参数。
上述的基于Mysq1数据库和SQL日志的跨国数据同步方法,其中,所述步骤(3)还包括:将日志从数据库中的SQL语句,同步写入网站数据库的过程中,将SQL语句的第一个单词,修改为相邻字母大小写结合后,再进行执行。
上述的基于Mysq1数据库和SQL日志的跨国数据同步方法,其中,对每个日志主数据库、日志从数据库设置单独的监控程序,监测同步程序是否出错中断,若发现中断,则监控程序调用第三方短信接口,第一时间给维护人员发送短信报警。
上述的基于Mysql数据库和SQL日志的跨国数据同步方法,其中,设计日志提取程序和同步写入程序,每一步操作都记录当前处理的结点,当程序被意外终止时,重新开启,从上次记录的结点继续执行。
上述的基于Mysql数据库和SQL日志的跨国数据同步方法,其中,对每条SQL日志记录执行状态,可以通过手动更改状态,批量跳过错误的重复数据执行。
上述的基于Mysql数据库和SQL日志的跨国数据同步方法,其中,将日志从数据库中的SQL写入网站数据库时,当启动写入进程时,记录当前的进程id,保存在日志从数据库中,进程在运行时,每执行一次写入操作都判断一下当前进程的id是否和数据从数据库中的id一致。
上述的基于Mysql数据库和SQL日志的跨国数据同步方法,其中,当另一个进程被同时启动时,日志从数据库中的进程id被新进程id覆盖,前一个进程自动终止。
综上所述,本发明解决了多个国家跨机房数据同步的问题,将网站产生的SQL日志,分发同步到其他国家结点,写入各结点的网站数据库中,实现数据同步。在网络稳定的情况下,可以达到秒级实时同步的要求。
在网络不稳定或者中断的情况,数据同步服务不会出错,等待网络恢复,可以自动恢复同步。当数据出现重复错误时,有完善的执行日志可以查看分析,通过判断,可以灵活跳过部分错误数据,恢复同步,方便手动修复,保证数据的准确性和一致性。基于这样稳定的同步方式,可以实现每个国家都从本国访问数据源,达到了一个很好的访问速度。
附图说明
图1是本发明的SQL日志在各个国家结点传输的示意图。
图2是本发明实施例2中中国和美国的数据同步的原理图。
具体实施方式
本发明以每个国家作为结点,建立网站主数据库和web服务,提供国家的本地访问服务。
实施例1
请参见图1,在每个国家结点,建立日志主数据库,通过Mysql主从配置,建立其他国家的日志从数据库,每个国家将SQL日志分发同步到其他国家建立的日志从数据库中。
PHP调用mysqlbinlog命令,实时读取和解析每个国家结点的网站主数据库产生的binlog日志,通过mysqlbinlog命令的参数(--base64-output=decode-rows--set-charset=utf8)进行参数解码,通过(--start-position)进行参数定位、读取位置,通过grep命令进行过滤,实时提取出binlog日志中的SQL语句和相关执行环境参数。
对解析出来的SQL的语句和执行环境参数,进行格式化,写入日志主数据库中,分别得到字段:log_file_id(日志文件名称)、at_id(SQL日志的id序列)、sql_time(SQL日志实际写入的时间)、insert_id(插入后,产生的自增id)、sql(SQL日志的内容)、sql_head(SQL日志的起始命令,类似:create,insert,update...)、write_server_id(用于写入同步时,记录写入的主库id)、write_time(用于写入同步时,记录同步写入时间)。
将各结点的日志主数据库中的数据,通过Mysql主从配置,分发同步到其他国家结点建立的日志从数据库中,在每个国家结点,都启动写入进程,将其他国家结点同步过来的SQL语句和执行环境参数,执行写入到网站数据库中,实现各国结点网站数据库的同步。
为了防止在同步过程中,SQL语句被重复分发,导致重复写入,同步进入死循环。需要在执行同步写入时,将SQL语句的第一个单词,按相邻字母大小写结合的规则,变换后再执行,例如:将“UPDATE ecm_groupbuy SET state=′1′WHERE state=′0′”变换为“uPdAtEecm_groupbuy SET state=′1′WHERE state=′0′”再进行执行。这样变换后,提取程序在提取日志文件中的SQL语句时,如果判断到SQL语句的第一个单词,是按相邻字母大小写结合的,则忽略不再分发,解决了重复分发的问题。
通过设置mysql参数(auto_increment_offset和auto_increment_increment),解决了自增id重复的问题。
对每个日志主数据库、日志从数据库设置单独的监控程序,监测同步程序是否出错中断,一旦发现中断,监控程序调用第三方短信接口,第一时间给维护人员发送短信报警。
在程序中断过程中,各国家结点日志主数据库中唯一索引的字段,可能会产生重复数据,出现这种情况时,在发送报警短信的同时,还可进行手动处理。
设计日志提取程序和同步写入程序,每一步操作都记录当前处理的结点,当程序被意外终止时,能够重新开启时,可以从上次记录的结点继续执行,不产生数据错乱,保证数据的完整性。
对每条SQL日志记录执行状态,可以通过手动更改状态,批量跳过错误的重复数据执行。
在进行手动维护时,可以查看日志从库中的数据,分析执行情况,再判断哪些语句可以跳过,哪些语句需要重复执行,只要修改(write_server_id、write_time)字段便可批量执行。
若因为操作错误,同时启动多个程序,在这种情况下,如果不做控制,会导致数据重复读取或者写入,造成数据错误,因此要有避免多启的机制,保证任何时候只有独立的进程在运行。
为保证总是只有独立的进程在运行,每次进程在启动时,在数据库中记录当前进程的id。进程在运行时,每执行一次操作都判断数据库中的进程id是否和自身id一致,如果不一致则自主终止当前进程。当另外一个进程被同时启动时,数据库中的进程id被新进程id覆盖,导致之前启动的进程id与数据库不一致,前一个进程自动终止。保证了每时每刻都保留最新的一个进程独立运行。
实施例2
请参见图2,中国的网站数据库产生的日志文件同步到美国的网站数据库,其具体方法包括:
通过解析中国的网站数据库产生的日志文件,获取SQL语句和执行环境参数,写入日志主数据库中。通过Mysql主从配置,分发同步到在美国建立的日志从数据库中,在美国的网站数据库启动写入程序,将日志从数据库中的SQL语句和执行环境参数,同步写入到美国的网站数据库中。中国的网站数据库实时同步到美国的网站数据库。
综上所述,本发明解决了多个国家跨机房数据同步的问题,通过将网站产生的SQL日志,分发同步到其他国家结点,写入各结点的网站数据库中,实现数据同步。在网络稳定的情况下,可以达到秒级实时同步的要求。
在网络不稳定或者中断的情况,数据同步服务不会出错,等待网络恢复,可以自动恢复同步。当数据出现重复错误时,有完善的执行日志可以查看分析,通过判断,可以灵活跳过部分错误数据,恢复同步,方便手动修复,保证数据的准确性和一致性。基于这样稳定的同步方式,可以实现每个国家都从本国访问数据源,达到了一个很好的访问速度。
以上所述的实施例仅用于说明本发明的技术思想及特点,其目的在于使本领域内的技术人员能够了解本发明的内容并据以实施,不能仅以本实施例来限定本发明的专利范围,即凡依本发明所揭示的精神所作的同等变化或修饰,仍落在本发明的专利范围内。

Claims (8)

1.一种基于Mysql数据库和SQL日志的跨国数据同步方法,其特征在于,包括:
(1)以每个国家作为结点,在每个国家结点,建立日志主数据库,通过Mysql主从配置,建立其他国家的日志从数据库;
(2)PHP调用mysqlbinlog命令,实时读取和解析每个国家结点网站数据库产生的binlog日志,并进行参数解码和参数定位,实时提取出binlog日志中的SQL语句和执行环境参数,写入日志主数据库中;
(3)每个国家将日志主数据库中的数据,通过Mysql主从配置,分发同步到其他国家建立的日志从数据库中;
(4)在每个国家结点,都启动写入进程,将其他国家结点同步过来的SQL语句和执行环境参数,通过日志从数据库,同步写入到该国网站数据库中。
2.根据权利要求1所述的基于Mysql数据库和SQL日志的跨国数据同步方法,其特征在于,所述步骤(3)还包括:通过grep命令,对网站产生的日志文件进行过滤,提取出SQL语句和执行环境参数。
3.根据权利要求1所述的基于Mysql数据库和SQL日志的跨国数据同步方法,其特征在于,所述步骤(4)还包括:将日志从数据库中的SQL语句,同步写入网站数据库的过程中,将SQL语句的第一个单词,修改为相邻字母大小写结合后,再进行执行。
4.根据权利要求1所述的基于Mysql数据库和SQL日志的跨国数据同步方法,其特征在于,对每个日志主数据库、日志从数据库设置单独的监控程序,监测同步程序是否出错中断,若发现中断,则监控程序调用第三方短信接口,第一时间给维护人员发送短信报警。
5.根据权利要求1所述的基于Mysql数据库和SQL日志的跨国数据同步方法,其特征在于,设计日志提取程序和同步写入程序,每一步操作都记录当前处理的结点,当程序被意外终止时,重新开启,从上次记录的结点继续执行。
6.根据权利要求1所述的基于Mysql数据库和SQL日志的跨国数据同步方法,其特征在于,对每条SQL日志记录执行状态,通过手动更改状态,批量跳过错误的重复数据执行。
7.根据权利要求1所述的基于Mysql数据库和SQL日志的跨国数据同步方法,其特征在于,将日志从数据库中的SQL日志写入网站数据库时,当启动写入进程时,记录当前的进程id,保存在日志从数据库中,进程在运行时,每执行一次写入操作都判断当前进程的id是否和日志从数据库中的id一致。
8.根据权利要求7所述的基于Mysql数据库和SQL日志的跨国数据同步方法,其特征在于,当另一个进程被同时启动时,日志从数据库中的进程id被新进程id覆盖,前一个进程自动终止。
CN201610630962.4A 2016-08-04 2016-08-04 基于Mysql数据库和SQL日志的跨国数据同步方法 Active CN106250514B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610630962.4A CN106250514B (zh) 2016-08-04 2016-08-04 基于Mysql数据库和SQL日志的跨国数据同步方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610630962.4A CN106250514B (zh) 2016-08-04 2016-08-04 基于Mysql数据库和SQL日志的跨国数据同步方法

Publications (2)

Publication Number Publication Date
CN106250514A true CN106250514A (zh) 2016-12-21
CN106250514B CN106250514B (zh) 2019-10-15

Family

ID=58077412

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610630962.4A Active CN106250514B (zh) 2016-08-04 2016-08-04 基于Mysql数据库和SQL日志的跨国数据同步方法

Country Status (1)

Country Link
CN (1) CN106250514B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423452A (zh) * 2017-09-02 2017-12-01 国网辽宁省电力有限公司 一种电网异构数据库同步复制迁移方法
CN107590256A (zh) * 2017-09-20 2018-01-16 北京九桥同步软件有限公司 异构数据库同步方法和装置
CN108664609A (zh) * 2018-05-10 2018-10-16 中国银行股份有限公司 一种数据共享的方法、网络设备及终端
CN108984660A (zh) * 2018-06-28 2018-12-11 中译语通科技股份有限公司 一种MySQL数据库主从同步数据去重方法
CN109271448A (zh) * 2018-09-25 2019-01-25 武汉达梦数据库有限公司 基于数据库为平台的数据同步系统及方法
CN109753511A (zh) * 2018-12-28 2019-05-14 北京东方国信科技股份有限公司 一种大数据平台的跨地域实时同步方法及系统
CN110659256A (zh) * 2019-09-30 2020-01-07 掌阅科技股份有限公司 多机房同步方法、计算设备及计算机存储介质
CN110851528A (zh) * 2019-10-09 2020-02-28 网联清算有限公司 数据库同步方法、装置、存储介质及计算机设备
WO2024077802A1 (zh) * 2022-10-10 2024-04-18 上海商米科技集团股份有限公司 跨区域的数据同步方法、系统及计算机可读介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104252505A (zh) * 2013-06-29 2014-12-31 北京新媒传信科技有限公司 数据库管理平台中数据库实例的同步方法和装置
CN105446825A (zh) * 2014-06-12 2016-03-30 阿里巴巴集团控股有限公司 数据库测试方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104252505A (zh) * 2013-06-29 2014-12-31 北京新媒传信科技有限公司 数据库管理平台中数据库实例的同步方法和装置
CN105446825A (zh) * 2014-06-12 2016-03-30 阿里巴巴集团控股有限公司 数据库测试方法及装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423452A (zh) * 2017-09-02 2017-12-01 国网辽宁省电力有限公司 一种电网异构数据库同步复制迁移方法
CN107590256A (zh) * 2017-09-20 2018-01-16 北京九桥同步软件有限公司 异构数据库同步方法和装置
CN108664609A (zh) * 2018-05-10 2018-10-16 中国银行股份有限公司 一种数据共享的方法、网络设备及终端
CN108984660A (zh) * 2018-06-28 2018-12-11 中译语通科技股份有限公司 一种MySQL数据库主从同步数据去重方法
CN109271448A (zh) * 2018-09-25 2019-01-25 武汉达梦数据库有限公司 基于数据库为平台的数据同步系统及方法
CN109753511A (zh) * 2018-12-28 2019-05-14 北京东方国信科技股份有限公司 一种大数据平台的跨地域实时同步方法及系统
CN110659256A (zh) * 2019-09-30 2020-01-07 掌阅科技股份有限公司 多机房同步方法、计算设备及计算机存储介质
CN110659256B (zh) * 2019-09-30 2021-02-26 掌阅科技股份有限公司 多机房同步方法、计算设备及计算机存储介质
CN110851528A (zh) * 2019-10-09 2020-02-28 网联清算有限公司 数据库同步方法、装置、存储介质及计算机设备
CN110851528B (zh) * 2019-10-09 2022-09-02 网联清算有限公司 数据库同步方法、装置、存储介质及计算机设备
WO2024077802A1 (zh) * 2022-10-10 2024-04-18 上海商米科技集团股份有限公司 跨区域的数据同步方法、系统及计算机可读介质

Also Published As

Publication number Publication date
CN106250514B (zh) 2019-10-15

Similar Documents

Publication Publication Date Title
CN106250514A (zh) 基于Mysql数据库和SQL日志的跨国数据同步方法
CN107562883B (zh) 一种数据同步的方法及系统
CN110347746B (zh) 一种异构数据库同步数据一致性校验方法及装置
CN109271452B (zh) Db2数据库数据同步更新方法及设备
CN107203617B (zh) 基于MHA的mysql在线迁移系统及方法
CN110222114B (zh) 数据库中数据双向同步的方法及设备
CN106156318A (zh) 一种实现多节点数据库高可用的系统及方法
CN103399888B (zh) 电网模型数据的差分同步方法及系统
CN103825930A (zh) 一种分布式环境下的实时数据同步方法
CN109508346B (zh) 一种ddl操作的级联同步控制方法及系统
CN115408370B (zh) 数据库迁移评估方法和系统、计算机设备、存储介质
CN107577780A (zh) 一种数据中心云资源同步方法和装置
CN106294769B (zh) 同步工程数据的方法、系统和装置
CN115438122A (zh) 数据异构同步系统
CN111127250B (zh) 一种电力数据监控事件分析系统及方法
CN104298773B (zh) 一种etl作业自动切库系统及方法
CN114172921A (zh) 一种调度录音系统的日志审计方法及装置
CN111680106B (zh) 一种多应用系统数据同步的方法及装置
CN111913933A (zh) 基于统一支撑平台的电网历史数据管理方法及系统
CN111506668B (zh) 机器人集群智能化数据同步方法及系统
CN106254540B (zh) 一种适用于分布式系统的节点服务监控系统及实现方法
CN112395360B (zh) 基于非关系型数据库的数据同步方法、设备、装置和介质
CN114661558A (zh) 一种基于离线分析数据库Log的通用数据库表监控方法
CN111143155B (zh) 一种应用于通信行业实现告警同步和清除机制的方法
CN108156264B (zh) 一种面向双机冗余的数据同步方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20190108

Address after: 200233 Block A, Room 501, 12 Block 1001 Qinzhou North Road, Xuhui District, Shanghai

Applicant after: Shanghai Moku Data Technology Co.,Ltd.

Address before: Room 6020, 6th floor, No. 399 Fute North Road, Pudong New Area Free Trade Pilot Area, Shanghai, 2001

Applicant before: MOLBASE (SHANGHAI) BIOTECHNOLOGY CO.,LTD.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240308

Address after: Unit 901-2, No. 57 Chengyi North Street, Software Park Phase III, Jimei District, Xiamen City, Fujian Province, 361000

Patentee after: Xiamen Baoyi Intelligent Technology Co.,Ltd.

Country or region after: China

Address before: 200233 Block A, Room 501, 12 Block 1001 Qinzhou North Road, Xuhui District, Shanghai

Patentee before: Shanghai Moku Data Technology Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right