直接梭代码
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();