php网站制作实例教程,网站框架图片,上海室内设计工作室排名,phpcms v9怎么做网站应用开发一般情况只会使用一个DB视图(多DB集群同步复制的可以视为一个DB#xff0c;它们之间的数据同步策略可以由DBA来配置#xff0c;跟开发人员无关)#xff0c;如果需要访问其他应用的DB#xff0c;不建议直接连到DB操作#xff0c;而是通过封装好的web服务接口来访问…应用开发一般情况只会使用一个DB视图(多DB集群同步复制的可以视为一个DB它们之间的数据同步策略可以由DBA来配置跟开发人员无关)如果需要访问其他应用的DB不建议直接连到DB操作而是通过封装好的web服务接口来访问。 那有没有就是要直接用不同服务器上的DB的场景呢这个不好说不过技术上也没有什么问题像nodejs本来就是可以直接连接不同服务器上的数据库甚至是异构的也没有问题比如一个是mysql,另一个是mariadb跨数据库的数据复制抽取可以这样弄下。下面是例程
var jargs require(./argspw.json); //json配置文件
require(bytenode);
const mycrypt require(./mycrypt.jsc); //自己写的加解密算法口令密文存放于json配置文件需要解密const mysql require(mysql);
const remotepool mysql.createPool({host:jargs.mysqlip1,user:jargs.mysqluser1,password:mycrypt.decrypt(jargs.mysqlpw1),port:jargs.mysqlport1,database:jargs.mysqldatabase1});
const localpool mysql.createPool({host:jargs.mysqlip2,user:jargs.mysqluser2,password:mycrypt.decrypt(jargs.mysqlpw2),port:jargs.mysqlport2,database:jargs.mysqldatabase2});const getfiles select * FROM locfiles where recvtime current_date() ); //当天新记录
const addfiles insert into locfilesc(reqid,filename,filesize,recvtime) values ? ;remotepool.getConnection((errmpgc, remoteconn) { if (errmpgc) { console.log(建立连接失败); } else {remoteconn.query(getfiles,(errq1,results1) { if (errq1) { console.log(SQL执行失败); console.log(errq1); }else { console.log(SQL执行成功); console.log(JSON.stringify(results1)); let tfds[]results1.forEach(item{tfds.push(Object.values(item))});localpool.getConnection((errmpgc, localconn) { if (errmpgc) { console.log(建立连接失败); } else {localconn.query(addfiles,[tfds],(errq2,results2) { if (errq2) { console.log(SQL执行失败); console.log(errq2); }else { console.log(SQL执行成功); console.log(JSON.stringify(results2)); }})localconn.release();}})}})remoteconn.release();}});
开发一般还可以尝试使用mysql的FEDERATED引擎开启FEDERATED引擎后在远程DB中创建连接用户并授权库表权限然后在本地DB中使用FEDERATED引擎连接远程DB创建表之后就可以像访问本地DB库表一样操作远程DB的库表。 另外MySQL官方工具Workbench中Schema Transfer Wizard可以在不同服务器之间进行库表迁移主要是db运维人员操作。