网易cetus之读写分离

一、 简介

Cetus是由C语言开发的关系型数据库MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实现了数据库层的水平扩展和高可用。
Cetus由网易乐得专家技术团队领队,经多部门协调合作设计出来的优秀中间件。

具体详细可参考官网:https://github.com/Lede-Inc/cetus
?
本文主要基于读写分离的实践
?

二、 读写分离的搭建

1、安装依赖

yum install cmake gcc glib2-devel flex libevent-devel mysql-devel gperftools-libs -y

2、下载源码

git clone https://github.com/Lede-Inc/cetus.git

3、编译安装

1、在源码主目录下创建独立的目录build,并转到该目录下
mkdir build/
cd build/

2、编译:利用cmake进行编译,指令如下
cmake ../ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/data/cetus/cetus_install -DSIMPLE_PARSER=ON

3、安装:执行make install进行安装
make install

4、配置文件

cd /data/cetus/cetus_install/conf/
cp XXX.json.example XXX.json
cp XXX.conf.example XXX.conf
vi XXX.json
vi XXX.conf

本文基于读写分离主要配置两个文件users.json和proxy.conf
1、cp users.json.example  users.json && vim users.json
{
    "users":    [{
            "user": "root",
            "client_pwd":   "123",
            "server_pwd":   "123456"
        }]
}

2、cp proxy.conf.example proxy.conf && vim proxy.conf
[cetus]
# For mode-switch
daemon = true

# Loaded Plugins
plugins=proxy,admin

# Proxy Configuration, For eaxmlpe: MySQL master and salve host ip are both 192.0.0.1
proxy-address=127.0.0.1:6001
proxy-backend-addresses=192.168.142.48:5700
proxy-read-only-backend-addresses=192.168.142.48:5700
proxy-read-only-backend-addresses=192.168.142.49:5700

# Admin Configuration
admin-address=127.0.0.1:7001
admin-username=admin
admin-password=admin

# Backend Configuration, use test db and username created
default-db=test
default-username=root

# File and Log Configuration, put log in /data and marked by proxy port, /data/cetus needs to be created manually and has rw authority for cetus os user
pid-file = cetus6001.pid
plugin-dir=lib/cetus/plugins
log-file=cetus_6001.log
log-level=debug

# support the MGR
group-replication-mode = 1

5、启动

./bin/cetus --defaults-file=conf/proxy.conf --conf-dir=/data/cetus/cetus_install/conf/

6、命令行登录

1、应用端口
usr/local/mysql-5.7.18/bin/mysql --prompt="proxy> " --comments -uroot -p123 -h127.0.0.1 -P6001
proxy> select version();
+------------+
| version()  |
+------------+
| 5.7.18-log |
+------------+
1 row in set (0.00 sec)

2、管理端口
/usr/local/mysql-5.7.18/bin/mysql --prompt="admin> " --comments -uadmin -padmin -h127.0.0.1 -P7001
admin> select * from backends;
+-------------+--------------------+-------+------+-------------+------+------------+------------+-------------+
| backend_ndx | address            | state | type | slave delay | uuid | idle_conns | used_conns | total_conns |
+-------------+--------------------+-------+------+-------------+------+------------+------------+-------------+
| 1           | 192.168.142.48:5700 | up    | rw   | NULL        | NULL | 2          | 0          | 2           |
| 2           | 192.168.142.49:5700 | up    | ro   | 0           | NULL | 2          | 0          | 2           |
+-------------+--------------------+-------+------+-------------+------+------------+------------+-------------+
2 rows in set (0.00 sec)

?

三、 MGR的读写分离测试

部署环境

MGR环境
193.192.168.142.48为MGR主节点
193.192.168.142.49为MGR从节点

写入节点配置
proxy-backend-addresses=192.168.142.48:5700

读取节点配置
proxy-read-only-backend-addresses=192.168.142.48:5700
proxy-read-only-backend-addresses=192.168.142.49:5700

1、测试读:

1.1、主从组复制正常
proxy> select sleep(15) from t1 where a=1;

192.168.142.49上出现对应读请求进程

1.2、主从组复制异常
192.168.142.49停止组复制
[email protected]> STOP GROUP_REPLICATION;

proxy> select sleep(15) from t1 where a=1;

192.168.142.48上出现对应读请求进程

2、测试写:

2.1、主从组复制正常
proxy> insert into t1 select 6, sleep(15);

192.168.142.48上出现对应写请求进程

2.2、主从组复制异常
192.168.142.49停止组复制
[email protected]> STOP GROUP_REPLICATION;

