1. 程式人生 > >amoeba 讀寫分離配置

amoeba 讀寫分離配置

amoeba讀寫分離實驗配置

實驗環境

mysql slave : 127.0.0.1  port: 3306
mysql master : 47.104.27.47 port: 3306
amoeba proxy : 127.0.0.1 port:8066
#主從配置的細節參看我的上一篇部落格

dbServer.xml

<?xml version="1.0" encoding="gbk"?>

<!DOCTYPE amoeba:dbServers SYSTEM "dbserver.dtd">
<amoeba:dbServers xmlns:amoeba="http://amoeba.meidusa.com/"
>
<!-- Each dbServer needs to be configured into a Pool, If you need to configure multiple dbServer with load balancing that can be simplified by the following configuration: add attribute with name virtual = "true" in dbServer, but the configuration does not allow the element with name factoryConfig such as 'multiPool' dbServer -->
<dbServer name="abstractServer" abstractive="true"> <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"> <property name="manager">${defaultManager}</property> <property name
="sendBufferSize">
64</property> <property name="receiveBufferSize">128</property> <!-- amoeba內部操作管理mysql時的埠 --> <property name="port">3306</property> <!-- amoeba內部操作管理的資料庫 --> <property name="schema">crm</property> <!-- amoeba內部連線使用者名稱 --> <property name="user">amoeba</property> <!-- amoeba內部連線密碼 --> <property name="password">amoeba</property> </factoryConfig> <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"> <property name="maxActive">500</property> <property name="maxIdle">500</property> <property name="minIdle">10</property> <property name="minEvictableIdleTimeMillis">600000</property> <property name="timeBetweenEvictionRunsMillis">600000</property> <property name="testOnBorrow">true</property> <property name="testOnReturn">true</property> <property name="testWhileIdle">true</property> </poolConfig> </dbServer> <!-- 主資料庫地址 --> <dbServer name="master" parent="abstractServer"> <factoryConfig> <!-- mysql ip --> <property name="ipAddress">47.104.27.47</property> </factoryConfig> </dbServer> <!-- 從資料庫地址 --> <dbServer name="slave" parent="abstractServer"> <factoryConfig> <!-- mysql ip --> <property name="ipAddress">127.0.0.1</property> </factoryConfig> </dbServer> <!-- 配置在master和slave之間做負載均衡 --> <dbServer name="MultiPool" virtual="true"> <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--> <property name="loadbalance">1</property> <!-- Separated by commas,such as: server1,server2,server3 --> <property name="poolNames">master,slave</property> </poolConfig> </dbServer> </amoeba:dbServers>

amoeba.xml

<?xml version="1.0" encoding="gbk"?>

