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对消息失败的处理策略: 自动重试:对于一些因环境原因(如:网络抖动等不稳定因素)引发的问题可以起到比较好的作用,提高消息处理的成 ...
随机推荐
- kubernetes集群简单实例搭建
systemctl stop firewalld && systemctl disable firewalldvim /etc/selinux/configSELINUX=disabl ...
- Educational Codeforces Round 128 (Rated for Div. 2) A-C+E
Educational Codeforces Round 128 (Rated for Div. 2) A-C+E A 题目 https://codeforces.com/contest/1680/p ...
- halcon简易标定代码
read_image (Image, 'C:/Users/HJ/Desktop/demo1/4.bmp') threshold(Image, Region, 110, 255) closing_cir ...
- SSH隧道代理
应用场景: A机器可以通过SSH连接到B机器,然后A想用B的身份访问B所在的资源(主要用于浏览器访问) 命令: A机器通过ssh与B建立连接,并暴露3128端口:ssh -N -D 127.0.0.1 ...
- 市面上的工业ERP系统如何区别?存在什么样的不同?
工业发展当中所要涉及到的管理是繁琐而复杂的,在ERP系统的拓展开发中,市面上出现了很多的工业ERP系统来让企业选择.这是近年来非常受欢迎的一种管理手段,依靠计算机系统的强大功能,来实现数据化的管理,企 ...
- angular变更检测相关文章
你需要了解的关于Angular 变更检测的一切 If you think `ngDoCheck` means your component is being checked - read this a ...
- 丽泽普及2022交流赛day14
目录 A 题面 题解 B 题面 题解 C 题面 题解 D 题面 题解 A 题面 一个 \(1\dots n\) 的排列 \(p\) 和一个 \(1\dots n-1\) 的排列 \(q\) 满足 对排 ...
- Odoo14 一些好用的开源的模块
# odoo14中一些好用的开源的模块 1.intero_reload_form 刷新按钮(页面数据刷新,而不是按F5刷新整个页面) 2.ms_magic_button 弹框下拉选项 3.sessio ...
- Java学习 (五)基础篇 数据类型
目录 数据类型 强类型语言 弱类型语言 Java数据类型分为两大类 八大字节类型(重点) Java数据类型拓展 整数拓展:进制 浮点数拓展 字符类型 布尔值拓展 数据类型 强类型语言 要求变量的使用要 ...
- MySQL主从复制之半同步(semi-sync replication)
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 半同步简介 MASTER节点在执行完客户端提交的事务后不是立刻返回结果给客户端,而是等待至少一个SLAVE节点接收并写到r ...