node.js中实现MySQL的增量备份

有时候,我们需要对生产库进行备份,不要求实时性很高,大概每天一次就行,为性能考虑,只备份最新更改内容,即增量备份即可,这种场景下对DB的设计和备份语句有所要求。

首先要求按源表各字段定义目标表。

源表要有主键,没有主键的要增加一个自增ID来充当主键。

目标表跟源表一样定义主键,如果源表有自增字段,目标表取消该字段自增属性。

我们不仅要考虑新增记录,还要考虑记录的修改。要在源表中包含数据新增或者修改的时间属性字段。这样可以筛选出需要增量备份的记录。

可以采用insert into on duplicate key update方式来执行添加或修改。

示例代码如下:

javascript 复制代码
const getdata = 'select * from demotable where createtime> ? or modifytime> ?';
const incbackupcmd = 'insert into demotable(...) values ? on duplicate key update modifytime=values(modifytime),modifycontent=values(modifycontent)';

function pexecsql(mysqlconn,sqlcmd,args) {
	return new Promise((resolve, reject) => {
		mysqlconn.query(sqlcmd,args,(err,results)=> { 
			if (err) { errlog(jstrerr(err)); reject(err); }
			else { resolve({"rows":results}); }
			}); 
		});
	}
pexecsql(srcpool,getdata,[syncdb.lastsynctime,syncdb.lastsynctime]).then(res=>{
	if (res.rows.length>0) {
		let dataset=res.rows.map(item=>Object.values(item)); 
		pexecsql(destpool,incbackupcmd,[dataset]).then(..
相关推荐
不想写bug呀3 分钟前
MySQL事务介绍
数据库·mysql
m0_7369191011 分钟前
实战:用Python分析某电商销售数据
jvm·数据库·python
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.16 分钟前
双主模式实现HTTP与MySQL高可用
网络协议·mysql·http
cheems952727 分钟前
【MySQL】SQL调优:数据库性能优化(一)
数据库·sql·mysql
Rysxt_28 分钟前
分布式数据库模式结构完整教程
数据库·分布式
远方160938 分钟前
113-Oracle database26ai rpm安装和适配生产
大数据·数据库·sql·oracle·database
MMMMMMMMMMemory39 分钟前
社区版oceanbase报警XA事务悬挂
数据库·oceanbase
OceanBase数据库官方博客42 分钟前
APQO自适应参数化查询优化框架——OceanBase 校企联合研究成果
数据库·oceanbase·分布式数据库
Aloudata43 分钟前
破解监管溯源难题:从表级血缘到算子级血缘的数据治理升级
数据库·数据挖掘·数据治理·元数据·数据血缘
OceanBase数据库官方博客1 小时前
中国联通软研院基于OceanBase引领运营商数智化转型新范式
数据库·oceanbase·分布式数据库