<!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd">
<amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/">
        <proxy>
                <!-- service class must implements com.meidusa.amoeba.service.Service -->
                <service name="Amoeba for Mysql" class="com.meidusa.amoeba.net.ServerableConnectionManager">
                        <!-- amoeba對外連線資料庫時的埠 -->
                        <property name="port">8066</property>
                        <!-- amoeba對外連線資料庫時的IP -->
                        <property name="ipAddress">127.0.0.1</property>
                        <property name="manager">${clientConnectioneManager}</property>
                        <property name="connectionFactory">
                                <bean class="com.meidusa.amoeba.mysql.net.MysqlClientConnectionFactory">
                                        <property name="sendBufferSize">128</property>
                                        <property name="receiveBufferSize">64</property>
                                </bean>
                        </property>
                        <property name="authenticator">
                                <bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">
                                        <!-- amoeba對外連線資料庫時的使用者名稱 -->
                                        <property name="user">root</property>
                                        <!-- amoeba對外連線資料庫時的密碼 -->
                                        <property name="password">123456</property>
                                        <property name="filter">
                                                <bean class="com.meidusa.amoeba.server.IPAccessController">
                                                        <property name="ipFile">${amoeba.home}/conf/access_list.conf</property>
                                                </bean>
                                        </property>
                                </bean>
                        </property>

                </service>
                <!-- server class must implements com.meidusa.amoeba.service.Service -->
                <service name="Amoeba Monitor Server" class="com.meidusa.amoeba.monitor.MonitorServer">
                        <!-- port -->
                        <!--  default value: random number
                        <property name="port">9066</property>
                        -->
                        <!-- bind ipAddress -->
                        <property name="ipAddress">127.0.0.1</property>
                        <property name="daemon">true</property>
                        <property name="manager">${clientConnectioneManager}</property>
                        <property name="connectionFactory">
                                <bean class="com.meidusa.amoeba.monitor.net.MonitorClientConnectionFactory"></bean>
                        </property>

                </service>
                <runtime class="com.meidusa.amoeba.mysql.context.MysqlRuntimeContext">
                        <!-- proxy server net IO Read thread size -->
                        <property name="readThreadPoolSize">20</property>
                        <!-- proxy server client process thread size -->
                        <property name="clientSideThreadPoolSize">30</property>
                        <!-- mysql server data packet process thread size -->
                        <property name="serverSideThreadPoolSize">30</property>
                        <!-- per connection cache prepared statement size  -->
                        <property name="statementCacheSize">500</property>
                        <!-- query timeout( default: 60 second , TimeUnit:second) -->
                        <property name="queryTimeout">60</property>
                </runtime>

        </proxy>
        <!-- 
                Each ConnectionManager will start as thread
                manager responsible for the Connection IO read , Death Detection
        -->
        <connectionManagerList>
                <connectionManager name="clientConnectioneManager" class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper">
                        <property name="subManagerClassName">com.meidusa.amoeba.net.ConnectionManager</property>
                        <!-- 
                          default value is avaliable Processors 
                        <property name="processors">5</property>
                         -->
                </connectionManager>
                <connectionManager name="defaultManager" class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper">
                        <property name="subManagerClassName">com.meidusa.amoeba.net.AuthingableConnectionManager</property>

                        <!-- 
                          default value is avaliable Processors 
                        <property name="processors">5</property>
                         -->
                </connectionManager>
        </connectionManagerList>
        <!-- default using file loader -->
        <dbServerLoader class="com.meidusa.amoeba.context.DBServerConfigFileLoader">
                <property name="configFile">${amoeba.home}/conf/dbServers.xml</property>
        </dbServerLoader>

        <queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
                <property name="ruleLoader">
                        <bean class="com.meidusa.amoeba.route.TableRuleFileLoader">
                                <property name="ruleFile">${amoeba.home}/conf/rule.xml</property>
                                <property name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property>
                        </bean>
                </property>
                <property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property>
                <property name="LRUMapSize">1500</property>
                <!--amoeba預設連線的server-->
                <property name="defaultPool">master</property>
                <!--允許在master上寫資料-->
                <property name="writePool">master</property>
                <!--允許在MultiPool上讀資料-->
                <property name="readPool">MultiPool</property>
                <property name="needParse">true</property>
        </queryRouter>
</amoeba:configuration>

連線amoeba來操作兩個資料庫

mysql -u amoeba -h 127.0.0.1 -P 8066 -p

這裡有很多關於架構的文章

架構師之路

相關推薦

amoeba 分離配置

amoeba讀寫分離實驗配置 實驗環境 mysql slave : 127.0.0.1 port: 3306 mysql master : 47.104.27.47 port: 3306 amoeba proxy : 127.0.0.1 port:80

使用Amoeba實現資料庫的分離配置

一、Amoeba 可以實現負載均衡、讀寫分離、高可用性等需求。  1.1 安裝JDK (1)上傳JDK (2)解壓 [[email protected] java]# tar -xvf jdk-8u51-linux-x64.tar.gz  (3)

windows 下 MySQL分離、主從複製、通過amoeba代理實現分離 配置全過程

配置環境: 1.mysql5.6 2.windowsXP 主從複製配置 主伺服器配置 配置my.ini檔案 查詢my.ini地址 my.ini檔案在MySQL Server 5.6目錄下 我的my.ini路徑: C:\Documents and Settings\All

linux系統Amoeba+MySL主從分離配置 javaweb專案配置連線資料來源

使用amoeba依賴於java環境,首先要安裝jdk、其次是配置資料庫的主從複製,搭建amoeba配置讀寫的資料庫服務 mysql配置主從可參考 http://blog.csdn.net/liqi_q/article/details/78542581 jdk安裝可參考 h

SQL Server Alwayson分離配置

priority list 存在 -c font mar 宋體 data str 標簽:MSSQL/只讀路由 概述 Alwayson相對於數據庫鏡像最大的優勢就是可讀副本,帶來可讀副本的同時還添加了一個新的功能就是配置只讀路由實現讀寫分離;當然這裏的讀寫分離

SQL Server Alwayson分離配置

sql概述 Alwayson相對於數據庫鏡像最大的優勢就是可讀副本,帶來可讀副本的同時還添加了一個新的功能就是配置只讀路由實現讀寫分離;當然這裏的讀寫分離稍微誇張了一點,只能稱之為半讀寫分離吧!看接下來的文章就知道為什麽稱之為半讀寫分離。 db01:192.168.1.22db02:192.168.1.23

基於Mycat的MySQL主從分離配置詳解與示例

