我有一个连接到独立 MySQL 实例的 Java EE 6 应用程序。目前,它使用 datasource.xml(部署在应用服务器上)和 persistence.xml(部署在应用程序 .war 中)连接到本地 MySQL
我希望将其配置为与以主从模式运行的 Amazon RDS Mysql 实例通信。这意味着我需要将我的应用程序配置为只写入主服务器并只读从服务器。
我怎样才能做到这一点?我猜这是 datasource.xml 或 persistence.xml 编辑?
我有一个连接到独立 MySQL 实例的 Java EE 6 应用程序。目前,它使用 datasource.xml(部署在应用服务器上)和 persistence.xml(部署在应用程序 .war 中)连接到本地 MySQL
我希望将其配置为与以主从模式运行的 Amazon RDS Mysql 实例通信。这意味着我需要将我的应用程序配置为只写入主服务器并只读从服务器。
我怎样才能做到这一点?我猜这是 datasource.xml 或 persistence.xml 编辑?
您需要将 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&verifyServerCertificate=false&useSSL=true&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>
我认为没有办法自动执行此操作。您可以设置两个单独的连接池,然后您必须编写应用程序以根据需要使用不同的数据源。
JBoss 6 数据源的说明在这里:
您可以将 RDS 设置为多可用区以实现高可用性,然后您可以为只读查询创建一个或多个只读副本。