首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点燃未正确连接到MySQL

点燃未正确连接到MySQL
EN

Stack Overflow用户
提问于 2022-03-29 17:33:35
回答 1查看 122关注 0票数 0

我正在尝试将Ignite设置为一个缓存,并将MySQL作为外部存储。在我的kubernetes集群中,我将它作为一个Deployment(无状态)部署。

以下是我的xml配置:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="         http://www.springframework.org/schema/beans              http://www.springframework.org/schema/beans/spring-beans.xsd              http://www.springframework.org/schema/util              http://www.springframework.org/schema/util/spring-util.xsd">

    <!-- Data source bean -->
    <bean class="com.mysql.cj.jdbc.MysqlDataSource" id="mysqlDataSource">
        <property name="URL" value="jdbc:mysql://mysql.default.svc.cluster.local:3306/my_database"/>
        <property name="user" value="root"/>
        <property name="password" value="xxxxxx"/>
    </bean>

    <!-- Ignite Configuration -->
    <bean class="org.apache.ignite.configuration.IgniteConfiguration">
        <!-- Enable peer class loading. -->
        <property name="peerClassLoadingEnabled" value="true"/>

        <property name="cacheConfiguration">
            <list>
                <!-- Configuration for KVCache -->
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="KVCache"/>
                    <property name="cacheMode" value="REPLICATED"/>
                    <property name="atomicityMode" value="TRANSACTIONAL"/>
                    <property name="writeSynchronizationMode" value="FULL_SYNC"/>
                    <property name="backups" value="1"/>
                    <property name="writeBehindEnabled" value="true"/>
                    <property name="writeBehindBatchSize" value="1"/>
                    <property name="cacheStoreFactory">
                        <bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory">
                            <property name="dataSourceBean" value="mysqlDataSource"/>
                            <property name="dialect">
                                <bean class="org.apache.ignite.cache.store.jdbc.dialect.MySQLDialect"/>
                            </property>
                            <property name="types">
                                <list>
                                    <bean class="org.apache.ignite.cache.store.jdbc.JdbcType">
                                        <property name="cacheName" value="KVCache"/>
                                        <property name="keyType" value="java.lang.Integer"/>
                                        <property name="valueType" value="java.lang.Object"/>
                                        <!--Specify the schema if applicable -->
                                        <!--property name="databaseSchema" value="MY_DB_SCHEMA"/-->
                                        <property name="databaseSchema" value="my_database"/>
                                        <property name="databaseTable" value="kv"/>
                                        <property name="keyFields">
                                            <list>
                                                <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                    <constructor-arg>
                                                        <util:constant static-field="java.sql.Types.INTEGER"/>
                                                    </constructor-arg>
                                                    <constructor-arg value="id"/>
                                                    <constructor-arg value="int"/>
                                                    <constructor-arg value="id"/>
                                                </bean>
                                            </list>
                                        </property>
                                        <property name="valueFields">
                                            <list>
                                                <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                    <constructor-arg>
                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                    </constructor-arg>
                                                    <constructor-arg value="id"/>
                                                    <constructor-arg value="java.lang.String"/>
                                                    <constructor-arg value="id"/>
                                                </bean>
                                                <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                    <constructor-arg>
                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                    </constructor-arg>
                                                    <constructor-arg value="name"/>
                                                    <constructor-arg value="java.lang.String"/>
                                                    <constructor-arg value="name"/>
                                                </bean>
                                            </list>
                                        </property>
                                    </bean>
                                </list>
                            </property>
                        </bean>
                    </property>
                    <!-- Configure query entities if you want to use SQL queries -->
                    <property name="queryEntities">
                        <list>
                            <bean class="org.apache.ignite.cache.QueryEntity">
                                <property name="keyType" value="java.lang.Integer"/>
                                <property name="valueType" value="java.lang.Object"/>
                                <property name="keyFieldName" value="id"/>
                                <property name="keyFields">
                                    <list>
                                        <value>id</value>
                                    </list>
                                </property>
                                <property name="fields">
                                    <map>
                                        <entry key="name" value="java.lang.String"/>
                                        <entry key="id" value="java.lang.String"/>
                                    </map>
                                </property>
                            </bean>
                        </list>
                    </property>
                </bean>
                <!-- Provide similar configurations for other caches/tables -->
            </list>
        </property>
    </bean>
</beans>

下面是我用于kubernetes部署的deployment.yaml

代码语言:javascript
复制
# An example of a Kubernetes configuration for pod deployment.
apiVersion: apps/v1
kind: Deployment
metadata:
  # Cluster name.
  name: ignite-cluster
  namespace: default
spec:
  # The initial number of Ignite pods.
  replicas: 2
  # serviceName: ignite-service
  selector:
    matchLabels:
      app: ignite
  template:
    metadata:
      labels:
        app: ignite
    spec:
      serviceAccountName: ignite
      # terminationGracePeriodSeconds: 60000 (use in production for graceful restarts and shutdowns)
      containers:
        # Custom pod name.
        - name: ignite-node
          image: apacheignite/ignite:2.12.0
          env:
            - name: OPTION_LIBS
              value: ignite-kubernetes,ignite-rest-http,control-center-agent
            - name: CONFIG_URI
              value: file:///ignite/config/persist.xml
            - name: USER_LIBS
              value: "/ignite/mysql-connector-java-8.0.28.jar"
              # consider this property for production -DIGNITE_WAIT_FOR_BACKUPS_ON_SHUTDOWN=true
          ports:
            # Ports you might need to open.
            - containerPort: 47100 # communication SPI port
            - containerPort: 47500 # discovery SPI port
            - containerPort: 49112 # JMX port
            - containerPort: 10800 # thin clients/JDBC driver port
            - containerPort: 8080 # REST API
          volumeMounts:
            - mountPath: /ignite/config
              name: config-vol
            - mountPath: /ignite/mysql-connector-java-8.0.28.jar
              name: mysql
            - mountPath: /ignite/bin
              name: bin
            - mountPath: /ignite/libs
              name: libs
      volumes:
        - name: config-vol
          configMap:
            name: ignite-cfg-persistent
        - name: mysql
          hostPath:
            path: /Users/username/Downloads/control-center-agent-2.12.0.0/libs/mysql-connector-java-8.0.28.jar
            type: File
        - name: libs
          hostPath:
            path: /Users/username/Downloads/control-center-agent-2.12.0.0/libs/control-center-agent
        - name: bin
          hostPath:
            path: /Users/username/Downloads/control-center-agent-2.12.0.0/bin

集群通常以活动状态出现。但是缓存本身没有来自表本身的现有值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-29 18:51:42

正如文档中所描述的,为了将数据从外部存储加载到apache点燃,您应该调用cache.loadCache(null);

代码语言:javascript
复制
// Load data from kv table into KVCache.
IgniteCache<Integer, Object> kvCache = ignite.cache("KVCache");

kvCache.loadCache(null);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71666445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档