2013-09-23 61 views
1

我有一個連接到獨立MySQL實例的Java EE 6應用程序。目前它使用datasource.xml(部署在應用程序服務器上)和persistence.xml(部署在應用程序中的.war中)連接到本地主機MySQL適用於JBoss Java EE 6的亞馬遜RDS主站配置應用程序

我希望將其配置爲與在主從中運行的Amazon RDS Mysql實例模式。這意味着我需要將我的應用程序配置爲僅寫入主服務器,並且只能從服務器讀取。

我該如何做到這一點?我猜這是一個datasource.xml或persistence.xml編輯?

回答

0

我不認爲有辦法自動做到這一點。您可以設置兩個獨立的連接池,然後您必須編寫應用程序以根據需要使用不同的數據源。

說明這裏的JBoss 6數據源:

https://access.redhat.com/documentation/en-US/JBoss_Enterprise_BRMS_Platform/5/html/BRMS_Administrator_Guide/Configuring_a_Datasource_for_JBoss_Enterprise_Application_Platform_6.html

您可以設置RDS爲多AZ以實現高可用性,然後你可以創建一個或多個只讀副本爲只讀查詢。

0

您將需要使用JDBC URL與司機

com.mysql.jdbc.ReplicationDriver 

這是拾起URL像

jdbc:mysql:replication//master_ip:3306,slave_1_ip:3306 

RDS將JDBC_CONNECTION_STRING系統的變量。從JBOSS

<datasource jndi-name="java:jboss/datasources/MysqlDS" 
    enabled="true" use-java-context="true" pool-name="MysqlDS" use-ccm="true"> 
    <connection-url>jdbc:mysql://${env.AMAZON_RDS_MYSQL_DB_HOST}:${env.AMAZON_RDS_MYSQL_DB_PORT}/${env.AMAZON_RDS_MYSQL_DB_NAME}?autoReconnect=true&amp;verifyServerCertificate=false&amp;useSSL=true&amp;requireSSL=true 
    </connection-url> 
    <driver>mysql</driver> 
    <security> 
     <user-name>${env.AMAZON_RDS_MYSQL_DB_USERNAME}</user-name> 
     <password>${env.AMAZON_RDS_MYSQL_DB_PASSWORD}</password> 
    </security> 
    <validation> 
     <check-valid-connection-sql>SELECT 1</check-valid-connection-sql> 
     <background-validation>true</background-validation> 
    </validation> 
    <pool> 
     <flush-strategy>IdleConnections</flush-strategy> 
     <allow-multiple-users /> 
    </pool> 
</datasource> 

----其他更新------- 樣品datasource.xml