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 协议》,转载必须注明作者和本文链接