新网站提交百度收录,肃宁网站建设,网站部署 模板,智慧团建pc网页版有时候#xff0c;我们需要对生产库进行备份#xff0c;不要求实时性很高#xff0c;大概每天一次就行#xff0c;为性能考虑#xff0c;只备份最新更改内容#xff0c;即增量备份即可#xff0c;这种场景下对DB的设计和备份语句有所要求。 首先要求按源表各字段定义目标…有时候我们需要对生产库进行备份不要求实时性很高大概每天一次就行为性能考虑只备份最新更改内容即增量备份即可这种场景下对DB的设计和备份语句有所要求。 首先要求按源表各字段定义目标表。 源表要有主键没有主键的要增加一个自增ID来充当主键。 目标表跟源表一样定义主键如果源表有自增字段目标表取消该字段自增属性。 我们不仅要考虑新增记录还要考虑记录的修改。要在源表中包含数据新增或者修改的时间属性字段。这样可以筛选出需要增量备份的记录。 可以采用insert into on duplicate key update方式来执行添加或修改。 示例代码如下
const getdata select * from demotable where createtime ? or modifytime ?;
const incbackupcmd insert into demotable(...) values ? on duplicate key update modifytimevalues(modifytime),modifycontentvalues(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.length0) {let datasetres.rows.map(itemObject.values(item)); pexecsql(destpool,incbackupcmd,[dataset]).then(..