MySQL讀寫分離之One Proxy
一、配置準備
1、Innodb Cluster +Rounter 叢集+Keepalived 配置(略)見上文
2、環境說明:
MySQL Router VIP地址:192.168.2.100
MySQL Router 寫入埠:6446
MySQL Router 讀取埠:6447
One Proxy1 資訊:
IP:192.168.2.109
主機名:rdc-manager1
One Proxy2 資訊:
IP:192.168.2.110
主機名:rdc-manager2
One Proxy VIP 192.168.2.98
二、配置
1、下載One Proxy
wget http://www.onexsoft.com/software/oneproxy-rhel6-linux64-v6.2.0-ga.tar.gz
2、解壓安裝One Proxy
tar -zvxf oneproxy-rhel6-linux64-v6.2.0-ga.tar.gz
mv oneproxy-rhel6-linux64-v6.2.0-ga /usr/local/oneproxy
3、配置oneproxy(rdc-manager1)
cd /usr/local/oneproxy
vim conf/proxy.conf
4、配置oneproxy(rdc-manager2)[oneproxy] event-threads = 1 proxy-license = A2FF461456A67F28,D2F6A5AD70C9042D proxy-httpserver = 0.0.0.0:8080 proxy-security-level = 0 proxy-auto-readonly = 0 proxy-slave-addresses.1 = 192.168.2.100:
[email protected] proxy-master-addresses.2 = 192.168.2.100:[email protected] # proxy-slave-addresses.3 = ... proxy-group-policy = default:read_slave proxy-user-list = default:root/[email protected]_manager remote-address.1 = 192.168.2.110:4041 vip-address = 192.168.2.98/ens33:vip proxy-part-template = conf/template.txt proxy-part-tables = conf/part.txt proxy-sequence-group = default proxy-sequence.1 = seq1 network-blocking = 0
[oneproxy]
event-threads = 1
proxy-license = A2FF461456A67F28,D2F6A5AD70C9042D
proxy-httpserver = 0.0.0.0:8080
proxy-security-level = 0
proxy-auto-readonly = 0
proxy-slave-addresses.1 = 192.168.2.100:[email protected]
proxy-master-addresses.2 = 192.168.2.100:[email protected]
# proxy-slave-addresses.3 = ...
proxy-group-policy = default:read_slave
proxy-database = rdc_manager
proxy-user-list = default:root/[email protected]_manager
remote-address.1 = 192.168.2.109:4041
vip-address = 192.168.2.98/ens33:vip
proxy-part-template = conf/template.txt
proxy-part-tables = conf/part.txt
proxy-sequence-group = default
proxy-sequence.1 = seq1
network-blocking = 0
5、主要引數說明:
envent-threads # 指定執行緒數,預設為8,建議為CPU的processor數量
proxy-httpserver # web監控頁面地址和埠
proxy-security-level #
proxy-slave-addresses.1 #
proxy-master-addresses.2 # 伺服器地址埠號及所屬叢集
proxy-database # 設定oneproxy訪問的預設資料,預設為test庫
proxy-user-list # <user:[email protected]> 注意密碼位置需要使用bin目錄下的mysqlpwd加密
remote-address.1 # <host:port> 設定其它節點的管理介面IP和管理埠
vip-address # <ip/dev> 多節點HA環境下,設定提供服務的VIP地址以及VIP繫結的dev
proxy-group-policy # 設定讀寫分離策略
設定在一個group中,資料庫的讀寫分離策略,
支援一主多從場景的策略
master_only:讀寫都在master
read_failover:讀寫都在master,當master掛掉的時候讀切到slaves
read_slave:寫在master,讀在所有slaves
read_balance:寫在master,讀從master以及slaves走
big_slave:寫以及簡單查詢走master,複雜查詢走slaves
big_balance:寫及簡單查詢走master,複雜查詢走master及slaves
6、修改oneproxy.service指令碼
ONEPROXY_HOME=/usr/local/oneproxy
6、可以使用如下選項來定製應用程式或使用者對資料庫的訪問等級。
- proxy-security-level, 在整個Proxy上設定安全訪問等級。
- proxy-group-security,對某一個MySQL叢集設定安全訪問等級。
- proxy-table-security,對某張表(根據表名)設定安全訪問等級。
對於安全訪問等級,則使用不同的位元位來表示不同的訪問許可權。
- 任何非零值(通常為“1”)將會禁止DDL語句(Create / Alter / Drop / Truncate / Rename)的執行,這是預設行為(proxy-group-security選項的預設值為“1”)。
- 值“2”強制查詢/更新/刪除語句有一個明顯的Where條件,比如“select * from tab”將會被禁止執行,而“select * from tab where 1=1”則會被允許執行。
- 值“4”將會禁止Delete語句的執行,以避免應用程式或使用者誤刪除資料。
- 值“8”將會禁止所有的DDL語句,將變成只讀狀態,可以佈署OneProxy來當作自助查詢系統。
三、測試
1、連線MySQL Router讀寫埠建立相關表
mysql -uroot -p -h 192.168.2.100 -P 6446
CREATE TABLE changwei ( Id int NOT NULL PRIMARY KEY, Name varchar(255) NOT NULL, Age int, City varchar(255) );
2、建立批量插入和查詢指令碼
#!/bin/bash
#
COMMANT="mysql -u root -p123456 -h 192.168.2.98 -P 3307"
#
#read Total_Number <a.log
read Total_Number <a.log
#
COUNT=$2
#
V=$Total_Number
#
sql_delete (){
for ((i=$Total_Number;i>$[Total_Number-COUNT-1];i--))
do
$COMMANT <<EOF 2>/dev/null
SELECT * FROM changwei WHERE Id=$i;
select @@hostname;
DELETE FROM changwei WHERE Id=$i;
EOF
sleep 2
done
echo $i >a.log
}
#
#
#
sql_add (){
for ((i=$[Total_Number - 1];i<$[Total_Number+COUNT];i++))
do
$COMMANT <<EOF 2>/dev/null
SELECT * FROM changwei WHERE Id=$i;
select @@hostname;
INSERT INTO changwei VALUES($V,'test$V',$V,'lizhi');
EOF
V=$[V+1]
sleep 2
done
echo $i >a.log
}
case $1 in
delete)
sql_delete
;;
add)
sql_add
;;
*)
echo "Usage (delete|add)"
;;
esac
3、執行指令碼期間可以隨機停掉主從資料庫,看指令碼是否正常執行
./changwei.sh add 200
四、其它MySQL中介軟體介紹
參考連結
相關推薦
MySQL讀寫分離之One Proxy
一、配置準備1、Innodb Cluster +Rounter 叢集+Keepalived 配置(略)見上文2、環境說明:MySQL Router VIP地址:192.168.2.100MySQL Router 寫入埠:6446MySQL Router 讀取埠:6447One
Mysql 讀寫分離之中間外掛 Atlas
一、簡介 Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的資料中間層專案。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該專案在360公司內部得到了廣泛應用,很多
mysql讀寫分離之springboot整合
springboot、mysql實現讀寫分離 1、首先在springcloud config中配置讀寫資料庫 mysql: datasource: readSize: 1 #讀庫個數 type: com.alibaba.druid.pool.DruidDat
mysql 讀寫分離之主從配置
#mysql主從複製 ###下載mysql安裝包 ###安裝master mysql . 檢查當前機器是否已經安裝mysql yum repolist enabled | grep "mysql.-community." . 解壓mysql壓縮檔
讀寫分離之mysql-proxy的部署
環境前提 master-slave mysql-proxy的原理是使用指令碼語言lua來實現讀寫分離相關的功能 官網上下載mysql-proxy元件 mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz 解壓出來後發現沒有 conf目錄和 log目錄(原來
Mysql讀寫分離方案-MySQL Proxy環境部署記錄
round back 通過 and http 意思 同時 主從 角色 Mysql的讀寫分離可以使用MySQL Proxy和Amoeba實現,其實也可以使用MySQL-MMM實現讀寫分離的自動切換。MySQL Proxy有一項強大功能是實現"讀寫分離",基本原理是讓主數據
java實現mysql數據庫讀寫分離之定義多數據源方式
修改 protect frame auto ret 更新數據 logs cannot initial 該示例是基於spring提供的AbstractRoutingDataSource,實現了一個動態數據源的功能,在spring配置中定義多個數據庫分為主、從數據庫,實現效
企業 - mysql 讀寫分離(proxy)
mysql 讀寫分離(proxy) MySQL ProxyMySQL Proxy是一個處於你的client端和MySQL server端之間的簡單程序,它可以監測、分析或改變它們的通信。它
Mysql讀寫分離--mysql-proxy
mysql 讀寫分離準備前提:1、MySQL的安裝與配置 --省略版本:Server version: 5.6.351.1 系統版本:[root@centos7-67 package]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarchDis
安裝mysql-proxy實現mysql讀寫分離
mysql-proxy 讀寫分離 一. 環境描述操作系統版本:centos 7.2主服務器:192.168.0.72 node2從服務器:192.168.0.73 node3調度服務器MySQL-Proxy:192.168.0.71 node1二. 配置mysql主從2.1 安裝mysqlno
mysql主從複製讀寫分離之——proxysql應用
一、說明ProxySQL是一個開源的MySQL代理伺服器,這意味著它充當MySQL伺服器和訪問其資料庫的應用程式之間的中介。ProxySQL可以通過在多個數據庫伺服器池之間分配流量來提高效能,並且如果一個或多個數據庫伺服器發生故障,還可以通過自動故障切換到備用資料庫來提高可用性。 系統環境:master1:
基於mysql-proxy的MySQL讀寫分離
讀寫分離 mysql的讀寫分離的基本原理是:讓master(主資料庫)來響應事務性操作,讓slave(從資料庫)來響應select非事務性操作,然後再採用主從複製來把master上的事務性操作同步到slave資料庫中。 圖解: 環境: server1 (master):172.25
基於mysql-proxy配置mysql讀寫分離
原理圖 環境說明 已關閉防火牆、selinux; 已二進位制安裝mysql-5.7.22版本; 已配置好mysql主從,配置詳情請參照mysql主從配置; 所用主機所用IP地址如下: IP地址 角色
Linux-centos之mysql讀寫分離的主從複製配置
Linux-centos之mysql讀寫分離的主從複製配置 一:概念 二:為什麼使用讀寫分離 三:操作步驟 一:概念 基本的原理:讓主資料庫處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從
高效能web 架構之 mysql 讀寫分離
高效能web架構主要保證程式的高可用性和高併發性. 高可用就是 保證程式在99.99%的情況下可以使用,不會因為單機節點故障整體崩潰. 高併發說到底也是為了高可用服務.保證在大量併發的時候服務不會宕機. 高效能web架構主要體現在以下方面 資料庫讀寫分離,因為大
JAVA學習之路---mysql讀寫分離
1.mysql讀寫分離,我們需要在資料來源配置檔案中配置多個數據源 2.自定義動態切換資料來源DynamicDataSource,繼承AbstractRoutingDataSource,該類有實現了DataSource介面 然後我們開啟DynamicDataSource繼
MySQL Proxy 實現 MySQL 讀寫分離提高併發負載
工作拓撲: MySQL Proxy有一項強大功能是實現“讀寫分離”,基本原理是讓主資料庫處理寫方面事務,讓從庫處理SELECT查詢。 Amoeba for MySQL是一款優秀的中介軟體軟體,同樣可以實現讀寫分離,負載均衡等功能,並且穩定性也高於MySQL Proxy
MyCat 之路 | 配置 Mysql 讀寫分離+強制走寫節點+根據主從延時的讀寫分離
資料庫讀寫分離對於大型系統或者訪問量很高的網際網路應用來說,是必不可少的一個重要功能。對於MySQL來說,標準的讀寫分離是主從模式,一個寫節點Master後面跟著多個讀節點,讀節點的數量取決於系統的壓力,通常是1-3個讀節點的配置。 Mycat讀寫分離和自動切
構建高效能web之路------mysql讀寫分離實戰
一個完整的mysql讀寫分離環境包括以下幾個部分: 應用程式client database proxy database叢集 在本次實戰中,應用程式client基於c3p0連線後端的database proxy。database proxy負責管理client實際訪問data
amoeba實現mysql讀寫分離+主從復制架構
mysql amoeba 讀寫分離 主從復制一、環境系統:centos6.5mysql版本:mysql5.6master服務器:192.168.1.21slave服務器: 192.168.1.100master寫 slave讀二、實現mysql主從復制在master的/etc/my.cnf中[mysqld]字