2

MySQL レプリケーションを構成しようとしている Grails (2.2.1) アプリがあります。これらの設定は "grails run-app" 経由では正常に機能しますが、Tomcat 経由で実行すると失敗します。

dataSource {
    dbCreate = "update"
    url = "jdbc:mysql:replication://app1-db.cykm5cykm5.us-east-1.rds.amazonaws.com,app1-db-rr1.cykm5cykm5.us-east-1.rds.amazonaws.com/app1_production?useUnicode=true&characterEncoding=UTF-8"
    driverClassName = "com.mysql.jdbc.ReplicationDriver"

    username = "Username"
    password = "Password"

    properties {
        defaultReadOnly = false
        initialSize = 10
        maxActive = 110
        maxIdle = 60
        minIdle = 10
        maxWait = 10000
    }
}

スローされる例外は次のとおりです。

Caused by: java.sql.SQLException: Must specify at least one slave host to connect to for master/slave replication load-balancing functionality
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
        at com.mysql.jdbc.NonRegisteringDriver.connectReplicationConnection(NonRegisteringDriver.java:393)
        at com.mysql.jdbc.NonRegisteringReplicationDriver.connect(NonRegisteringReplicationDriver.java:52)
        at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
        at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
        at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
        at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
        ... 8 more

この例外が表示される理由と、grails dev サーバーを実行しているときに表示されない理由を教えてください。

前もって感謝します。

4

1 に答える 1

0

これは、2 番目のデータ ソースを定義する際の問題であることが判明しました。2 番目のデータ ソースに非レプリケーション接続文字列が含まれていたにもかかわらず、レプリケーション ドライバが両方のデータ ソースに読み込まれていました。

レプリケーションに適した接続文字列を使用して 2 番目のデータ ソースを構成すると、問題が解決しました。

于 2013-06-07T23:12:04.073 に答える