博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vertica的这些事<九>—— 关于vertica的Connection Failover
阅读量:7142 次
发布时间:2019-06-28

本文共 2363 字,大约阅读时间需要 7 分钟。

最近在生产中发现vertica有个别节点老是宕机(又碰到的童鞋交流下),实际业务中有Python通过odbc连接vertica,还有Java通过jdbc连接vertica。假如你连接的那个节点正好是down的节点或者是standby节点,那么就会连接失败,程序就会报错,影响正常业务。其实vertica官方文档已经给出了解决方法,下面我们来看一下如何实现。

官方给出的代码如下:

[VMartBadNode]Description=VMart Vertica DatabaseDriver=/opt/vertica/lib64/libverticaodbc.soDatabase=VMartServername=badnode.example.comBackupServerNode=node02.example.com,node03.example.com

其中上面的BackupServerNode就是备用的IP

代码:

import java.sql.*;import java.util.Properties;public class ConnectionFailoverExample {    public static void main(String[] args) {        // Assume using JDBC 4.0 driver on JVM 6+. No driver loading needed.        Properties myProp = new Properties();        myProp.put("user", "dbadmin");        myProp.put("password", "vertica");        // Set two backup hosts to be used if connecting to the first host        // fails. All of these hosts will be tried in order until the connection        // succeeds or all of the connections fail.        myProp.put("BackupServerNode", "VerticaHost02,VerticaHost03");        Connection conn;        try {            // The connection string is set to try to connect to a known            // bnad host (in this case, a host that never existed).             conn = DriverManager.getConnection(                    "jdbc:vertica://BadVerticaHost:5433/vmart", myProp);            System.out.println("Connected!");            // Query system to table to see what node we are connected to.             // Assume a single row in response set.                        Statement stmt = conn.createStatement();            ResultSet rs = stmt.executeQuery(                    "SELECT node_name FROM v_monitor.current_session;");                  rs.next();            System.out.println("Connected to node " + rs.getString(1).trim());            // Done with connection.            conn.close();        } catch (SQLException e) {            // Catch-all for other exceptions            e.printStackTrace();        }    }}

另外也可以通过jdbc连接串来实现:

jdbc:vertica://192.168.111.25:5433/DBname?ConnectionLoadBalance=1&BackupServerNode=192.168.111.12:5433,192.168.111.13:5433

其中ConnectionLoadBalance是vertica的负载均衡,如果在库中没有开启该功能的话,此时是没有作用的,不影响。

开启ConnectionLoadBalance的话,需要管理员账户

SELECT SET_LOAD_BALANCE_POLICY('ROUNDROBIN');

取消该功能:

SELECT SET_LOAD_BALANCE_POLICY('NONE');

查询是否开启:

SELECT GET_LOAD_BALANCE_POLICY();

通过这次设置,加了几个备用连接节点,确保业务正常。

转载地址:http://ptqrl.baihongyu.com/

你可能感兴趣的文章
.NET平台开源项目速览(2)Compare .NET Objects对象比较组件
查看>>
android http协议post请求方式
查看>>
Nginx整合PHP原理
查看>>
备份数据表、还原数据表
查看>>
DEEP LEARNING IS THE FUTURE: Q&A WITH NAVEEN RAO OF NERVANA SYSTEMS
查看>>
C++ STL它vector详细解释
查看>>
CentOS5下配置JDK1.6+TOMCAT6
查看>>
测试代码覆盖率工具学习(Android Emma)
查看>>
kindle】扫描版PDF完美切割六寸
查看>>
[Android] 解析android framework下利用app_process来调用java写的命令及示例
查看>>
kindeditor-网页文字编辑
查看>>
仿写自己的一个加载语言包的L函数
查看>>
http://elf8848.iteye.com/blog/875830/
查看>>
react-native 学习之TextInput组件篇
查看>>
Ajax简单应用-购物车
查看>>
Java中 NIO与IO的区别
查看>>
动网论坛password暴力破解程序代码
查看>>
Java 容器源码分析之HashMap多线程并发问题分析
查看>>
I.MX6 各模块 clock 查询
查看>>
Winform读写App.config文件以及重启程序
查看>>