MySQL cetus 中介軟體 讀寫分離

moscot發表於2020-04-10

首先需要確保mysql 的主從同步成功。

CentOS 系統可以通過以下命令安裝依賴包:

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

克隆獲取原始碼:

git clone https://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 .. // 退到上一級目錄
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 日誌 只會出現在從伺服器。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章