代码之家  ›  专栏  ›  技术社区  ›  en Peris

从SpringBoot应用程序访问Ubuntu 16.04上的MariaDB Galera集群

  •  1
  • en Peris  · 技术社区  · 8 年前

    我在Ubuntu16.04的2个节点上安装了一个MariaDB Galera集群。

    这里是来自node1的信息:

    root@localhost:~# sudo more /etc/mysql/conf.d/galera.cnf
    [mysqld]
    binlog_format=ROW
    default-storage-engine=innodb
    innodb_autoinc_lock_mode=2
    bind-address=0.0.0.0
    # Galera Provider Configuration
    wsrep_on=ON
    wsrep_provider=/usr/lib/galera/libgalera_smm.so
    # Galera Cluster Configuration
    wsrep_cluster_name="galera_cluster"
    wsrep_cluster_address="gcomm://192.168.143.81,192.168.148.75"
    
    # Galera Synchronization Configuration
    wsrep_sst_method=rsync
    
    # Galera Node Configuration
    wsrep_node_address="192.168.143.81"
    wsrep_node_name="Node1"
    

    这里是node2的信息:

    mysqld]
    binlog_format=ROW
    default-storage-engine=innodb
    innodb_autoinc_lock_mode=2
    bind-address=0.0.0.0
    # Galera Provider Configuration
    wsrep_on=ON
    wsrep_provider=/usr/lib/galera/libgalera_smm.so
    # Galera Cluster Configuration
    wsrep_cluster_name="galera_cluster"
    wsrep_cluster_address="gcomm://192.168.143.81,192.168.148.75"
    
    # Galera Synchronization Configuration
    wsrep_sst_method=rsync
    
    # Galera Node Configuration
    wsrep_node_address="192.168.148.75"
    wsrep_node_name="Node2”
    

    我正在从Java应用程序访问数据库。具有以下特性:

    spring.datasource.url=jdbc:mysql://192.168.143.81:3306/can_peris_db
    spring.datasource.username=peris
    spring.datasource.password=3nRam0nD3L3s0l1v3s
    spring.jpa.show-sql=false
    spring.jpa.properties.hibernate.format_sql=true
    hibernate.dialect=org.hibernate.dialect.MySQLDialect
    

    一切正常,数据在两个数据库中复制。。但是当我关闭服务器192.168.143.81时,我得到了一个错误 java.net.NoRouteToHostException: No route to host (Host unreachable)

    有没有办法自动连接到可用的主机?

    2 回复  |  直到 8 年前
        1
  •  0
  •   en Lopes    8 年前

    你需要设置一个浮动IP并安装Keepalived

        2
  •  0
  •   cfnerd    8 年前

    你有两个选择。看看 MariaDB JDBC connector documentation .

    例如,如果您只想有一个故障转移方案,您应该这样设置jdbc url:

    jdbc:mariadb:sequential://mainHost,failoverHost/your_database?autoReconnect=true
    

    “顺序”模式意味着应用程序将尝试始终连接到第一个主机,并仅在第一个节点不可用时切换到故障转移节点。

    希望这有帮助。