proxy> insert into t1 select 7, sleep(15);

192.168.142.48上出现对应写请求进程

?
?

原文地址:http://blog.51cto.com/11257187/2126042

时间: 2024-10-07 08:24:12

网易cetus之读写分离的相关文章

030:Cetus中间件和MHA读写分离

一.主机环境 虚拟机配置 CPU 内存 硬盘 OS版本 MySQL版本 MHA版本 Cetus版本 2-core 4G 500G CentOS 7.5.1804 5.7.18 0.57 v1.0.0-44 主机信息 主机名 IP地址 Server_ID MHA Manager MHA Node Cetus 备注 node05 192.168.222.175 部署 部署 部署 监控/MySQL主库的故障转移 node02 192.168.222.172 172 - 部署 - node03 192.

MySQL读写分离(ProxySQL)

MySQL读写分离(ProxySQL) 读写分离原理 读写分离就是用户在发送请求时,请求经过中间件,中间件将请求中的读和写操作分辨出来将读请求发送给后端的从服务器,将写请求发送给后端的主服务器,再又主服务器通过主从复制将数据复制给其他从服务器 常见MySQL中间件 名称 公司 站点地址 mysql-proxy Oracle https://downloads.mysql.com/archives/proxy Atlas Qihoo https://github.com/Qihoo360/Atla

mysq通过ProxySQL实现读写分离

mysq通过ProxySQL实现读写分离 常见的读写分离应用 Oracle:mysql-proxy qihoo:Atlas 美团:dbproxy 网易:cetus amoeba 阿里巴巴:cobar 基于amoeba研发 Mycat:基于cobar实现 ProxySQL ProxySQL:MySQL中间件 版本: 官方版 percona版:percona公司基于官方版本用C++语言开发,性能更优 特点:具有中间件所需的绝大多数功能,包括: 多种方式的读/写分离 定制基于用户.基于schema.基

微服务化的数据库设计与读写分离

数据库永远是应用最关键的一环,同时越到高并发阶段,数据库往往成为瓶颈,如果数据库表和索引不在一开始就进行良好的设计,则后期数据库横向扩展,分库分表都会遇到困难. 对于互联网公司来讲,一般都会使用Mysql数据库. 一.数据库的总体架构 我们首先来看Mysql数据的总体架构如下: 这是一张非常经典的Mysql的系统架构图,通过这个图可以看出Mysql各个部分的功能. 当客户端连接数据库的时候,首先面对的是连接池,用于管理用户的连接,并会做一定的认证和鉴权. 连接了数据库之后,客户端会发送SQL语句

mysql读写分离的三种实现方式

1 程序修改mysql操作类可以参考PHP实现的Mysql读写分离,阿权开始的本项目,以php程序解决此需求.优点:直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配缺点:自己维护更新,增减服务器在代码处理 2 amoeba参考官网:http://amoeba.meidusa.com/优点:直接实现读写分离和负载均衡,不用修改代码,有很灵活的数据解决方案缺点:自己分配账户,和后端数据库权限管理独立,权限处理不够灵活 3 mysql-proxy参考 mysql-proxy

mysql主从复制与读写分离

MySQL主从复制与读写分离 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部

mysql读写分离

mysql读写分离  静态分离:直接将服务器地址写入程序  动态分离:通过代理服务器对数据进行读写操作,由代理服务器判定读写操作,在主服务器上写数据,在          从服务器上读数据.    1.使用mysql-proxy实现读写分离  # ./mysql-proxy --proxy-backend-addresses=10.0.5.150:3306 --proxy-read-only-backend-addresses=10.0.5.151:3306 --proxy-lua-script

测试ReplicaSets读写分离和故障转移

读写分离实现步骤: 从库能够进行查询就更好了,这样可以分担主库的大量的查询请求. 1) 先向主库中插入一条测试数据 rs1:PRIMARY> db.c1.insert({age:30});db.c1.insert({age:30}); WriteResult({ "nInserted" : 1 }) rs1:PRIMARY>  db.c1.find() db.c1.find() { "_id" : ObjectId("5791ef011f4c6

mysql-proxy源码安装及配置mysql读写分离

安装Mysql-proxy关联系统包 libevent libevent-devel glib2 glib2-devel lua 5.1.x lua-devel-5.1.x pkg-config mysql-devel openssl openssl-devel gcc* 2安装MySQL-proxy 0.8.5 下载源码包并解压 在源码包路径下安装 ./configure –prefix=/u01/mysql-proxy make make install 3.配置mysql-proxy.cn