Node.js连接Mysql主从读写分离

el/2023/9/24 22:02:56

直接梭代码

const mysql = require('mysql');var config = {canRetry: true,  //如果true,PoolCluster将在连接失败时尝试重新连接removeNodeErrorCount: 5, //如果连接失败,节点的errorCount增加。当errorCount大于时删除一个节点PoolCluster。(默认值:5)defaultSelector: 'ORDER' //默认选择器 RR:交替选择一个(循环)。  RANDOM:通过随机函数选择节点。 ORDER:选择第一个无条件可用的节点。
};var poolCluster = mysql.createPoolCluster(config);
// 主写从读
var masterConfig = { //主user: 'root',host: 'localhost',password: '123456',database: 'tests'
}
var slaveConfig1 = { //从user: 'root',host: 'localhost',password: '123456',database: 'tests'
}
var slaveConfig2 = { //从user: 'root',host: 'localhost',password: '123456',database: 'tests'
}poolCluster.add('MASTER', masterConfig);
poolCluster.add('SLAVE1', slaveConfig1);
poolCluster.add('SLAVE2', slaveConfig2);console.log(poolCluster);//删除配置
poolCluster.remove('SLAVE1');//根据配置名字
poolCluster.remove('SLAVE*')//根据匹配到的//指定主从
poolCluster.getConnection('MASTER', (err, connection) => {connection.query("select * from users", (err, res, fields) => {console.log(res);})
});//随机选择从
//1
poolCluster.getConnection('SLAVE*', 'RANDOM', (err, connection) => {connection.query("select * from users", (err, res, fields) => {console.log(res);})
});
//2
var pool = poolCluster.of('SLAVE*', 'RANDOM');
pool.getConnection(function (err, connection) {connection.query("select * from users", (err, res, fields) => {if (err)console.log(err)console.log(res);})
});//如果SLAVE1出错 就从SLAVE2获得连接
poolCluster.getConnectiuon('SLAVE*', 'ORDER', function (err, connection) {connection.query("select * from users", (err, res, fields) => {if (err)console.log(err)console.log(res);})
});//关闭连接池集群
poolCluster.end();


http://www.ngui.cc/el/3577144.html

相关文章

Electron(Node.js)下载文件并执行.exe文件

描述一下遇到的问题! 1.因为Electron软件需要使用特殊的文件层级包裹,里面携带一些驱动 固件等等,所以不能直接使用electron-update升级的方式去升级应用程序,所以另辟蹊径。 2.目前使用了VNISEdit 编译环境来编译安装包&#x…

微信小程序:登陆获取用户信息,包括维护3rdSession。(Node.js-Koa)

前两三个月最常见的问题就是登陆模块的问题了。自己也改了好几次登陆的问题,从普通登陆,一直改到维护3rdSession。(token) 普通登陆:用户数据包括appid,secret全部暴露在外,相对来说不安全。 …

微信小程序:高德API之定位。

在开始开发前有几步必要步骤: 1.进入高德地图API官网,登陆,开发支持-微信小程序SDK,控制台,应用管理,创建开发需要的key。注意:服务平台,必须是微信小程序。key用于什么开发就创建什…

微信小程序:高德API-PoI地址搜索

在开始开发前有几步必要步骤: 1.进入高德地图API官网,登陆,开发支持-微信小程序SDK,控制台,应用管理,创建开发需要的key。注意:服务平台,必须是微信小程序。key用于什么开发就创建什…

WebSocket消息推送接收-(微仿滴滴打车业务场景)-(node.js-Vue.js)

年终结尾最后一次更新,在不写一次估计年前就没机会再写了(保证一月一次)。突然想起之前一个朋友问起实时订单推送如何实现。在年尾没啥事自己也比较感兴趣,简单实现了一下。 1.开始 直接梭。安装websocket依赖库。 //安装 webs…

Node.js 搭建邮件发送服务

在日常的登录,注册中经常会使用到邮件服务,这里记录一个邮件发送服务。以163为例 第一步:下载依赖 npm install nodemailer --save第二步:去163网站获取邮件授权码。 第三步:配置configuration文件。 module.export…

PM2 ecosystem 服务器自动化部署

一:准备工作 1.1 :将项目上传至代码管理库(github,gitlab,bitbucket,等) 1.2 :Windows 和 服务器 都安装SSH,Git 工具。 二:开始 2.1 本地生成ssh key连接服务器 //根据邮箱生成ssh key ss…

Socket.io 聊天室(代码已开源)

1.启发 1.1 最近得闲有空玩一下Socket.io跟RabbitMQ所以造个小项目自己玩玩。 1.2 当然不是正式项目,个人复习 测试所用。设计部分有的地方也不太合理,UI也是随便弄的。 1.3 有个BUG,这个问题我只在Web端遇到过。描述:Web连…

http预请求,请求两次

在有很多情况下,当我们在js里面调用一次ajax请求时,在浏览器那边却会查询到两次请求,第一次的Request Method参数是OPTIONS,还有一次就是我们真正的请求,比如get或是post请求方式 查阅相关的资料之后发现,这是浏览器对复杂跨域请求的一种处理方式,在真正发送请求之前,会先进行…

三元表达式三个条件校验

表达式1 ? 表达式1为true时的结果 : ( 表达式2 ? 表达式2为true时的结果 : 全都是false的结果 ) 例如: