WSO2 API Manager 1.6.0 - 什么是正确的数据库配置?

时间:2014-01-30 02:28:42

标签: database configuration wso2

我为每个组件安装了APIM 1.6.0并进行了如下配置。 数据库: WSO2CarbonDB,WSO2UM_DB,WSO2REG_DB,WSO2AM_DB

我已将条目保留在默认指向carbon的所有registry.xml文件中,并添加了gov注册表配置:

<currentDBConfig>wso2registry</currentDBConfig>
<dbConfig name="wso2registry">
    <dataSource>jdbc/WSO2CarbonDB</dataSource>
</dbConfig>
<dbConfig name="govregistry">
        <dataSource>jdbc/WSO2REG_DB</dataSource>
    </dbConfig>
    <remoteInstance url="https://localhost:9446/registry">
        <id>gov</id>
        <dbConfig>govregistry</dbConfig>
        <readOnly>false</readOnly>
        <enableCache>true</enableCache>
        <registryRoot>/</registryRoot>
    </remoteInstance>
    <mount path="/_system/governance" overwrite="true">
        <instanceId>gov</instanceId>
        <targetPath>/_system/governance</targetPath>
    </mount>
    <mount path="/_system/config" overwrite="true">
        <instanceId>gov</instanceId>
        <targetPath>/_system/nodes</targetPath>
    </mount>

对于user-mgt.xml文件,我保留了原始碳条目并添加了用户db entry:

   <Property name="dataSource">jdbc/WSO2CarbonDB</Property>
   <UserStoreManager class="org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager">
<Property name="dataSource">jdbc/WSO2UM_DB</Property>

在api-manager.xml文件中我添加了:

 <DataSourceName>jdbc/WSO2AM_DB</DataSourceName>

这是在Publisher节点,Store节点,Gateway节点和KeyManager节点上完成的。 我期望会发生的是所有组件都将按如下方式使用数据库:

  • WSO2UM_DB将用于所有人的UM_表交互 组件。
  • WSO2REG_DB将用于所有的REG_表交互 组件。
  • WSO2AM_DB将用于所有的API_表交互 组件。
  • 我真的没想到WSO2CarbonDB会被使用。

我从数据库跟踪中看到的是以下情况:

  • 发布者使用WSO2AM_DB来处理API_表。 (我还没有看到任何其他组件访问)。
  • WSO2UM_DB由UM_表的所有组件使用。
  • WSO2REG_DB由REG_表的所有组件使用。
  • 所有组件都使用WSO2CarbonDB来进行UM_和REG_表更新。

让我感到惊讶的是,对于所有组件:发布者,商店,网关和密钥管理器,WSO2CarbonDB用于UM_和REG_表。这适用于插入,更新,删除和选择。

这是预期的吗?或者我应该将WSO2CarbonDB删除/更新为用户或注册数据库吗?

3 个答案:

答案 0 :(得分:1)

如果需要jdbc / WSO2UM_DB作为所有组件的用户存储的数据库,则必须在user-mgt.xml中将缺省数据源属性值更改为jdbc / WSO2UM_DB。所以你不需要将jdbc / WSO2CarbonDB保留在那里。

<Property name="dataSource">jdbc/WSO2UM_DB</Property>

WSO2REG_DB是所有组件中注册表的数据库,配置与给定配置相同的registry.xml。然后所有这些的gov和conf注册表空间将指向WSO2REG_DB。

另请注意,默认的WSO2CarbonDB将用作每个组件的本地注册表。

答案 1 :(得分:0)

您可以将所有数据库脚本创建为一个单一的数据库模式。将所有数据源(master-datasources.xml)指向此数据库和模式。

答案 2 :(得分:0)

这是我的master-datasources.xml;它被Puppet使用。 Puppet正在取代&lt;%=%&gt;供应期间的标签。

<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration">

    <providers>
        <provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider>
    </providers>

    <datasources>

        <datasource>
            <name>WSO2_CARBON_DB</name>
            <description>The datasource used for registry and user manager</description>
            <jndiConfig>
                <name>jdbc/WSO2CarbonDB</name>
            </jndiConfig>
            <definition type="RDBMS">
                <configuration>
                    <url><%= jdbc_url %></url>
                    <username><%= jdbc_username %></username>
                    <password><%= jdbc_password %></password>
                    <driverClassName>oracle.jdbc.OracleDriver</driverClassName>
                    <maxActive>90</maxActive>
                    <maxWait>80000</maxWait>
                    <testOnBorrow>true</testOnBorrow>
                    <validationQuery>SELECT 1 FROM DUAL</validationQuery>
                    <validationInterval>30000</validationInterval>
                </configuration>
            </definition>
        </datasource>

        <datasource>
            <name>WSO2AM_DB</name>
            <description>The datasource used for API Manager database</description>
            <jndiConfig>
                <name>jdbc/WSO2AM_DB</name>
            </jndiConfig>
            <definition type="RDBMS">
                <configuration>
                    <url><%= jdbc_url %></url>
                    <username><%= jdbc_username %></username>
                    <password><%= jdbc_password %></password>
                    <driverClassName>oracle.jdbc.OracleDriver</driverClassName>
                    <maxActive>50</maxActive>
                    <maxWait>60000</maxWait>
                    <testOnBorrow>true</testOnBorrow>
                    <validationQuery>SELECT 1 FROM DUAL</validationQuery>
                    <validationInterval>30000</validationInterval>
                </configuration>
            </definition>
        </datasource>

         <datasource>
            <name>WSO2AM_STATS_DB</name>
            <description>The datasource used for getting statistics to API Manager</description>
            <jndiConfig>
                <name>jdbc/WSO2AM_STATS_DB</name>
            </jndiConfig>
            <definition type="RDBMS">
                <configuration>
                    <url><%= jdbc_url %></url>
                    <username><%= jdbc_username %></username>
                    <password><%= jdbc_password %></password>
                    <driverClassName>oracle.jdbc.OracleDriver</driverClassName>
                    <maxActive>50</maxActive>
                    <maxWait>60000</maxWait>
                    <testOnBorrow>true</testOnBorrow>
                    <validationQuery>SELECT 1 FROM DUAL</validationQuery>
                    <validationInterval>30000</validationInterval>
                </configuration>
            </definition>
         </datasource>

        <!-- For an explanation of the properties, see: http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html -->
        <!--datasource>
            <name>SAMPLE_DATA_SOURCE</name>
            <jndiConfig>
                <name></name>
                <properties>
                    <property name="java.naming.factory.initial"></property>
                    <property name="java.naming.provider.url"></property>
                </properties>
            </jndiConfig>
            <definition type="RDBMS">
                <configuration>

                    <defaultAutoCommit></defaultAutoCommit>
                    <defaultReadOnly></defaultReadOnly>
                    <defaultTransactionIsolation>NONE|READ_COMMITTED|READ_UNCOMMITTED|REPEATABLE_READ|SERIALIZABLE</defaultTransactionIsolation>
                    <defaultCatalog></defaultCatalog>
                    <username></username>
                    <password svns:secretAlias="WSO2.DB.Password"></password>
                    <maxActive></maxActive>
                    <maxIdle></maxIdle>
                    <initialSize></initialSize>
                    <maxWait></maxWait>

                    <dataSourceClassName>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</dataSourceClassName>
                    <dataSourceProps>
                        <property name="url">jdbc:mysql://localhost:3306/Test1</property>
                        <property name="user">root</property>
                        <property name="password">123</property>
                    </dataSourceProps>

                </configuration>
            </definition>       
        </datasource-->
    </datasources>

</datasources-configuration>