程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 如何使用Amoeba For Mysql

如何使用Amoeba For Mysql

編輯:關於MYSQL數據庫
Amoeba For MySQL

Amoeba For Mysql 是 Amoeba項目的子項目。要使用Amoeba For MySQL您必須確保您已符合所有先決條件:

先決條件:

  • Amoeba 框架是基於JDK1.5開發的,采用了JDK1.5的特性。
  • 支持Mysql協議版本10(MySQL 4.1以後的版本)。
  • 您的網絡環境至少運行有一個MySQL 4.1以上的服務

    如何快速配置:

  • 配置Server(以下是雙核CPU配置,調整線程數可優化性能),配置說明:
    配置項是否必選默認值說明 port 否 8066 Amoeba Server綁定的對外端口 ipAddress 否空 Amoeba綁定的IP user 是空客戶端連接到Amoeba的用戶名 passWord 否空客戶端連接到Amoeba所用的密碼 readThreadPoolSize 否 16 負責讀客戶端、databa seserver 端網絡數據包線程數 clIEntSideThreadPoolSize 否 16 負責讀執行客戶端請求的線程數 serverSideThreadPoolSize 否 16 負責處理服務端返回數據包的線程數
  • Server Tag Configuration
  • <server>  
  •     <!-- proxy server綁定的端口 -->  
  •     <property name="port">2066</property>  
  •        
  •     <!-- proxy server綁定的IP -->  
  •     <property name="ipAddress">127.0.0.1</property>  
  •        
  •     <!-- proxy server net IO Read thread size -->  
  •     <property name="readThreadPoolSize">100</property>  
  •        
  •     <!-- proxy server clIEnt process thread size -->  
  •     <property name="clIEntSideThreadPoolSize">80</property>  
  •        
  •     <!-- MySQL server data packet process thread size -->  
  •     <property name="serverSideThreadPoolSize">100</property>  
  •        
  •     <!-- 對外驗證的用戶名 -->  
  •     <property name="user">root</property>  
  •        
  •     <!-- 對外驗證的密碼 -->  
  •     <property name="password">passWord</property>  
  • </server>   <server> <!-- proxy server綁定的端口 --> <property name="port">2066</property> <!-- proxy server綁定的IP --> <property name="ipAddress">127.0.0.1</property> <!-- proxy server net IO Read thread size --> <property name="readThreadPoolSize">100</property> <!-- proxy server client process thread size --> <property name="clIEntSideThreadPoolSize">80</property> <!-- mySQL Server data packet process thread size --> <property name="serverSideThreadPoolSize">100</property> <!-- 對外驗證的用戶名 --> <property name="user">root</property> <!-- 對外驗證的密碼 --> <property name="password">passWord</property> </server>
  • 配置 ConnectionManager
    需要至少配置一個ConnectionManager,每個ConnectionManager將作為一個線程啟動,ConnectionManager負責管理所注冊在自身的Conneciton、負責他們的空閒檢測,死亡檢測、IO Event
  • connectionManagerList Tag Configuration
  • <!--    
  •         每個ConnectionManager都將作為一個線程啟動。   
  •         manager負責Connection IO讀寫/死亡檢測   
  •     -->  
  •     <connectionManagerList>  
  •         <connectionManager name="defaultManager">  
  •             <className>com.meidusa.amoeba.Net.AuthingableConnectionManager</className>  
  •         </connectionManager>  
  •     </connectionManagerList>   <!-- 每個ConnectionManager都將作為一個線程啟動。 manager負責Connection IO讀寫/死亡檢測 --> <connectionManagerList> <connectionManager name="defaultManager"> <className>com.meidusa.amoeba.Net.AuthingableConnectionManager</className> </connectionManager> </connectionManagerList>
  • 配置 dbServer ,需要至少配置一個dbServer,每個dbServer將是物理數據庫Server的衍射

    factoryConfig --目標物理數據庫衍射配置情況:

    配置項是否必選默認值說明 manager 是空表示該dbServer 將注冊到指定的ConnectionManager port 否 3306 目標數據庫端口 ipAddress 否 127.0.0.1 目標數據庫IP schema 否空連接初始化的Schema user 是空用於登陸目標數據庫的用戶名 passWord 否空用於登陸目標數據庫的密碼 className 是空連接工廠實現類(com.meidusa.amoeba.MySQL.Net.MySQLServerConnectionFactory)

    poolConfig -- 連接池配置情況:

    配置項是否必選默認值說明 className 否   連接池實現類。默認:com.meidusa.amoeba.Net.poolable.PoolableObjectPool maxActive 否 8 最大活動連接數,如果達到最大活動連接數,則會等待 maxIdle 否 8 最大的空閒連接數,如果超過則將會關閉多余的空閒連接 minIdle 否 0 最小的空閒連接,連接池將保持最小空閒連接,即使這些連接長久不用 testOnBorrow 否 false 當連接在使用前是否檢查連接可用 testWhileIdle 否 fale 是否檢測空閒連接,這個參數啟動的時候下列2個參數才有效 minEvictableIdleTimeMillis 否 30分鐘連接空閒多少時間將被驅逐(關閉)(time Unit:ms) timeBetweenEvictionRunsMillis 否 -1 用於驅逐空閒連接沒間隔多少時間檢查一次空閒連接(time Unit:ms)
  • dbServer Tag Configuration
  • <dbServerList>  
  •     <!--    
  •         一台MySQLServer 需要配置一個pool,   
  •         如果多台 平等的MySQL需要進行loadBalance,    
  •         平台已經提供一個具有負載均衡能力的objectPool:com.meidusa.amoeba.MySQL.server.MultipleServerPool   
  •         簡單的配置是屬性加上 virtual="true",該Pool 不允許配置factoryConfig 、poolConfig   
  •            
  •     -->  
  •     <dbServer name="server1">  
  •            
  •         <!-- PoolableObjectFactory實現類 -->  
  •         <factoryConfig>  
  •             <className>com.meidusa.amoeba.MySQL.Net.MySQLServerConnectionFactory</className>  
  •             <property name="manager">defaultManager</property>  
  •                
  •             <!-- 真實MySQL數據庫端口 -->  
  •             <property name="port">3301</property>  
  •                
  •             <!-- 真實MySQL數據庫IP -->  
  •             <property name="ipAddress">127.0.0.1</property>  
  •                
  •             <!-- 用於登陸MySQL的用戶名 -->  
  •             <property name="user">test</property>  
  •                
  •             <!-- 用於登陸MySQL的密碼 -->  
  •             <property name="passWord">test</property>  
  •             <property name="schema">testSchema</property>  
  •         </factoryConfig>  
  •            
  •         <!-- ObjectPool實現類 -->  
  •         <poolConfig>  
  •             <className>com.meidusa.amoeba.Net.poolable.PoolableObjectPool</className>  
  •             <property name="maxActive">200</property>  
  •             <property name="maxIdle">200</property>  
  •             <property name="minIdle">10</property>  
  •             <property name="minEvictableIdleTimeMillis">600000</property>  
  •             <property name="timeBetweenEvictionRunsMillis">600000</property>  
  •             <property name="testOnBorrow">true</property>  
  •             <property name="testWhileIdle">true</property>  
  •         </poolConfig>  
  •     </dbServer>  
  • </dbServerList>   <dbServerList> <!-- 一台mysqlServer 需要配置一個pool,如果多台 平等的mysql需要進行loadBalance, 平台已經提供一個具有負載均衡能力的objectPool:com.meidusa.amoeba.mysql.server.MultipleServerPool 簡單的配置是屬性加上 virtual="true",該Pool 不允許配置factoryConfig 、poolConfig --> <dbServer name="server1"> <!-- PoolableObjectFactory實現類 --> <factoryConfig> <className>com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory</className> <property name="manager">defaultManager</property> <!-- 真實mysql數據庫端口 --> <property name="port">3301</property> <!-- 真實MySQL數據庫IP --> <property name="ipAddress">127.0.0.1</property> <!-- 用於登陸mysql的用戶名 --> <property name="user">test</property> <!-- 用於登陸MySQL的密碼 --> <property name="passWord">test</property> <property name="schema">testSchema</property> </factoryConfig> <!-- ObjectPool實現類 --> <poolConfig> <className>com.meidusa.amoeba.Net.poolable.PoolableObjectPool</className> <property name="maxActive">200</property> <property name="maxIdle">200</property> <property name="minIdle">10</property> <property name="minEvictableIdleTimeMillis">600000</property> <property name="timeBetweenEvictionRunsMillis">600000</property> <property name="testOnBorrow">true</property> <property name="testWhileIdle">true</property> </poolConfig> </dbServer> </dbServerList>
  • QueryRouter 查詢路由配置
  • 配置項是否必選默認值說明 className 是空 QueryRouter實現類,Amoeba For Mysql(com.meidusa.amoeba.mysql.parser.MySQLQueryRouter)。 functionConfig 否空用於解析sql 函數的配置文件,如果不配置則將不解析包含函數sql或者解析的不完整。 ruleConfig 否空數據切分規則配置文件,如果不配置則sql數據切分功能將不能用 needParse 否 true 是否對 sql進行parse,如果false 則將不能使用數據切分、讀寫分離等功能 defaultPool 是空 needParse=false、無法解析query、不滿足切分規則的、writePool|readPool == null情況。所有sql 將在默認得dbServer上面執行。(必選) writePool 否空啟用needParse 功能,並且沒有匹配到數據切分規則,則 update、insert、delete 語句將在這個pool中執行 readPool 否空啟用needParse 功能,並且沒有匹配到數據切分規則,則 select 語句將在這個pool中執行 LRUMapSize 否 1000 statment cache ,存放 sql 解析後得到的statment queryRouter Tag Configuration
  • <queryRouter>  
  •     <className>com.meidusa.amoeba.mysql.parser.MySQLQueryRouter</className>  
  •     <!--   
  •     <property name="ruleConfig">./src/conf/rule.XML</property>  
  •     <property name="functionConfig">./src/conf/functionMap.XML</property>  
  •     -->  
  •     <property name="needParse">false</property>  
  •     <property name="LRUMapSize">1500</property>  
  •     <property name="defaultPool">server1</property>  
  •     <!--   
  •     <property name="writePool">server1</property>  
  •     <property name="readPool">server1</property>  
  •     -->  
  • </queryRouter>   <queryRouter> <className>com.meidusa.amoeba.mysql.parser.MySQLQueryRouter</className> <!-- <property name="ruleConfig">./src/conf/rule.xml</property> <property name="functionConfig">./src/conf/functionMap.XML</property> --> <property name="needParse">false</property> <property name="LRUMapSize">1500</property> <property name="defaultPool">server1</property> <!-- <property name="writePool">server1</property> <property name="readPool">server1</property> --> </queryRouter>
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved