1. 程式人生 > >MySQL讀寫分離之One Proxy

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
[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
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-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、可以使用如下選項來定製應用程式或使用者對資料庫的訪問等級。

  1. proxy-security-level, 在整個Proxy上設定安全訪問等級。
  2. proxy-group-security,對某一個MySQL叢集設定安全訪問等級。
  3. proxy-table-security,對某張表(根據表名)設定安全訪問等級。

對於安全訪問等級,則使用不同的位元位來表示不同的訪問許可權。

  1. 任何非零值(通常為“1”)將會禁止DDL語句(Create / Alter / Drop / Truncate / Rename)的執行,這是預設行為(proxy-group-security選項的預設值為“1”)。
  2. 值“2”強制查詢/更新/刪除語句有一個明顯的Where條件,比如“select * from tab”將會被禁止執行,而“select * from tab where 1=1”則會被允許執行。
  3. 值“4”將會禁止Delete語句的執行,以避免應用程式或使用者誤刪除資料。
  4. 值“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-proxyMySQL分離

讀寫分離 mysql的讀寫分離的基本原理是:讓master(主資料庫)來響應事務性操作,讓slave(從資料庫)來響應select非事務性操作,然後再採用主從複製來把master上的事務性操作同步到slave資料庫中。 圖解: 環境: server1 (master):172.25

基於mysql-proxy配置mysql分離

原理圖 環境說明 已關閉防火牆、selinux; 已二進位制安裝mysql-5.7.22版本; 已配置好mysql主從,配置詳情請參照mysql主從配置; 所用主機所用IP地址如下: IP地址 角色

Linux-centosmysql分離的主從複製配置

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]字