关键字:

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启动数据库失败后如何分析的更多相关文章

  1. mongodb 启动数据库失败原因及解决办法

    刚开始接触mongodb 每次启动完数据库  用好之后退出时直接 command+q强制退出了 导致了下一次数据库启动失败 错误原因: 上一次退出数据库端口号并没有杀死 解决办法 lsof -i tc ...

  2. Oracle 数据库 JOB 失败后解密法重试

    因为官方文档上没有找到相关的说明,所以这里进行了例如以下測试,为了找到oracle数据库中 job 失败后重试时间的规律. 数据库版本号:11.2.0.3 測试说明:这里创建了一个日志表以及一个执行时 ...

  3. 【BUG】插入或者更新超过限制后写入数据库失败

      Error Code: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your ...

  4. 用户关注微信公众号后,获取该用户的openID存数据库失败

    关注微信公众号后将关注人的openID存入数据库失败,而openID换成字符串写死却可以存入数据库: $wxid=$postObj->FromUserName; $data['wx_openid ...

  5. oracle数据库默认是10次尝试失败后锁住用户

    一般数据库默认是10次尝试失败后锁住用户 1.查看FAILED_LOGIN_ATTEMPTS的值select * from dba_profiles: 2.修改为无限次(为安全起见,不建议使用)alt ...

  6. ipsec][strongswan] ipsec SA创建失败后的错误处理分析

    〇 ike协商的过程最终是为了SA的建立, SA的建立后, 在底层中管理过程,也是相对比较复杂的. 这里边也经常会出现失败的情况. 我们以strongswan为例, 在strongswan的底层SA管 ...

  7. 安装Jenkins后 启动时失败的问题解决

    命令行执行,java -jar jenkins.war,报错 ------------------------------- SEVERE: Container startup failed java ...

  8. (转)Db2 数据库常见堵塞问题分析和处理

    原文:https://www.ibm.com/developerworks/cn/analytics/library/ba-lo-db2-common-blocking-problem-analyze ...

  9. Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)

    应用场景 前两天我们已经介绍了两种Spring Cloud Stream对消息失败的处理策略: 自动重试:对于一些因环境原因(如:网络抖动等不稳定因素)引发的问题可以起到比较好的作用,提高消息处理的成 ...

随机推荐

  1. 封装一个基础的vue-router

    前言主要知识点: 路由原理 Hash与History 实现路由 一.一个vue路由的工作原理前端路由与后端路由的区别: 后端路由:输入url>请求发送到服务器>服务器解析请求的路径> ...

  2. SAP 实例 5 CFW Events

    REPORT demo_custom_control . * Declarations ***************************************************** CL ...

  3. 实战回忆录:从Webshell开始突破边界

    正文 某授权单位的一次渗透,由于使用的php框架,某cms的上传,从实现webshell开始. 详情 添加监听,生成木马文件更改应用程序名称隐藏上线. 修改休眠时间为10秒 查看主机名whoami 抓 ...

  4. Redis 笔记 01:入门篇

    Redis 笔记 01:入门篇 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...

  5. 关于(Java)方法的再认识

    1.方法的调用(图中两个方法在一个包中) 2.静态与非静态 两个非静态可以调用 但是静态不可以同时调用非静态 package com.oop;public class Way02 { public s ...

  6. 中国顶级程序员,从金山WPS走出来,自研了“表格编程”神器

    程序员的圈子里有很多如明星般闪耀的牛人! 有中国"第一代程序员"--求伯君,有在微信获得巨大成功的张小龙,有图灵奖获得者姚期智,有商业巨子张一鸣,更有开源影响力人物--章亦春. 章 ...

  7. dense_rank()和rank() 窗口函数 mysql

    dense_rank()的语法 DENSE_RANK() OVER ( PARTITION BY <expression>[{,<expression>...}] ORDER ...

  8. Linux、Ubuntu常用命令

    # 文件解压缩 # zip压缩目录(附带目录权限) zip -q -r html.zip /home/html 压缩目录 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz ...

  9. 从零开始Blazor Server(6)--基于策略的权限验证

    写这个的原因 现在BootstrapBlazor处于大更新时期,Menu组件要改为泛型模式. 本来我们的这一篇应该是把Layout改了,但是改Layout肯定要涉及到菜单,如果现在写了呢,就进入一个发 ...

  10. Sphere类定义

    这个类是球体,也就是一会要显示的球体了.这个类继承于Geometrics类,并实现了自己的碰撞检测,碰撞原理,书上也说的很清楚了啊,大家多看.然后对照代码就明白了. 类定义: #pragma once ...