1

スタンドアロンの MySQL インスタンスに接続する Java EE 6 アプリがあります。現在、datasource.xml (アプリケーション サーバーにデプロイ) と persistence.xml (アプリケーション .war にデプロイ) を使用して、localhost MySQL に接続します。

マスタースレーブ モードで実行されている Amazon RDS Mysql インスタンスと通信するように設定したいと考えています。これは、マスターにのみ書き込み、スレーブからのみ読み取るようにアプリを構成する必要があることを意味します。

どうすればこれを達成できますか?これは datasource.xml または persistence.xml の編集だと思いますか?

4

2 に答える 2

0

これを自動的に行う方法はないと思います。2 つの別個の接続プールをセットアップでき、必要に応じて異なるデータ ソースを使用するようにアプリケーションをコーディングする必要があります。

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 としてセットアップし、読み取り専用クエリ用に 1 つ以上のリードレプリカを作成できます。

于 2014-09-07T21:14:36.770 に答える
0

ドライバーで JDBC URL を使用する必要があります。

com.mysql.jdbc.ReplicationDriver 

これは次のような URL で取得されます

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

RDS はJDBC_CONNECTION_STRINGシステム変数で動作します。

----追加更新------- JBOSSのサンプルdatasource.xml

<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>
于 2014-09-11T23:05:19.907 に答える