说明:暂不支持egg-mysql动态数据源,用到动态数据源请自行修改。欢迎各位大佬指导。。。

集群配置:

exports.mysql = {
// 单数据库信息配置
client: {
db1: {
// host
host: 'ip1',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: '123456',
// 数据库名
database: 'mydatebase',
},
db2: {
// host
host: 'ip2',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: '123456',
// 数据库名
database: 'mydatebase',
},
db3: {
// host
host: 'ip3',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: '123456',
// 数据库名
database: 'mydatebase',
}
} };

单数据库配置:

exports.mysql = {
// 单数据库信息配置
client: {
// host
host: 'ip1',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: '123456',
// 数据库名
database: 'mydatabase',
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭
agent: false, };

  

1.找到node_modules/ali-rds/lib/client.js,

RDSClient修改如下:

function RDSClient(options) {
if (!(this instanceof RDSClient)) {
return new RDSClient(options);
}
Operator.call(this);
let configObj = JSON.stringify(options);
let len = configObj.match(/\{/g);
if (len.length > 1) {
delete options.connectionLimit;
delete options.database;
let poolCluster = mysql.createPoolCluster({
removeNodeErrorCount: 1,
defaultSelector: "RR" //RR,RANDOM,ORDER
});
for (let node in options) {
poolCluster.add(`${node}`, options[`${node}`]);
}
this.pool = poolCluster.of('*', 'RR');
console.log('<<<<<<----mysql createPoolCluster---->>>>>>>', options, len)
} else {
this.pool = mysql.createPool(options);
console.log('<<<<<<-----mysql createPool--->>>>>>>', options, len)
}
[
'query',
'getConnection',
].forEach(method => {
this.pool[method] = promisify(this.pool[method]);
});
}

 2./node_modules/egg-mysql/lib/mysql.js,修改如下

'use strict';

const assert = require('assert');
const rds = require('ali-rds'); let count = 0; module.exports = app => {
app.addSingleton('mysql', createOneClient);
}; function createOneClient(config, app) {
const client = rds(config);
app.beforeStart(function* () {
const rows = yield client.query('select now() as currentTime;');
const index = count++;
app.coreLogger.info(`[egg-mysql] instance[${index}] status OK, rds currentTime: ${rows[0].currentTime}`);
});
return client;
}

最新文章

  1. Reactjs 入门基础(一)
  2. sqlserver linkserver
  3. Linux: 20 Iptables Examples For New SysAdmins
  4. 泛型IComparer&lt;T&gt;排序
  5. Java Web编程的主要组件技术——Struts的高级功能
  6. akka构建简单分布式应用
  7. 0115——cocoapod的使用
  8. hdu 5130(2014广州 圆与多边形相交模板)
  9. Go 基础 坑
  10. c++入门之初话指针
  11. Qt程序继承QApplication发生崩溃的原因
  12. 发布库到仓库 maven jcenter JitPack MD
  13. 解决 meld 出现 locale.setlocale(locale.LC_ALL,&#39;&#39;) 失败的问题
  14. 我的tensorflow学习1
  15. Java方法、构造方法的重载;创建对象;调用方法
  16. eth0 eth0:1 eth0.1 的区别
  17. Python 文件操作一
  18. VMware Workstation 12 Pro(安装CentOS7)
  19. Mybatis:传入参数方式以及#{}与${}的区别
  20. jmeter--基于http+json接口的功能测试

热门文章

  1. 【C++】fstream文件操作
  2. [localhost-startStop-1]
  3. Linux 安装jdk教程
  4. TypeScript 学习之路
  5. 用tkinter编写一个获取图片资源的GUI工具
  6. Android使用volley发送带参数的post请求
  7. HashMap问题
  8. 前端性能测试lighthouse的使用
  9. Outlook配置文件位置
  10. 为什么用postman