注册
启云云数据库运维(实例启动失败、不可用问题排查)
培训园地/ 文章详情 /

启云云数据库运维(实例启动失败、不可用问题排查)

WST 2026/03/28 343 0 0

本文主要针对启云云数据库发数据库服务过程中出现的实例起不来、实例状态不可用的排查过程。

一、实例是否创建

首先确认实例是否已经创建

kubectl -n dmcp-instance get dm | grep dm***

企业微信截图_17745137685804.png
若显示dmcp-instance命名空间下没有该实例,则需要排查cdb-portal以及dm-operater组件日志

kubectl -n dmcp-system get pod | grep cdb-portal
kubectl -n dmcp-system logs -f cdb-portal-***
kubectl -n cdb get pod | grep cdb-controller-manager
kubectl -n cdb logs -f cdb-controller-manager***

可能的原因包括:
1、启云license过期导致实例创建不了,需要更换启云license
2、因cdb-portal代码逻辑出现错误导致创建不了,需要排查代码问题

二、实例起不来

实例创建了,但是不是Running状态,排查步骤如下:
1、查看实例状态,如果是单机实例则应该有一个pod,若是主备实例(一主一备一监控),则应该有3个pod,正常运行的pod状态为Running,其他都需要排查原因

kubectl -n dmcp-instance get pod | grep dm***

企业微信截图_17745141015167.png
2、查看pod详情,很多时候查看详情就可以知道为什么起不来

kubectl -n dmcp-instance describe pod dm***-0

3、若pod详情中没有问题,则进容器内部进行排查

kubectl -n dmcp-instance exec -it dm***-0 bash

#查看日志
cd /opt/dmdbms/data/log
vi dmdb.log
vi dm_GRP1_RT_1**.log

#查看服务状态
supervisord status 

#手动调试
cd \~ #进入工作目录 

pause #暂停容器,防止容器退出 

cd /opt/dmdbms/data #进入数据库工作目录 

/opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini -noconsole #单机 

/opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini mount #主备

实例起不来可能问题总结:
1、因数据库license问题起不来(license过期或license版本不对应)
(1)查询dm-operator日志

kubectl -n cdb get pod | grep cdb-controller-manager
kubectl -n cdb logs -f cdb-controller-manager***

(2)进容器查看实例启动日志

kubectl -n dmcp-instance get pod | grep dm****
kubectl -n dmcp-instance exec -it dm**** bash
> cd /opt/dmdbms/data/log
> tail -f dmdb.log

2、因pvc创建失败或者挂载不了问题起不来

kubectl -n dmcp-instance get pod | grep dm****
kubectl -n dmcp-instance describe pod dm***-0 
kubectl -n dmcp-instance get pvc | grep dm***
kubectl -n dmcp-instance describe pvc | grep dm****

image.png

3、因网络问题,启动探针不通过
(1)describe实例pod

kubectl -n dmcp-instance get pod | grep dm****
kubectl -n dmcp-instance describe pod dm***-0 

image.png
(2)在主机ping实例pod的ip

ping ip
或
telnet ip port

4、因网络原因主备之间连接不上或者监控与主、备库连不上,监控1/2

#describe监控的pod
kubectl -n dmcp-instance describe pod dm***
#进监控pod连接主库、备库
kubectl -n dmcp-instance exec -it dm*** bash
> ncat -zv dm******-0.dm****** 52141

#分别进两个pod查看服务状态
kubectl -n dmcp-instance exec -it dm***-0 bash
#查看端口
> ss -nltp
#查看服务
> supervisorctl status
#查看数据库状态
> curl http://localhost:9100/metrics

5、因ini参数不合理 core dump

#查看数据库启动日志
kubectl -n dmcp-instance get pod | grep dm****
kubectl -n dmcp-instance exec -it dm**** bash
> cd /opt/dmdbms/data/log
> tail -f dmdb.log

#查看实例中内存使用是否超过实例规格
> top

#查看database的日志
kubectl -n dmcp-instance logs -f dm****-0 -c database

image.png
6、因初始化超时导致,超过15分钟数据库初始化没成功,块存储写入慢

kubectl -n dmcp-instance get pod | grep dm****
kubectl -n dmcp-instance exec -it dm**** bash
> cd /opt/dmdbms/data/log
#查看数据库实例启动日志,是否一直重启
> tail -f dmdb.log
#查看磁盘io
> fio -filename=fio.img -direct=1 -iodepth=32 -thread -rw=randrw -rwmixread=70 -ioengine=libaio -bs=4k -size=5g -numjobs=8 -runtime=60 -group_reporting -name=mytest

三、实例不可用

查看实例状态,pod是否running,pod是否2/2
1、查看监控是否为 up 1

kubectl -n dmcp-instance get pod | grep dm****
kubectl -n dmcp-instance exec -it dm**** bash
> curl http://localhost:9100/metrics

2、若监控 up 0,查看export的日志

kubectl -n dmcp-instance logs -f dm**** -c export

3、若监控 up 1,查看元数据库实例表状态

SELECT ID, STATUS FROM CDB_PORTAL.CDB_INSTANCE_INFO WHERE ID IN ('dm82814028578837');

4、若监控 up 1,且元数据库实例状态都是“运行中”,查询prometheus的实例up值

curl 'http://[fd11:1111:1112:15::28db]:9090/api/v1/query' --data-urlencode 'query=up{ kubernetes_pod_name=~"dm82814028578837.*"}'

5、若prometheus组件查询实例up值为空,查看prometheus组件pod的日志

kubectl -n dmcp-system logs -f prometheus-cdb-stack-prometheus-0

6、查看cdb-monitor中的日志,查看cdb-monitor是否能正常连接cdb-portal获取secret中配置的prometheus地址,查看cdb-portal中的日志,查看连接k8s集群是否报错

kubectl -n dmcp-system get pod | grep cdb-monitor
kubectl -n dmcp-system logs -f cdb-monitor****
kubectl -n dmcp-system get pod | grep cdb-portal
kubectl -n dmcp-system logs -f cdb-portal****

可能情况:

1、会话超过设置的最大会话数,修改MAX_SESSIONS然后重启;(up 0,export中显示会话数超出设置最大值,这种解决版本为修改MAX_SESSIONS的值)
2、prometheus组件问题
2.1、pometheus没有正常启动,查看prometheus组件的状态

kubectl -n dmcp-system get pod -o wide | grep prometheus***

2.2、prometheus组件没有空间,需要扩容

#进容器内查看prometheus存储是否满了
kubectl -n dmcp-system exec -it prometheus-cdb-stack-prometheus-0 -- sh
> df -h
#查看prometheus组件日志是否显示 no space left
kubectl -n dmcp-system logs -f prometheus-cdb-stack-prometheus-0

#prometheus组件扩容
kubectl -n dmcp-system edit pvc **
修改spec.resources.requests.storage,修改后要等pvc容量慢慢变为修改后的值

3、k8s集群连接访问不上

#查看元数据库CDB_PORTAL.CDB_CLUSTER_INFO中配置的集群信息与实际是否一致
##查询CDB_PORTAL.CDB_CLUSTER_INFO表信息
select * from CDB_PORTAL.CDB_CLUSTER_INFO
##查询k8s集群的地址以及认证信息
ping apiserver.cluster.local
cat ~/.kube/config
若不一致就进行修改,没有VIP的集群环境下base_url配置的集群第一个节点的IP,要测试IP地址是否连得同
telnet IP 6443
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服