千家信息网

网易cetus之读写分离

发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,一、 简介Cetus是由C语言开发的关系型数据库MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实
千家信息网最后更新 2024年10月17日网易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安全错误 数据库的锁怎样保障安全 21世纪科技发展互联网 如何创建饥荒专属服务器 非系统用户操作数据库 广州新识代网络技术公司 数据库设计人事档案管理系统 深泽县网络安全广告征集活动 紧绷网络安全可以用的古诗词 数据库连接池支持LRU 病房号放在哪数据库 暮色森林服务器图片 阿克苏网络技术近期价格 百色市软件开发招聘 网络安全你我他书信作文400字 川大网络安全录取名单 关于网络安全的小问答 山西大学生网络安全专业怎么样 关于网络安全教育的三句半 服务器补单 网络安全哪个方向好入门 中央家庭教育与网络安全视频 普陀区营销软件开发管理方法 易语言数据库读取不全 网络安全系统集成与建设 阿克苏网络技术近期价格 阿里云服务器映射外网 网络安全黄埔军校 济南联想服务器代理哪个系列好 北京易捷报宝网络技术 怎么改网页上的数据库 数据库表的创建与维护习题
0