千家信息网

网易cetus之读写分离

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、 简介Cetus是由C语言开发的关系型数据库MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实
千家信息网最后更新 2026年11月01日网易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=ON3、安装:执行make install进行安装make install

4、配置文件

cd /data/cetus/cetus_install/conf/cp XXX.json.example XXX.jsoncp XXX.conf.example XXX.confvi XXX.jsonvi XXX.conf本文基于读写分离主要配置两个文件users.json和proxy.conf1、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-switchdaemon = true# Loaded Pluginsplugins=proxy,admin# Proxy Configuration, For eaxmlpe: MySQL master and salve host ip are both 192.0.0.1proxy-address=127.0.0.1:6001proxy-backend-addresses=192.168.142.48:5700proxy-read-only-backend-addresses=192.168.142.49:5700# Admin Configurationadmin-address=127.0.0.1:7001admin-username=adminadmin-password=admin# Backend Configuration, use test db and username createddefault-db=testdefault-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 userpid-file = cetus6001.pidplugin-dir=lib/cetus/pluginslog-file=cetus_6001.loglog-level=debug# support the MGRgroup-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 -h227.0.0.1 -P6001proxy> 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 -h227.0.0.1 -P7001admin> 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环境192.168.142.48为MGR主节点192.168.142.49为MGR从节点写入节点配置proxy-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停止组复制
root@192.168.142.49> 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停止组复制
root@192.168.142.49> STOP GROUP_REPLICATION;

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

192.168.142.48上出现对应写请求进程

四、 一主两从的读写分离测试

部署环境

192.168.142.48为master节点192.168.142.49为slave节点192.168.142.50为slave节点写入节点配置proxy-backend-addresses=192.168.142.48:5700读取节点配置proxy-read-only-backend-addresses=192.168.142.49:5700,192.168.142.50:5700

1、测试读:

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

192.168.142.49上出现对应读请求进程

再次读请求
proxy> select sleep(15) from t1 where a=1;

192.168.142.50上出现对应读请求进程

可以发现读请求是均匀随机到两个读节点

2、测试写:

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

192.168.142.48上出现对应写请求进程


节点 进程 测试 配置 主从 数据 数据库 环境 目录 编译 两个 中间件 文件 源码 端口 应用 网易 优秀 不用 专家 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 金融科技还是互联网 互联网科技资迅 有马互联网科技 广州互联网络科技有限公司 互联网科技缩写 互联网科技公司需要的职位 中盈科技互联网信息有限公司 福州新华互联网科技学校 知乎 团飞科技与伯堂互联网服务平台 互联网对科技的发展 宝灵互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 华夏恒生互联网科技013171 互联网科技大赛获奖感言 烟台灵鸽互联网科技有限公司 长沙渺峰互联网科技有限公司 兰石爱特工业互联网科技分公司 互联网科技博主张洲 黑龙江互联网科技公司 东风日产互联网科技公司叫什么 美国互联网科技 火传媒上海互联网科技 互联网科技大会案例 顺网科技2021年互联网排名 卫星互联网科技股票 科技赋能互联网健康 杭州披云加互联网科技有限公司 银川新华互联网科技学校原画 陕西彩京云互联网科技有限公司 山东亿川互联网科技有限责任公司
0