welcome 語句 port nodes false max Language sel 檢查 1.mycat二進制包安裝 tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gzcd mycatmv

Centos7 下 mysql 5.7通過 amoeba 分離

客戶 兩臺 bst ins 同步 狀態 文件中 數據庫管理 mct Centos7 下 MYSQL 讀寫分離 mysql介紹 MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統

amoeba分離安裝詳細教程

業務邏輯 tcpclient oracl buffer tco obj sys 監管 2.6 8.12.2 amoeba 8.12.2.1 amoeba安裝 ? 安裝JDK http://download.oracle.com/otn-pub/java/jdk/8u1

Mycat的安裝與分離配置

Mycat: 一個可以用於MySQL讀寫分離和高可用的中介軟體 一個模擬為MySQL Server的超級資料庫 一個能平滑擴充套件支援1000億大表的分散式資料庫系統 一個可管控多種關係資料庫的資料庫路由器 一個平滑從關係資料升級到大資料的應用中介軟體   準備工作: 兩臺mys

yii2的數據庫分離配置

查看 www all local 數據庫同步 主從同步配置 服務器組 timeout lan 簡介 數據庫讀寫分離是在網站遇到性能瓶頸的時候最先考慮優化的步驟,那麽yii2是如何做數據庫讀寫分離的呢?本節教程來給大家普及一下yii2的數據庫讀寫分離配置。 兩個服務器的數據同

mysql分離配置完整過程

前言 在開發專案過程中,當資料庫的資料量較大、並大量較高的時候,所有的讀寫操作都在同一個資料庫可能會導致事務處理較為緩慢; 所以,我們有時候就需要對資料庫進行主從配置,進行讀寫分離,增刪改的時候用主庫,讀取的時候用從庫,這樣也能有效提高資料庫的讀寫效率; 實踐 在主mysq

MYSQL+Amoeba分離

一、部署環境: amoeba:192.168.0.235 masterDB:192.168.0.225 slaveDB:192.168.0.213 以上系統全為centos7 安裝好JDK1.5版本以上的,masterDB和slaveDB配置好主從複製關係。 二

Redis主從分離配置

  環境描述: 主redis:192.168.10.1 6379 從redis:192.168.10.2 6380 一、主從配置 1、將主從redis配置檔案redis.conf中的aemonize no 改為 yes 2、修改從redis配置檔案redis.conf中的port

Django資料庫的分離配置

讀寫分離 其基本原理就是讓主資料庫處理事務性增、改、刪操作(INSERT、UPDATE、DELETE)操作,而從資料庫處理SELECT查詢操作。資料庫複製被用來把事務性操作導致的變更同步到其他從資料庫。以SQL為例,主庫負責寫資料、讀資料。讀庫僅負責讀資料。每次有寫庫操作,同步更新到

mysql主從複製與分離配置詳解

mysql主從複製與讀寫分離配置詳解 當網站達到一定規模時,資料庫最先出現壓力,這時候使用者會明顯感覺到卡頓,其原因是資料庫的寫入操作,影響了查詢的效率。這時可以考慮對資料庫配置主從複製和讀寫分離。設定多臺資料庫伺服器,包括一個主伺服器和n個從伺服器,主伺服器負責寫入資料,從伺服器負

mysql5.7 分離配置筆記

使用虛擬機器vm和ubuntu server 16系統,安裝的時候就已經預設安裝了lamp環境(mysql5.7),安裝完成一個系統後直接關閉虛擬機器,複製當前虛擬機器然後選擇開啟虛擬機器,這樣可以省去很長的系統安裝時間,兩個系統重新啟動,這樣會重新分配不同的IP地址配置遠

基於MYCAT的MYSQL主從與分離配置詳解與示例

第三版_基於Mycat的MySQL主從讀寫分離配置詳解與示例  1、不使用Mycat託管MySQL主從伺服器,簡單使用如下配置:          <dataNodename="dn1" dataHost="localhost1" database="db1"/&

MyCat安裝及分離配置

MyCat資料庫分庫分表中介軟體 國內最活躍的、效能最好的開源資料庫中介軟體!   Mycat主要做讀寫分離,分庫分表 1.6.6.1-release下載地址 wget http://dl.mycat.io/1.6.6.1/Mycat-server-1.6

PostgreSQL 安裝與分離配置

前言         本部落格的內容主要是對PostgreSQL關係型資料庫的安裝與讀寫分離配置進行詳細的介紹,並且介紹了安裝過程與配置過程中遇到的問題。安裝與配置採用的是Centos系統環境,採用rpm手動安裝方式(解決yum不能用問題)。PostgreS