MySQL cetus 中间件 读写分离

首先需要确保mysql 的主从同步成功。

CentOS 系统可以通过以下命令安装依赖包:

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

克隆获取源码:

git clone github.com/Lede-inc/cetus.git

创建编译目录:在源码主目录下创建独立的目录build,并转到该目录下:

cd cetus/
mkdir build/
cd build/

###编译:利用cmake进行编译,指令如下:

读写分离版本:
CFLAGS=’-g -Wpointer-to-int-cast’ cmake ../ -DCMAKE_BUILD_TYPE=Debug ->DCMAKE_INSTALL_PREFIX=/home/user/cetus_install -DSIMPLE_PARSER=ON

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

make install

如果提示缺少什么.20文件,就需要建立相应的软连接到指定目录下

配置:Cetus运行前还需要编辑配置文件

d /home/user/cetus_install/conf/
cp XXX.json.example XXX.json
cp XXX.conf.example XXX.conf
vi XXX.json
vi XXX.conf

配置proxy.conf

proxy-address = 0.0.0.0:6001 //代理地址端口
proxy-backend-addresses=127.0.0.1:3306 //代理后台地址 即 读写分离主机地址
proxy-read-only-backend-addresses=114.55.106.24:3306 //代理只读后台地址 即 读写分离从机地址
admin-address=0.0.0.0:7001 后台命令行 登录地址端口

[cetus]
# For mode-switch
daemon = true

# Loaded Plugins
plugins=proxy,admin

# Defines the number of worker processes.
worker-processes=1

# Proxy Configuration, For example: MySQL master and salve host ip are both 192.0.0.1
proxy-address=0.0.0.0:6001
proxy-backend-addresses=127.0.0.1:3306
proxy-read-only-backend-addresses=114.55.106.24:3306

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

# Backend Configuration, use test db and username created
default-db=xcd_p_fg_test
default-username=dbadmin
default-pool-size=100
max-resp-size=10485760
long-query-time=100

# 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
max-open-files = 65536
pid-file = cetus6001.pid
plugin-dir=lib/cetus/plugins
log-file=/data/cetus/cetus_6001.log
log-level=debug

# Check salve delay
disable-threads=false
check-slave-delay=true
slave-delay-down=5
slave-delay-recover=1

# For trouble
keepalive=true
verbose-shutdown=true
log-backtrace-on-crash=true

# For performance
enable-tcp-stream=true
enable-fast-stream=true

# For MGR
group-replication-mode=0

配置users.json

user 此为登录数据库用户名 主从同步中的主从数据库用户名需要一致。
client_pwd cetus客户端登录密码 最后和server_pwd 设置一致,避免其他问题。
server_pwd 此为登录数据库密码 主从同步中的主从数据库密码需要一致。

{
        "users":        [{
                        "user": "***",
                        "client_pwd":   "***",
                        "server_pwd":   "***"
                }]
}

创建心跳库心跳表 并保证可以实现主从同步

create database proxy_heart_beat;use proxy_heart_beat;
CREATE TABLE `tb_heartbeat` (  
`p_id` varchar(128) NOT NULL,  
`p_ts` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  PRIMARY KEY (`p_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

启动数据库

chmod 0660 proxy.conf //必须要设置下权限,不然无法运行
cd .. // 退到上一级目录
sudo bin/cetus –defaults-file=conf/proxy.conf –conf-dir=/home/user/cetus_install/conf///执行命令 两个减号

查看状态 查看配置的6001和7001 端口是否开启

netstat -ntlp

查看日志 查看主从服务器是否都启动成功

cd /data/cetus/
vi cetus_6001.log

尝试客户端连接 使用navcat连接 IP 端口 6001 用户密码为users.json配置

开启mysql 查询日志设置:主从都要设置

set global general_log =on;
set global log_output=’table’;设置日志输出方式为表
select * from mysql.general_log 查看操作日志

验证是否实现读写分离 在主库实现update ,主从都将会有update日志,select 日志 只会出现在从服务器。

登录后台管理

mysql –prompt=”admin> “ –comments -h127.0.0.1 -P7001 -uadmin -padmin

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!