eggjs中egg-mysql不支持mysql集群,代码修改为支持集群
说明:暂不支持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,
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集群,代码修改为支持集群的更多相关文章
- Mysql 监控 支持 mysql 多实例自动发现以及主从监控
在[/usr/local/zabbix327/bin] 目录下新建python文件,并增加执行权限,如下: #!/usr/bin/env /usr/bin/python # _*_ coding:ut ...
- GitHub下载的 Git Shell中出现的字符支持警告,将字体修改为新宋体即可
——解决办法: 将命令行字体修改为新宋体就可以了. 文章引用:http://www.cnblogs.com/veryinf/archive/2012/10/26/2740899.html
- oracle数据库不支持mysql中limit功能
oracle数据库不支持mysql中limit功能,但可以通过rownum来限制返回的结果集的行数,rownum并不是用户添加的字段,而是oracle系统自动添加的. (1)使查询结果最多返回前10行 ...
- php过滤文字中的表情字符和mysql服务端对emoji的支持
1.过滤emoji表情的原因 在我们的项目开发中,emoji表情是个麻烦的东西,即使我们可以能存储,也不一定能完美显示,因为它的更新速度很快:在iOS以外的平台上,例如PC或者android.如果你需 ...
- mysql数据库中,查看当前支持的字符集有哪些?字符集默认的collation的名字?
需求描述: mysql数据库支持很多字符集,那么如何查看当前的mysql版本中支持的或者说可用的字符集有什么呢? 操作过程: 1.使用show character set的方式获取当前版本中支持的字符 ...
- Visual Studio2015 、2017中如何支持MYSQL数据源
原文:Visual Studio2015 .2017中如何支持MYSQL数据源 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/ght886/arti ...
- 【原】基于 HAproxy 1.6.3 Keeplived 在 Centos 7 中实现mysql mariadb galera cluster 集群分发读写 —— 上篇
前言 有一段时间没有写blogs,乘着周末开始整理下haproxy + keeplived 实现 mysql mariadb galera cluster 集群访问环境的搭建工作. 本文集中讲hapr ...
- 【mysql】高可用集群之MMM
一.复制的常用拓扑结构 复制的体系结构有以下一些基本原则: (1) 每个slave只能有一个master: (2) 每个slave只能有一个唯一的服务器ID: (3) 每个maste ...
- 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡
preface Mysql+drbd+heart能够实现Mysql的高可用了,master出现故障的时候能够快速切换.在现在的业务情况下,读操作多,写操作少的情况下,一台DB server明显扛不住, ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
随机推荐
- requests库获取指定关键词的图片,并保存到本地
var code = "45f4267f-9476-44ca-ac68-6d32aad2d4e1" 源码地址:https://gitee.com/myrensheng/data_a ...
- [转载]Zookeeper全解析——Paxos作为灵魂
Paxos描述了这样一个场景,有一个叫做Paxos的小岛(Island)上面住了一批居民,岛上面所有的事情由一些特殊的人决定,他们叫做议员(Senator).议员的总数(Senator Count)是 ...
- vue的增删改查(简单版)
<template> <div class="about"> <div> <input type="te ...
- 》》》Java利用aspose-words将word文档转换成pdf(破解 无水印)
参考转载:Java利用aspose-words将word文档转换成pdf(破解 无水印) (bbsmax.com) 1.引入 aspose.words 包2.添加解水印 license.xml3.写业 ...
- 无锡哲讯谈食品行业如何利用SAP信息化方案实现数字化转型?
随着人们对生活品质的提高,大家对食品安全问题越来越重视.食品企业如果缺乏相应的监管和追溯,很容易陷入困难的被动局面.SAP系统可以对食品加工企业供应链.生产销售.食品质量控制等环节的信息化管控,降低食 ...
- SwiftUI笔记
@Published 标记对象定义的属性变更可以被监听,当对应字段变化时会触发对象 objectWillChange 通知,订阅了该属性的View也会收到值改变的通知 /// A type that ...
- python 的多线程
创建一个多线程 from threading import Thread, ThreadError import time def task_01(): print("开始发送邮件" ...
- 雪花算法生成ID重复问题
转载自: https://www.jianshu.com/p/71286e89e0c5
- 项目开发中的ORM框架使用mybatis还是mybatis-plus
mybatis支持xml配置文件和注解 mybaits-plus也支持xml配置文件和注解,多了baseMapper,将基础的CRUD操作单独拿出来进行了封装 mybatis是一款优秀的持久层框架,它 ...
- 把linux云服务器上的文件放到本地电脑windows上-----secureCRT
1.本地电脑需要安装SecureCRT 2.在secureCRT上登录云端服务器,右键点击云端服务器上方的ip地址,选择"connect SFTP session" 3.在SFTP ...