eggjs中egg-mysql不支持mysql集群,代码修改为支持集群
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了eggjs中egg-mysql不支持mysql集群,代码修改为支持集群,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2508字,纯文字阅读大概需要4分钟。
内容图文
说明:暂不支持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; }
eggjs中egg-mysql不支持mysql集群,代码修改为支持集群
标签:date ring stat erro mis const 加载 数据库 mat
本文系统来源:https://www.cnblogs.com/qiyc/p/12966913.html
内容总结
以上是互联网集市为您收集整理的eggjs中egg-mysql不支持mysql集群,代码修改为支持集群全部内容,希望文章能够帮你解决eggjs中egg-mysql不支持mysql集群,代码修改为支持集群所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。