达梦数据库-报错-05-Server Mode invalid(服务器模式不匹配)

目录

一、环境信息

二、介绍

三、排查过程

1、检查/etc/dm_svc.conf

(1)自验证

(2)LOGIN_MODE参数介绍

(3)客户反馈

2、编写JDBC连接DEMO

(1)源码

(2)编译

(3)运行

(4)生产模拟验证

3、用户侧验证


一、环境信息

|------|--------------------------|
| 名称 | 值 |
| CPU | x86 |
| 操作系统 | KylinV10 |
| DM版本 | DM Database Server 64 V8 |

二、介绍

客户新上线了一套一主多备,应用验证发现报错:Server Mode invalid。我们来记录一下这个文档的解决方法。

三、排查过程

1、检查/etc/dm_svc.conf

(1)自验证

我第一反应就是/etc/dm_svc.conf文件中的LOGIN_MODE参数配置不正确。下面是一个正确的例子我们看一下,DW_P只连接主机,DW_P只连接备机,客户有相关的需求,所以我们这么测试验证。

(2)LOGIN_MODE参数介绍

|------------|-----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 参数名 | 默认值 | 描述 |
| LOGIN_MODE | 4 | 指定优先登录的服务器模式。 0:优先连接 Primary 模式的库,Normal 模式次之,最后选择 Stantby 模式; 1:只连接主库; 2:只连接备库; 3:优先连接 Standby 模式的库,Primary 模式次之,最后选择 Normal 模式; 4:优先连接 Normal 模式的库,Primary模式次之,最后选择 Standby 模式; |

(3)客户反馈

客户表示没有用/etc/dm_svc.conf文件,是JDBC连接串中配置的,那我们需要转换思路。

2、编写JDBC连接DEMO

(1)源码

java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class jdbc_conn {
    static Connection con = null;
    static String cname = "dm.jdbc.driver.DmDriver";
    static String url = "jdbc:dm://writemaster?writemaster=(XX.XX.XX.XX0:5236,XX.XX.XX.XX1:5236,XX.XX.XX.XX2:5236,XX.XX.XX.XX3:5236,XX.XX.XX.XX4:5236)&schema=CRMCLOUD&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&loginMode=1&rwSeparate=0";
    static String userid = "SYSDBA";
    static String pwd = "XXXXX";
    public static void main(String[] args) {
        try {
            Class.forName(cname);
            con = DriverManager.getConnection(url, userid, pwd);
            con.setAutoCommit(true);
            System.out.println("[SUCCESS]conn database");
        } catch (Exception e) {
            System.out.println("[FAIL]conn database:" + e.getMessage());
        }
    }
    public void disConn(Connection con) throws SQLException {
        if (con != null) {
            con.close();
        }
    }
}

(2)编译

java 复制代码
javac -cp ".:/dm/dmdbms/drivers/jdbc/DmJdbcDriver8.jar" jdbc_conn.java

(3)运行

bash 复制代码
java -cp ".:/dm/dmdbms/drivers/jdbc/DmJdbcDriver8.jar" jdbc_conn

(4)生产模拟验证

连接正常。

3、用户侧验证

业务老师将应用部署在docker中,docker与准生产环境主机连通,备机均不通,导致接口找不到符合的模式出现报错。

相关推荐
疯狂吧小飞牛1 天前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈1 天前
volatile使用场景
linux·服务器·c语言·开发语言·c++
哆啦A梦15881 天前
Springboot整合MyBatis实现数据库操作
数据库·spring boot·mybatis
Zzzzmo_1 天前
【MySQL】JDBC(含settings.xml文件配置/配置国内镜像以及pom.xml文件修改)
数据库·mysql
sinat_255487811 天前
读者、作家 Java集合学习笔记
java·笔记·学习
todoitbo1 天前
用虚拟局域网打通 Win/Mac/Linux 三端:跨设备协作的实用方案
linux·运维·macos
源远流长jerry1 天前
RDMA 基本操作类型详解:从双端通信到单端直访
linux·网络·tcp/ip·ip
FirstFrost --sy1 天前
MySQL内置函数
数据库·mysql
2401_879693871 天前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
reembarkation1 天前
光标在a-select,鼠标已经移出,下拉框跟随页面滚动
java·数据库·sql