一个主从库主键同步的方案(未完)

主库在远程服务器上的mysql,主键id是自增的,同时有记录中的其它字段(如parent)需要以这个ID关联。

现在,要做一个桌面版的,方便离线的时候使用,所以,没法直接操作主库上的数据,使用本地sqlite的数据库,就要在主从库间同步这个数据。如果从库也自增就会与主库ID冲突。

方案一:主从库都使用时间戳作ID,并且到毫秒级,其假设是用户不会在同一时间点同时在web端和桌面端操作。

javascript 复制代码
 const timestampId = Math.floor(Date.now() / 1000);

因为要到毫秒级,mysql的主键字段要使用

sqlit要使用。

方案二:

在表中除主键字段外,增加一个从键字段,在桌面端数据新增时,按桌面端的规则生成主键ID,并在外键上使用的这个ID,而从键也备份主键的值。

同步到主库时,

(1)使用INSERT语句插入,包括从键,但不包括主键,让主库自增ID,

(2)然后作一个UPDATE操作,以从键的值作关联查询,把外键中值替换为主库的ID,实现了ID替换。

(3)把这些更新的主键ID值再更新回从库

同步到从库时,则是连主键一起INSERT到从库中。

具体是否可行,还待进一步测试

相关推荐
代码雕刻家几秒前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE1 分钟前
开启mysql的binlog日志
数据库·mysql
yejqvow1210 分钟前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO15 分钟前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_7436239218 分钟前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python
pele27 分钟前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python
HHHHH1010HHHHH28 分钟前
Redis怎样判断节点是否主观下线_哨兵基于down-after-milliseconds参数的心跳超时判定
jvm·数据库·python
Yushan Bai1 小时前
通过oracle 自动优化任务dbms_sqltune进行SQL优化的实战
数据库·oracle
qq_654366981 小时前
CSS如何处理@import样式表的嵌套加载_评估递归对加载的影响
jvm·数据库·python