【本文正在参与炫“库”行动——人大金仓有奖征文活动。CSDNhttps://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb】
近些年来,我国数据库国产化计划正在轰轰烈烈的进行中,从十年前阿里的去IOE到如今国产数据库的豪强林立,不得不说数据库行业发展形势的日新月异。
据了解国产数据库中有四家在引领国产数据库的形势,分别是人大金仓的kingbase、达梦的Dbase、南大通用的Gbase8a和神州通用KSTORE数据库,这四家数据库厂商之间各有优劣,都在国家个行业之间占有较大的份额。而据数据显示,在2021年6月份社会举办的XC纵横投票活动中,金仓数据库在发展前景一项中荣获第一,故为了更好的向大家普及和介绍国产数据库的技术知识,本文将会选择金仓数据库为例向大家进行笔记分享。
众所周知,当我们接触一个新应用后,必然会经历安装部署和操作测试过程,故接下来,本文将会将安装常见的错误和平时操作测试的常用命令进行分享。
一、 安装部署常见问题总结1. 安装包和操作系统不匹配
报错如下:
金仓数据库安装包的差异是根据操作系统进行分类的,大致分为四类windows操作系统、linux操作系统、arch操作系统和mip四种,假如安装过程中出现以上错误,将代表安装包使用错误,请在使用arch命令查看系统从而匹配正确的安装包。
2. 调用图形化工具失败
当我们进行数据库安装或者集群部署的时候往往需要启动图形化界面,而有时候进行安装或者部署的时候却会显示打开图形化失败或者不会弹出图形界面,本部分内容将会对如何解决这个问题进行解析:
2.1 xshell启动图形化界面
当我们直接在xshell页面进行打开图形化界面时,可能会报出如下错误:
解决方法:
假设当我们使用xshell进行图形化部署的时候,首先需要一个前提条件,需要安装有Xmanger软件。
打开图形化步骤:
首先双击打开Xmange软件,打开之后右下角会出现相应图标
进入部署数据库的用户kingbase用户,在命令行输入:
exportDISPLAY=本机IP(非远程部署服务器IP):0.0
再次启动部署的相关脚本即可
2.2 Mobax无法启动图形化界面
解决方法:
进入root用户
分别打开/etc/ssh/ssh_config和/etc/ssh/sshd_config两个文件,对如下参数进行更改。
PermitRootLogin yes X11Forwarding yes AllowTcpForwarding yes X11DisplayOffset 10 X11UseLocalhost yes
重启sshd服务
systemctl restart sshd.services
或者:
service sshd restart
注:如果是ubuntu系统,则为重启ssh服务
systemctl restart ssh.services service ssh restart3. windows安装成功无法启动
在windows上部署kingbase数据库可能会出现如上问题,这是因为部署的时候data目录没有权限所以未实装导致的,您可以检查一下设定的data目录是否存在。
解决方法:重新安装,在安装时不要默认安装路径,手动选择data路径即可。
4. R3 320以上版本集群无法添加节点
情况多出现在堡垒机或者ssh连接时需要登录其他用户进行跳转root用户的情况,报错如下(本次测试案例,主机IP为192.168.6.6,备机IP192.168.6.7):
检查步骤:
4.1 查看防火墙是否已关闭:
由上图可知,防火墙已关闭。
4.2 ssh跳转 测试:
由上图可知,192.168.6.7服务器可以向192.168.6.6免密跳转。
4.3 /etc/ssh/sshd_config中参数是否更改
由上图可知,部署集群需要更改的参数已经追加。
最后排查原因:
sshd文件中包含PermitRootLogin without-password参数,致使无法进行连接。
解决方法:
进入/etc/ssh/sshd_config文件,进行查找上述参数并进行更正或者删除
重启sshd服务
systemctl restart sshd.services service sshd restart
注:如果是ubuntu系统,则为重启ssh服务
systemctl restart ssh.services service ssh restart
5. 集群部署过程中出现limits报错
limits参数报错如下:
上述报错出现limits限制文件错误,当假设我们进行各种更改之后发现自己设置的limits参数仍未生效时,可能原因如下。
解决方法:
查看自己的kingbase用户前缀是不是$符号,如下:
如果是,即进入root用户,打开/etc/passwd文件,shift+G,查看kingbase用户后面是否是/bin/sh,改成bash即可:更改效果如下:
6. 集群部署过程中启动数据库失败问 题:集群部署过程中启动数据库失败,手动启动失败
解决方法:查看单机进程是否启动进行关闭
7. 拉取主数据失败
问 题:拉取主数据失败进行报错,报错提示手动sys_basebackup进行操作,手动操作说流复制失败,授权文件不支持
解决方法:查看授权,是否是标准版,是替换成企业版
其他可能:防火墙的问题
8. 进行备份时提示Kingbase没有权限进行定时任务
使用root用户进入/etc/con.alllow文件
插入kingbase
9. 缺失软链接
缺失软链接报错如下:
在/usr/lib64/中加入缺失的软链接
ln -s /usr/lib64/libnsl.so.5 /usr/lib64/libnsl.so.1
10. 专用机重做部署集群通信连接问题
软链接未做:ln -s /usr/lib64/libnsl.so.2 /usr/lib64/libnsl.so.1
上述问题皆为常见的部署问题,由于篇幅有限,故取出了一部分常见问题供大家进行参考。
二、常用操作命令和概念
1. 字符集编码
编码分别为三种服务器编码(server_enconding)、客户端编码(client_enconding)和数据库编码(库内l),对于编码而言,服务器编码可以和客户端不同,二者之间存在驱动可以相互转换,但是客户端必须和当前环境的一致,不然会发生乱码,安装数据库时设置的编码是客户端编码。
编码设置的级别共有三级,高级别会对低级别的设置进行覆盖,其中LANG为最低级别的设置,即默认设置,当十二种编码未专门指定使用何种编码时,则会使用LANG所指定的编码,LC_ALL为最高级别设置,即假如其他类型编码被指定,LC_ALL所指定的编码会强制覆盖其余所有指定和非指定的编码形式。中间级别的编码为指定编码,即对其余十个类型进行指定,假如未设定LC_ALL时,会生效。
设置编码的前提知识
字符集编码的设置分为全局变量和区域变量,以虚拟机linux为例,分为root和kingbase两个用户,如果在root下进行设置,则会使所有的用户的编码都按照root指定的形式。(注意,当root编码进行设置时,我们会发现root本身的编码未改变,也可能会出现root编码和其子用户kingbase的编码不一致的现象,甚至子用户的编码不能进行修改,这是因为root未进行重启,当重启后,root编码会改变)。
2. 字符集编码更改 2.1查看字符集编码[root@R3D ~]# locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MonETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL=2.2 更改字符集编码为GBK 编码,暂时生效
ksql -USYSTEM -W123456 -d TEST set client_encoding =GBK(暂时生效,退出库失效)2.2 编码永久生效
root环境的编码设置方法,root中更改操作系统的字符集编码共有两个文件,分别是设置默认编码的/etc/locale.conf文件和指定编码的/etc/sysconfig/profile文件,如下:
cat /etc/locale.conf LANG="zh_CN.UTF-8"
此文件是设置默认编码的文件位置,假设没有指定某种类型的编码时,所有类型的编码都会服从此设置。
[root@R3D etc]# locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MonETARY="zh_CN.UTF-8" LC_MESSAGES=zh_CN.GBK LC_PAPER=zh_CN.GBK LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL= [root@R3D etc]# echo "export LC_CTYPE="zh_CN.GBK"">>/etc/profile [root@R3D etc]# source /etc/profile [root@R3D etc]# locale LANG=zh_CN.UTF-8 LC_CTYPE=zh_CN.GBK LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MonETARY="zh_CN.UTF-8" LC_MESSAGES=zh_CN.GBK LC_PAPER=zh_CN.GBK LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL= [root@R3D etc]#
上述文件是指定某个数据类型编码的设置文件,如上图所示,当我们在文件中加入一条指定编码时,再次查询,编码发生了改变
kingbase用户下设置编码
kingbase下设置编码为局部环境,kingbase用户也有两个文件可以设置编码:环境变量的文件 .bashrc和data目录下的kingbase.conf(但是据实验可知,.bashrc设置的会覆盖kingbase.conf设置的)
[root@R3D etc]# su - kingbase ⚌⚌һ⚌ε⚌¼⚌⚌三 9月 29 22:28:18 CST 2021⚌⚌ 192.168.6.5pts/0 ⚌⚌ [kingbase@R3D ~]$ locale LANG=zh_CN.UTF-8 LC_CTYPE=zh_CN.GBK LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MonETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL= [kingbase@R3D ~]$ echo "export LC_CTYPE="zh_CN.UTF-8"">>.bashrc [kingbase@R3D ~]$ source .bashrc [kingbase@R3D ~]$ locale LANG=zh_CN.UTF-8 LC_CTYPE=zh_CN.UTF-8 LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MonETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL=
3. 集群IP或者端口号更改
由于各种原因,我们需要更换自己部署集群的主备IP或者是虚拟IP管理IP,但是由于条件限制,不能卸载重新部署,故提供了如下更换IP或者端口号的方法:
停止集群
进入集群的安装目录
执行此条命令,其中的ip地址根据需要更换成自己需要更改的ip或者端口号:
grep -rn 192.168.6. *|grep -v -E 'log|sql'|awk -F ';' '{print $1}'|sort|uniq
执行后会罗列出所有含有此IP的文件
对罗列出的文件进行复制备份,以免失误
对文件内IP地址进行更改,进入文件内执行以下命令
重启集群
4. kingbase数据库system用户被锁
在kingbase.conf下加入参数,设置锁的时间
Error_user_connect_interval=1 Error_user_connect_times=10
并进行重启(设置为1分钟,过后连接即可)
5. 内部创建其他字符集的数据库
集群部署时只能默认UTF-8字符集,后续建其他字符集格式库命令行,创建GBK字符集的库(zh代表中文, CN代表大陆地区,GBK表示字符集,en_us是英语美国)
create database db1 with template template0 encoding 'GBK' lc_collate 'zh_CN.GBK' lc_ctype 'zh_CN.GBK';
6. kingbase集群system密码更改
集群密码的正确更改方式:
进入集群的bin目录下
Kingbase_monitor.sh change_password user old_password new_password
7. V8R6数据类型长度单位设置
字符单位分为byte和char
R3中进行更改单位的参数是
char_default_type=char
R6则是在kingbase.conf中添加参数
nls_length_semantics='byte'
上述内容是刚接触数据库会经常遇见的操作和问题,希望对大家有所帮助。



