数据库的实时同步和异步同步

一、背景

网络系统的数据集群由5台数据库组成,其中:有1台数据库负责写入,4台数据库负责读取。

二、主要难题

负责写入数据库的最新记录,需要用网络来更新到其他的4台读取数据库。

三、数据同步一致的时机

(一)立即同步

每次有数据更新,就立刻循环写入每个读取数据库。

缺点:可能会阻塞在网络写入和网络读取阶段。

可以开启4个线程,异步更新。

写入频繁,其他的读取数据库也会更新频繁;最终是所有的数据都要频繁的更新。

(二)队列缓冲同步

在2秒内同步,留一些缓冲时间,减少瞬间的任务量。

主要做法:

用一个队列来缓冲。

当写数据库有更新时,把SQL语句作为任务入队给队列。

用一个线程匀速的出队任务,同步给4个数据库。

四、数据库同步时,传递什么内容

注意:避免数据库写入二进制大文件和长文本,防止耗时太长,影响体验。

(一)传递原始的SQL语句

把SQL语句原样发给其他4个数据库执行。

(二)传递日志增量数据

对于MySQL数据库来说,有redo的bin二进制日志数据,可以传给其他负责查询的数据库。

(三)数据库文件备份

把最新的数据库修改部分,传给其他查询数据库,添加到旧文件的后面,或者覆盖内容,实现内容更新。

难点:找到内容更新的记录。

相关推荐
天桥下的卖艺者15 小时前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
隔窗听雨眠16 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
数据库小学妹16 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
神龙天舞200117 小时前
MySQL 备库为什么会延迟好几个小时
android·数据库·mysql
丙氨酸長鏈18 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
独行侠影a19 小时前
APScheduler+Redis 分布式定时任务:解决多实例任务重复执行
数据库·redis·分布式
传说故事20 小时前
数据库中一些常用英文单词含义
数据库·oracle
夏贰四20 小时前
中小企业搭建业务中台如何控成本?业务中台轻量化落地分几步实施?
数据库·业务中台
林焱RPA20 小时前
影刀RPA200篇纪念版:最实用的20个自动化场景大盘点
数据库
名字还没想好☜20 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine