mysql cluster proxy_GitHub - freedaxin/maya: a mysql cluster proxy powered by node.js

maya

安装node.js

依赖node v0.8最新版,暂不支持更高的node版本,此处以0.8.7版本为例。

root安装(官方要求python2.5.2以上)

tar -zxf node-v0.8.7.tar.gz

cd node-v0.8.7

./configure --prefix=/usr/local/sinasrv2/

make

make install

在root环境变量中增加如下两项:

echo 'export NODE_PATH=/usr/local/sinasrv2:/usr/local/sinasrv2/lib/node_modules' >> ~/.bash_profile && echo 'export PATH=$PATH:/usr/local/sinasrv2/bin' >> ~/.bash_profile && source ~/.bash_profile

安装maya

root安装,进入maya主目录执行:

sh install.sh

程序安装在“/usr/local/sina_maya”并在“/etc/init.d/”下增加“/usr/local/sina_maya/bin/sina_maya“的软链用于启动服务

参数配置示例与说明

全局配置(global_conf.json):

{

#客户端连接端口

"client_port" : 15050,

#管理端口,对外输出服务状态

"management_port": 15051,

#客户端连接最大空闲时间,秒

"max_idle_time" : 800,

#允许连接的ip段,以%作为通配符,空表示不限制

"allowed_ip": [],

#拒绝的ip,优先级高于allowed_ip,配置规则与allowed_ip相同

"denied_ip": [],

#多进程配置

"cluster" : {

"workers" : 8

}

}

数据库集群配置(db_cluster.json)

{

#用于客户端与maya之间鉴权的用户名和密码

"maya_user": "mayauser",

"maya_pass": "mayapass",

#数据库用户名、密码、db

"mysql_user": "testuser",

"mysql_passwd": "testpass",

"mysql_db_name": "test",

#最大可禁用slave比例,与从库数量相乘取整,默认0,即不禁用

"max_disabled_slaves_percent": "50%",

#服务端连接空闲超时,应与mysql服务端设置相同,默认5秒

"server_conn_wait_timeout": 30,

#服务端连接池最大连接数,默认2048

"server_conn_pool_size": 2048,

#单个客户端ip最大允许连接数,默认不限制

"client_max_conn_num": 400,

#数据库连接初始化命令,多个用半角”, ”分隔

"server_init_commands": [

"SET NAMES UTF8"

],

#数据库监控参数

"monitor": {

// 检测间隔,单位:秒

"detect_interval_seconds": 5,

// 异常最大持续时间,单位:秒,超过则确认异常,执行禁用等处理

"conn_fail_max_seconds": 9,

// 从库最大延迟时间,单位:秒

"slave_max_delay_seconds": 400,

// 数据库最大连接数

"server_max_connections": 1000

},

# db group数组

"db_groups": [

{

#db group名称,唯一,不唯一时报错

"name": "group_0",

#数据库db name,优先级高于全局配置,未配置时默认使用全局

"mysql_db_name ": "test0",

"dbs": [

{

"host": "127.0.0.1",

"port": 3306,

#主从标记,1表示主库,0表示从库,默认为0

"is_master": 1

},

{

"host": "127.0.0.2",

"port": 3306,

#从库权重,默认为1

"weight": 1,

#数据库db name,优先级高于全局配置

"mysql_db_name ": “db0”,

#监控禁用开关,0表示可禁用,1表示不禁用,默认为0

“disable_monitor”: 0

},

{

"host": "127.0.0.3",

"port": 3306,

"weight": 1

}

]

},

{

"name": "group_1",

"dbs": [

{

"host": "127.0.0.5",

"port": 3306,

"is_master": 1

},

{

"host": "127.0.0.6",

"port": 3306,

"weight": 1

}

]

}

],

#虚拟表

"virtual_table": {

//用户访问的虚拟表名

"virtual_table_name": "my_table",

//虚拟表rowkey

"rowkey": "id",

//按db分区个数,1表示不按db分区,默认为1

"db_partition_num": 8,

//按table分区个数,1表示不按table分区,默认为1

"table_partition_num": 64,

//分片表分配到数据库实例的依据,”table”或”db”

"assign_db_instance_by": "table",

//分区表名称,%部分分别用db_partition_num、table_partition_num

//按指定格式填充,支持c语言格式化控制

//db或table分区数为1时不填充

"partition_table_name_pattern": "db_%.02d.my_table_%.03x",

"partitions": [

{

//分区所属db group

"db_group": "group_0",

//本db group包含的db分区范围,

//不按db分区时可省略

//中括号表示闭区间

"db_range": "[0..3]",

//本db group包含的table分区范围

//不按table分区时可省略

"table_range": "[0..31]"

},

{

"db_group": "group_1",

"db_range": "[4..7]",

"table_range": "[32..63]"

}

]

}

}

运行方法

启动:

/usr/local/sina_maya/bin/sina_maya start

停止:

/usr/local/sina_maya/bin/sina_maya stop

状态查看:

/usr/local/sina_maya/bin/sina_maya status

重载配置:

/usr/local/sina_maya/bin/sina_maya reload

重启:

/usr/local/sina_maya/bin/sina_maya restart

检查配置文件

/usr/local/sina_maya/bin/sina_maya check_conf

注意事项:

要求修改系统默认文件句柄数限制(ulimit -n),不小于20万

LICENSE

MIT LICENSE

ORIGINAL AUTHOR

Wang Daxin (freedaxin@github)

with awesome contributions from:

Han Fang

Cui Guilin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见HTTP状态码(200、301、302、500等)解说

对网站管理工作者来说有个词不陌生,HTTP状态码,它是用以表示网页服务器HTTP响应状态的3位数字代码。状态码的第一个数字代表了响应的五种状态之一。 1XX系列:指定客户端应相应的某些动作,代表请求已被接受,需要继续处…

linux c语言编写聊天室mysql_Linux平台上用C语言实现与MySQL数据库的连接

测试代码如下://查询操作#include #include #include #define HOST "localhost"#define USERNAME "用户名"#define PASSWORD "密码"#define DATABASE "PublicResourcesDB"int main(void){MYSQL mysql;MYSQL_ROW row;MYSQL_…

java开发安装mysql_从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL

1 下载安装包1.1 压缩包[外链图片转存失败(img-oesO8K09-1566652568838)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw "点击并拖拽以移动")]1.2 安装包使用安装包安装则无需后续步骤[外链图片转存失败(img-Y3x59iO4-15666525…

java获取json中某个字段

import com.alibaba.fastjson.JSONObject; public class JsonTest {public static void main(String[] args) {// json串(以自己的为准)String str "{"id":"75","shoppingCartItemList":[{"id":"407","num"…

abap数据类型转换_ABAP 中JSON格式的转换与解析

正文RT,JSON是当今十分流行的一种轻量数据格式,广泛地应用于各种数据交换场景中。本文会介绍一种比较简单的将ABAP中的数据转换为JSON格式的方法。(如果你是因为引号的问题搜索到了这篇文章,请直接拉到底部“其它部分”)序列化使用cl_trex_js…

java解析多层嵌套json字符串

java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;public class TestJSON {/*** JSON实际上也是键值对("…

JVM中的五大内存区域划分详解

一、快速扫盲 1. JVM是什么 JVM是Java Virtual Machine的缩写,即咱们经常提到的Java虚拟机。虚拟机是一种抽象化的计算机,有着自己完善的硬件架构,如处理器、堆栈等,具体有什么咱们不做了解。目前我们只需要知道想要运行Java文件…

编写并调试一个单道处理系统的作业调度模拟程序_操作系统系列(2):操作系统发展历史...

用户需求的提升和硬件技术的发展,是操作系统发展的必要条件和基础。计算机的发展经历了4个阶段,电子管计算机(1945-1955)、晶体管计算机(1955-1965)、集成电路计算机(1965-1980)、大规模集成电路计算机(1980-至今)。因此,伴随着计算机硬件的更…

方法区元空间实现之jdk7和8字符串常量池、运行时常量池、静态变量到底在哪?

方法区(落地实现jdk7永久代,jdk8元空间),元空间并不在虚拟机中,而是使用本地内存,它和堆在逻辑上是连续的,但在物理上是不连续的,所以也叫非堆。 1、此区域是线程共享的。储存已加载…

mysql force index报错_新特性解读 | MySQL 8.0 索引特性4-不可见索引

MySQL 8.0 实现了索引的隐藏属性。当然这个特性很多商业数据库早就有了,比如ORACLE,在11g中就实现了。我来介绍下这个小特性。介绍INVISIBLE INDEX,不可见索引或者叫隐藏索引。就是对优化器不可见,查询的时候优化器不会把她作为备…

关于Java成员变量、局部变量、方法,在JVM的内存空间分配

1、变量类型 2、类的结构 下面是一般类的结构 //类体属性状态(即:类体变量方法) public class 类名{ //类名最好首字母大写的英文String name; //在方法体外,所以是成员变量//下面是一个main方法(程序入口的主方法)public static…

python内置函数详解总结篇_Python内置函数详解——总结篇

数学运算(7个)类型转换(24个)序列操作(8个)对象操作(7个)反射操作(8个)变量操作(2个)交互操作(2个)文件操作(1个)编译执行(4个)装饰器(3个)数学运算abs:求数值的绝对值>>> abs(-2)2divmod:返回两个数值的商和余数>>> divmod(5,2)(2, 1…

Java多线程中static变量的使用

Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果? Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果?仅仅是多耗资源还是会引发异常? 不会耗资源 也不会引发异常 而是程序出现逻辑错误,…

scanf 接收 空格 输入_如何允许使用scanf输入空格?

人们(尤其是初学者)不应该使用scanf(“%s”)或gets()或任何其他没有缓冲区溢出保护的函数,除非你确定输入总是一个特定的格式甚至不是)。记住,scanf代表“扫描格式化”,并且珍贵的格式比用户输入的数据少。如果您对输入数据格式具…

Java并发——线程安全

1、线程安全 多个线程对同一个共享变量进行读写操作时可能产生不可预见的结果,这就是线程安全问题。 故线程安全的核心点就是共享变量,只有在共享变量的情况下才会有线程安全问题。这里说的共享变量,是指多个线程都能访问的变量&#xff0c…

vue 功能模块后台可配置_Github14k的Springboot后台管理系统

关注爱编码、挖掘优秀项目。本期给各位带来的一款优质的后台管理系统:EL-ADMIN 后台管理系统。简介该项目由大神elunez一手大打造。它是一个基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统。项目地址&am…

hibernate mysql 时间_使用Hibernate和MySQL创建时间戳和最后更新时间戳

慕斯卡3215842利用本文中的资源以及从不同来源获得的左右信息,我提出了这个优雅的解决方案,创建了以下抽象类import java.util.Date;import javax.persistence.Column;import javax.persistence.MappedSuperclass;import javax.persistence.PrePersist;i…

Java中保证线程安全的三板斧

前言 现在,如果要使用 Java 实现一段线程安全的代码,大致有 synchronized 、 java.util.concurrent 包等手段。虽然大家都会用,但却不一定真正清楚其在 JVM 层面上的实现原理,因此,笔者在查阅了一些资料后&#xff0c…

mysql oa数据库设计_OA项目1:环境搭建之数据库创建与环境添加

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明。谢谢。一 指定数据库:Mysqldatabase:oa建库语句:crea…

java 线程安全的原因_java的多线程:java安全问题产生的原因与JMM的关系

一、多线程产生安全问题 1、Java内存模型 共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见。 从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系: 线程之间的共享变量存储在主内存…