KingbaseES启动数据库失败后如何分析
关键字:
KingbaseES、sys_ctl、启动日志
一、KingbaseES数据库服务启动
1.1 数据库启动机制
1) 数据库通过sys_ctl工具手工启动数据库服务kingbase。
2) 对于sys_ctl工具需要通过-D参数指定数据库数据存储路径。
3) 数据库启动需要读取kingbase.conf文件,获取数据库实例初始化的参数配置。
4) 数据库启动时产生的日志信息可以写入到指定的日志文件或显示在标准输出上。
5) 可以通过数据库启动日志来判断、分析数据库启动的故障原因。
1.2 数据库服务启动工具sys_ctl
图1-1 sys_ctl工具帮助信息
二、数据库服务启动故障分析
2.1 数据库启动端口被占用案例
案例说明:
数据库在启动时,日志信息提示“could not bind IPv4 address "0.0.0.0": Address already in use“,查看数据库服务端口(default:54321),此端口在系统下处于”Listen“状态,已经被其他数据库服务占用。如果在主机上启动多个数据库实例,需要修改port,避免实例之间的数据库服务端口冲突。
故障现象:
[kingbase@node1 data]$ /opt/Kingbase/ES/V8R6_021/Server/bin/sys_ctl start -D /data/kingbase/v8r6_021/data
waiting for server to start....2021-03-01 12:52:31.989 CST [15825] LOG: sepapower extension initialized
2021-03-01 12:52:31.991 CST [15825] LOG: starting KingbaseES V008R006C004B0021 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
2021-03-01 12:52:31.991 CST [15825] LOG: could not bind IPv4 address "0.0.0.0": Address already in use
2021-03-01 12:52:31.991 CST [15825] HINT: Is another kingbase already running on port 54321? If not, wait a few seconds and retry.
2021-03-01 12:52:31.991 CST [15825] LOG: could not bind IPv6 address "::": Address already in use
2021-03-01 12:52:31.991 CST [15825] HINT: Is another kingbase already running on port 54321? If not, wait a few seconds and retry.
2021-03-01 12:52:31.991 CST [15825] WARNING: could not create listen socket for "*"
2021-03-01 12:52:31.991 CST [15825] FATAL: could not create any TCP/IP sockets
2021-03-01 12:52:31.991 CST [15825] LOG: database system is shut down
stopped waiting
sys_ctl: could not start server
Examine the log output.
故障分析:
查看端口(54321)使用情况,可以获知54321端口已经被占用:
[kingbase@node1 data]$ netstat -antlp|grep -i listen|grep :54321
tcp 0 0 0.0.0.0:54321 0.0.0.0:* LISTEN 14665/kingbase
tcp6 0 0 :::54321 :::* LISTEN 14665/kingbase
查看数据库服务相关进程:
[kingbase@node1 data]$ ps -ef |grep 14665
kingbase 14665 1 0 12:51 ? 00:00:00 /home/kingbase/cluster/R6HA/KHA/kingbase/bin/kingbase -D /home/kingbase/cluster/R6HA/KHA/kingbase/data
kingbase 14669 14665 0 12:51 ? 00:00:00 kingbase: logger
kingbase 14671 14665 0 12:51 ? 00:00:00 kingbase: startup recovering 000000070000000200000086
kingbase 14672 14665 0 12:51 ? 00:00:00 kingbase: checkpointer
kingbase 14673 14665 0 12:51 ? 00:00:00 kingbase: background writer
kingbase 14674 14665 0 12:51 ? 00:00:00 kingbase: stats collector
kingbase 14676 14665 0 12:51 ? 00:00:02 kingbase: walreceiver streaming 2/860023B0
kingbase 15088 14665 0 12:52 ? 00:00:01 kingbase: esrep esrep 192.168.7.248(26056) idle
kingbase 15769 14665 0 12:52 ? 00:00:00 kingbase: system test ::1(26355) idle
故障解决:
修改数据库服务端口号:
[kingbase@node1 data]$ cat kingbase.conf |grep port
port = 54322 # (change requires restart)
2.2 数据库启动内存分配错误案例
案例说明:
数据库实例在启动时,日志信息提示“could not map anonymous shared memory: Cannot allocate memory“。数据库服务无法获取buffer分配,导致实例启动失败。通过重新配置内核,增加共享内存的尺寸或者缩小数据库共享buffer大小(shared_buffer)来解决问题。
故障现象:
[kingbase@node1 data]$ /opt/Kingbase/ES/V8R6_021/Server/bin/sys_ctl start -D /data/kingbase/v8r6_021/data
waiting for server to start....2021-03-01 13:01:46.176 CST [20183] LOG: sepapower extension initialized
2021-03-01 13:01:46.179 CST [20183] LOG: starting KingbaseES V008R006C004B0021 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
2021-03-01 13:01:46.179 CST [20183] LOG: listening on IPv4 address "0.0.0.0", port 54322
2021-03-01 13:01:46.179 CST [20183] LOG: listening on IPv6 address "::", port 54322
2021-03-01 13:01:46.316 CST [20183] LOG: listening on Unix socket "/tmp/.s.KINGBASE.54322"
2021-03-01 13:01:46.383 CST [20183] FATAL: could not map anonymous shared memory: Cannot allocate memory
2021-03-01 13:01:46.383 CST [20183] HINT: This error usually means that Kingbase's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently 8850808832 bytes), reduce Kingbase's shared memory usage, perhaps by reducing shared_buffers or max_connections.
2021-03-01 13:01:46.383 CST [20183] LOG: database system is shut down
stopped waiting
sys_ctl: could not start server
Examine the log output.
故障分析:
查看kingbase.conf文件中buffer的配置参数:
[kingbase@node1 data]$ cat kingbase.conf |grep buffer
shared_buffers = 8192MB # min 128kB
查看系统内存使用情况:
[kingbase@node1 data]$ free -m
total used free shared buff/cache available
Mem: 3381 435 2060 70 885 1833
Swap: 2815 0 2815
===从kingbase.conf文件中查看buffer配置(8192M),已经超出了系统物理内存和swap分区的总和(3381+2815 M),导致数据库实例无法获取到指定的buffer,从而导致实例启动失败。===
故障解决:
修改kingbase.conf文件调整buffer的大小:
[kingbase@node1 data]$ cat kingbase.conf |grep -i shared_buffer
shared_buffers = 1024MB # min 128kBM
三、总结
对于数据库服务启动的故障,可以根据启动的日志信息进行分析、判断所产生的故障原因;一般数据库服务启动的故障,大部分和数据库的配置(kingbase.conf)参数有关,所以在分析、解决问题时,可以结合配置文件参数的配置和系统环境配置进行处理。
参考文档:
[安装与升级]基于Linux系统的数据库软件安装指南(单机版)]
KingbaseES启动数据库失败后如何分析的更多相关文章
- mongodb 启动数据库失败原因及解决办法
刚开始接触mongodb 每次启动完数据库 用好之后退出时直接 command+q强制退出了 导致了下一次数据库启动失败 错误原因: 上一次退出数据库端口号并没有杀死 解决办法 lsof -i tc ...
- Oracle 数据库 JOB 失败后解密法重试
因为官方文档上没有找到相关的说明,所以这里进行了例如以下測试,为了找到oracle数据库中 job 失败后重试时间的规律. 数据库版本号:11.2.0.3 測试说明:这里创建了一个日志表以及一个执行时 ...
- 【BUG】插入或者更新超过限制后写入数据库失败
Error Code: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your ...
- 用户关注微信公众号后,获取该用户的openID存数据库失败
关注微信公众号后将关注人的openID存入数据库失败,而openID换成字符串写死却可以存入数据库: $wxid=$postObj->FromUserName; $data['wx_openid ...
- oracle数据库默认是10次尝试失败后锁住用户
一般数据库默认是10次尝试失败后锁住用户 1.查看FAILED_LOGIN_ATTEMPTS的值select * from dba_profiles: 2.修改为无限次(为安全起见,不建议使用)alt ...
- ipsec][strongswan] ipsec SA创建失败后的错误处理分析
〇 ike协商的过程最终是为了SA的建立, SA的建立后, 在底层中管理过程,也是相对比较复杂的. 这里边也经常会出现失败的情况. 我们以strongswan为例, 在strongswan的底层SA管 ...
- 安装Jenkins后 启动时失败的问题解决
命令行执行,java -jar jenkins.war,报错 ------------------------------- SEVERE: Container startup failed java ...
- (转)Db2 数据库常见堵塞问题分析和处理
原文:https://www.ibm.com/developerworks/cn/analytics/library/ba-lo-db2-common-blocking-problem-analyze ...
- Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
应用场景 前两天我们已经介绍了两种Spring Cloud Stream对消息失败的处理策略: 自动重试:对于一些因环境原因(如:网络抖动等不稳定因素)引发的问题可以起到比较好的作用,提高消息处理的成 ...
随机推荐
- 使用dockerfile部署springboot应用
本章简单展示如何最短时间 把springboot应用打包成镜像并创建成容器. 准备工作: 1.安装docker ,保证执行docker version没有问题 2.拉下来一个jdk镜像 docker ...
- 隐私计算FATE-离线预测
一.说明 Fate 的模型预测有 离线预测 和 在线预测 两种方式,两者的效果是一样的,主要是使用方式.适用场景.高可用.性能等方面有很大差别:本文分享使用 Fate 基于 纵向逻辑回归 算法训练出来 ...
- Unity-A-Star寻路算法
最短路径 将地图存成二维数组,通过行列查找: 每一步都查找周围四个方向,或者八方向的所有点,放入开表: 是否边缘 是否障碍 是否已经在确定的路线中 计算每个方向上路径消耗,一般斜着走消耗小,收益大: ...
- NC14661 简单的数据结构
NC14661 简单的数据结构 题目 题目描述 栗酱有一天在网上冲浪的时候发现了一道很有意思的数据结构题. 该数据结构形如长条形. 一开始该容器为空,有以下七种操作. 1 a从前面插入元素a 2 从前 ...
- Tapdata Cloud 版本上新 | 支持通知自配置,支持GP、MQ数据源,界面更友好!
Tapdata Cloud https://cloud.tapdata.net Tapdata Cloud 是国内首家异构数据库实时同步云平台,目前支持Oracle.MySQL.PG.SQL Serv ...
- EEPROM存储电路(M24C64芯片)
电可擦写可编程只读存储器(Electrically Erasable Programmable Read-only Memory, EEPROM)实现掉电情况下保存数据,设计温湿度变送器采用M24C6 ...
- day09 集合排序_Collection接口与Collections工具类
集合的排序 java.util.Collections类 Collections是集合的工具类,里面定义了很多静态方法用于操作集合. Collections.sort(List list)方法 可以对 ...
- 背包问题学习笔记 / Dynamic Programming(updating)
01背包问题 朴素版:(二维数组) 状态表示: dp[i][j]:从前i个物品中选择(每个物品只能选0或1个)且总体积不超过j的集合的最大价值,则dp[n][m]就是最终答案(n:物品数量,m ...
- 倍增求RMQ
RMQ,即区间最值查询,给定一个序列,求区间l-r的最大值.最小值. st表求RMQ,预处理On*logn,查询O1. 预处理: void init_rmq() { for(rll j=1;j< ...
- 2022-07-10 第五小组 pan小堂 css学习笔记
css学习笔记 什么是 CSS? CSS 指的是层叠样式表* (Cascading Style Sheets) CSS 描述了如何在屏幕.纸张或其他媒体上显示 HTML 元素 CSS 节省了大量工作. ...