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