KingbaseES 提供数据库部署工具进行数据库集群的部署。KingbaseES 提供基于图形化和命令行操作的集群部署方式,本文档主要用于指导不支持 GUI 的服务器上的 KingbaseES 集群部署工作。
KingbaseES软件能够提供一主一备以及一主多备的高可用集群架构,实现数据及实例级 (异地) 故障容灾,也能够提供多节点并行服务,内存融合及存储共享,实现高并发性能利用最大化,结合读写分离或备份使用同步实现数据保护最大化。
节点名称 |
IP |
操作系统 |
平台 |
cpu |
内存 |
硬盘 |
备注 |
node1 |
X86_64 |
192.168.40.152 |
Centos 7.9 x86_64 |
64 |
4G |
40G |
主节点 |
node2 |
X86_64 |
192.168.40.153 |
Centos 7.9 x86_64 |
64 |
2G |
40G |
备节点 |
node3 |
X86_64 |
192.168.40.154 |
Centos 7.9 x86_64 |
64 |
2G |
40G |
见证节点 |
最小配置要求 :
项 |
最低标准 |
CPU |
主流的32位或64位CPU |
内存 |
1GB以上 |
硬盘 |
1GB以上空闲空间 |
--安装支持图形化的依赖包
yum groupinstall "GNOME Desktop"
yum groupinstall “X Window System"
--安装系统依赖包
yum install -y lsof
yum install -y net-tools
yum install -y unzip
检查服务器时间
--检查服务器时间
date
--若操作系统时间不准确,进行修改
date -s "时间"
--centos6及之前版本或者使用iptables的系统
查看状态:
service iptables status
关闭防火墙:
service iptables stop
关闭防火墙开机自启动:
chkconfig iptables off
--centos7或者是使用firewalld的系统
#查看状态:
systemctl status firewalld
#关闭防火墙:
systemctl stop firewalld
#关闭防火墙开机自启动:
systemctl disable firewalld
cp /etc/selinux/config /etc/selinux/config_bak_`date +%F`
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
--图形化的依赖包
yum install -y xorg-x11-xauth #安装x11组件包
yum -y install wqy-zenhei-fonts* #安装中文字库
--集群需要的依赖包
yum install -y net-tools
yum install -y unzip
yum install -y lsof
使用which ip 命令确认ip命令存在且可正常使用 得到ip命令的路径path,使用chmod u+s $path/ip,确保普通用户有权限执行
--ip命令的路径
[root@localhost ~]# which ip
/usr/sbin/ip
--赋予权限
chmod u+s $path/ip
参数说明
针对某个程序任何用户都有读写这个程序的权限,可以像root用户一样操作。
注意事项:只有集群中设置了VIP才需要设置、检查此项。
如果配置了VIP,集群默认使用自带的arping,无需检查。
cp /etc/security/limits.conf /etc/security/limits.conf_bak_`date +%F`
cat >> /etc/security/limits.conf << "EOF"
* soft nofile 65536
* hard nofile 65535
* soft nproc 65536
* hard nproc 65535
* soft core unlimited
* hard core unlimited
EOF
参数说明:
#使用unlimited ,是最大数量则表示无限制
#*表示所有用户,这里也可只设置root和要安装的kingbase用户设置其值
#nofile是打开文件最大数目,nproc为进程最大数目,core为生成内核文件大小的上限
# soft代表一个警告值,hard为真正的阈值,超过就会报错,可以适当继续往高调
# PAM的调整针对单个会话生效,调整后需重新登录root和kingbase,用ulimit -n查看生效情况
注意事项:设置nofile的hard limit不能大于/proc/sys/fs/nr_open,否则注销后将无法正常登陆。
cp /etc/sysctl.conf /etc/sysctl.conf_bak_`date +%F`
sed -ri '/net.ipv4.ip_forward/s#0#1#' /etc/sysctl.conf
cat >> /etc/sysctl.conf <
如果出现ssh/sys_securecmd心跳超时建议修改网络传输队列类型;特别是队列类型是pfifo_fast 很有可能出现心跳超时问题,例如:
tc qdisc replace dev 网卡名称 root fq_codel # 当前生效(重启设备会失效)
echo "net.core.default_qdisc=fq_codel" >> /etc/sysctl.conf # 永久生效(需重启设备)
vim /etc/systemd/logind.conf
#修改IPC ,某些操作系统会默认打开,会造成程序信号丢失等问题(只有redhat7及以上和一些特殊的国产linux的版本需要修改,改之前可先查看此配置项中的此项是否为默认yes)
RemoveIPC=no
vim /etc/systemd/system.conf
#修复服务最大进程数限制,某些操作系统会有此限制
DefaultTasksAccounting=no 或DefaultTasksMax=65536
#执行以下命令生效,重启服务
systemctl daemon-reload
systemctl restart systemd-logind.service
systemd 228版本存在limit限制过低问题,会导致服务启动的程序超过限制后资源不可用的情况
--用service cron status 任一服务,查看其状态 Centos7.9无
root @ greatwall-os :~# service cron status
● cron.service - Regular background program processing
daemon
Loaded: loaded (/lib/systemd/system/cron.service;
enabled;xxx...)
Active: active (running) since 五 2019-08-16 11:28:58
CST; 1 weeks ago
Docs: man:cron(8)
Main PID: 3120 (cron)
Tasks: 204 (limit: 512)
可以观察到出现 limit : 512 默认限制。
在出现此情况时,修改 DefaultTasksAccounting=no会默认关闭
所有服务limit限制,修改后用 systemctl daemon-reload ;
systemctl daemon-reexec 生效。之后用同样方式查看
服务cron limit,若还未去除,需重启系统生效。
允许root登录,修改PermitRootLogin 的参数为yes
--允许root登录
vim /etc/ssh/sshd_config
#PermitRootLogin yes 更改为 PermitRootLogin yes
--重启服务生效
systemctl restart sshd
测试root ssh 自己ip和其他设备ip的耗时,若超过5s以上均为异常,需解决,否则会影响部署及HA的流程。
建议的参数调整:
GSSAPIAuthentication 改为no
UseDNS 改为no(谨慎)
--查看当前I/O调度策略
cat /sys/block/{DEVICE-NAME}/queue/scheduler
--临时修改:echo deadline > /sys/block/{DEVICE-NAME}/queue/scheduler
--永久修改:vim /etc /rc.d/rc.local
echo deadline >/sys/block/{DEVICE-NAME}/queue/scheduler
修改I/O调度策略为deadline(最后期限算法,根据算法保证请求不饿死){DEVICE-NAME} = 硬盘名称
#机械硬盘,推荐deadline调度算法,较为适合业务单一并且IO比较重的业务,比如数据库。
#固态硬盘,推荐noop调度算法。
--查看系统支持IO调度算法
-bash-4.2# dmesg\| grep -i scheduler
[ 1.203287] io scheduler noop registered
[1.203289] io scheduler deadline registered (default)
[ 1.203311] io scheduler cfq registered
[ 1.203314] io scheduler mq-deadline registered
[ 1.203316] io scheduler kyber registered
--查看某块盘的IO调度算法:
-bash-4.2# cat /sys/block/sda/queue/scheduler cfq
cat /etc/passwd | grep kingbase(是否存在,存在则执行下条命令删除)
userdel -rf kingbase
groupadd -g 1010 kingbase
useradd -d /home/kingbase -g kingbase -u 1010 kingbase
echo kingbase | passwd --stdin kingbase # 更改kingbase 即操作系统kingbase账户密码
chage -M 99999 kingbase
id kingbase
uid=1001(kingbase) gid=1001(kingbase) groups=1001(kingbase)
安装目录和数据目录暂时不能修改,默认路径/home/kingbase/cluster/项目名/集群名下。
--归档目录
mkdir -p /KDBARCH
chown -R kingbase:kingbase /KDBARCH
注意:
安装目录和数据目录暂时不能修改,默认路径/home/kingbase/cluster/项目名/集群名下。安装过程中会提示指定安装目录和数据目录,如果目录不存在安装程序会自动创建。
需每个节点都创建归档目录,不然部署集群过程中会报错。
访问金仓数据库官网下载金仓最新版本的数据库
目前金仓官方提供了所有可支持的平台的数据库版本和license,KingbaseES数据库最新版本为V8R6,先前分为单机版和集群版2种安装介质,现已合成1个安装介质,不再区分单机版和集群版。
数据库软件官方下载地址:人大金仓-成为世界卓越的数据库产品与服务提供商
授权文件官方下载地址:人大金仓-成为世界卓越的数据库产品与服务提供商
--挂载安装包
[root@localhost opt]# mount /opt/KingbaseES_V008R006C008B0014_Lin64_install.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only
--拷贝安装介质文件至kingbase用户下
[root@localhost kingbase]# cd /mnt
[root@localhost mnt]# cp -r * /home/kingbase/
--拷贝授权文件至kingbase用户下并解压
[root@localhost ~]# cp /opt/license_企业版.zip /home/kingbase/
[root@localhost ~]# cd /home/kingbase/
[root@localhost kingbase]# ls -l
total 8
-rw-r--r--. 1 root root 2735 Jan 5 10:50 license_企业版.zip
dr-xr-xr-x. 2 kingbase kingbase 54 Jan 5 10:32 setup
-r-xr-xr-x. 1 kingbase kingbase 3933 Jan 5 10:32 setup.sh
[root@localhost kingbase]# unzip license_企业版.zip
--赋予权限
[root@localhost kingbase]# chown -R kingbase:kingbase /home/kingbase/
1、进入install目录,执行sh setup.sh,开始使用图形化方式安装数据库(不能用root用户)
运行桌面上的Xmanager - Passive
su - kingbase
echo $LANG
export LANG=en_US.UTF-8
sh setup.sh -i console
2、输入Y同意协议,继续下一步
Add: 3 layer, B block, Information Industrial Park, Rongda Road 7, Chaoyang
District, Beijing, 100102 China
Tel: 86-10-5885 1118
Http: //www.kingbase.com.cn
National Hotline: 400-601-1188
Support E-mail: [email protected]
DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N):
DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): y
3、选择安装类型
选择客户端
Please choose the Install Set to be installed by this installer.
->1- Full
2- Client
3- Custom
ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS TO ACCEPT THE DEFAULT
: 2
4、点击选择,选择安装路径,也可以直接下一步,则使用默认安装路径,本文采用自定义安装目录
Choose Install Folder
---------------------
Please choose a destination folder for this installation.
Where would you like to install?
Default Install Folder: /opt/Kingbase/ES/V8
ENTER AN ABSOLUTE PATH, OR PRESS TO ACCEPT THE DEFAULT
: /KDBV8R6
INSTALL FOLDER IS: /KDBV8R6
IS THIS CORRECT? (Y/N): y
5、接下来是安装前的确认,直接进行安装即可
Pre-Installation Summary
------------------------
Please Review the Following Before Continuing:
Product Name:
KingbaseES V8
Install Folder:
/KDBV8R6
Product Features:
INTERFACE,
DEPLOY,
KSTUDIO,
KDTS
Install Disk Space Information
Require Disk space : 4653 MB Free Disk Space : 29918 MB
6、接下来就是自动安装的过程了,稍等
Ready To Install
----------------
InstallAnywhere is now ready to install KingbaseES V8 onto your system at the
following location:
/KDBV8R6
PRESS TO INSTALL:
===============================================================================
Installing...
-------------
[==================|==================|==================|==================]
[------------------|------------------|------------------|-------------
Installation Complete
---------------------
Congratulations. KingbaseES V8 has been successfully installed to:
/KDBV8R6
PRESS TO EXIT THE INSTALLER:
Complete.
--问题描述
Graphical installers are not supported by the VM. The console mode should be used instead...
--尝试办法1
修改ssh配置
vi /etc/ssh/sshd_config
...
#AllowAgentForwarding yes
AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
重启服务
systemctl restart sshd
安装依赖
yum install -y xorg-x11-xauth #安装x11组件包
yum -y install wqy-zenhei-fonts* #安装中文字库
--尝试办法2
xshell用kingbase连接
--最终解决办法
export DISPLAY=192.168.16.122:0.0
改成
export DISPLAY=192.168.40.10:0.0
数据库部署工具由纯java编写,用户仅需知道所需部署服务器的ip、port等信息,再根据工具的引导,输入集群脚本的关键参数,完成集群的引导步骤即可部署一套完整的集群服务,同时还提供集群状态监控服务。部署完成后,集群状态可被实时监控,在出现错误后提供日志供予错误分析,还可在查看监控的同时,修改集群参数,进行配置下发,以达到最好的状态。
功能概括:
警告
部署工具部署集群后,不支持手工在服务器修改集群相关配置参数,若进行修改,会导致工具无法获取其修改信息而导致集群异常。
命令行进入到安装目录下$InstallDir/ClientTools/guitools/DeployTools,执行./deploy,启动数据库部署工具。
su - kingbase
echo $LANG
export LANG=en_US.UTF-8
export LANG=zh_CN.UTF-8
export DISPLAY=192.168.40.10:0.0
cd /KDBV8R6/ClientTools/guitools/DeployTools
./deploy
--问题描述
[kingbase@localhost DeployTools]$ ./deploy
tools: Fatal IO error 0 (成功) on X server 192.168.40.10:0.0.
Deploy: 无法打开显示:
Deploy:
JVM terminated. Exit code=1
/KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools//../../../install/jre/bin/java
-Dorg.eclipse.swt.browser.XULRunnerPath=/KDBV8R6/xulrunner
-jar /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools//plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
-os linux
-ws gtk
-arch x86_64
-showsplash
-launcher /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools/deploy
-name Deploy
--launcher.library /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20150204-1316/eclipse_1607.so
-startup /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools//plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.overrideVmargs
-exitdata 1a
--showsplash
-vm /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools//../../../install/jre/bin/java
-vmargs
-Dorg.eclipse.swt.browser.XULRunnerPath=/KDBV8R6/xulrunner
-jar /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools//plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--解决办法
主节点,内存由2G扩展到4G解决了,不晓得是否是内容不足导致,反正是图形化界面显示了
1、在开启的“数据库部署工具”中,关闭欢迎窗口。然后点击左上角的“窗口”菜单
2、鼠标右键单击“集群项目名称”,工具弹出右键菜单,选择“创建项目”,如下图:
界面属性介绍如下:
projectName:新建项目的名称,只能是英文、数字、下划线或者三者组合,不能为空
根据实际的情况填入信息,然后点击界面右下角的按钮。按钮功能如下:
OK:验证当前所输入的信息是否正确有效之后,创建项目,并将该信息记录到隐藏文件下的配置文件中。
Cancel:放弃本次操作,并关闭当前创建项目的窗口
右键单击刚刚创建的项目节点,弹出菜单,选择“创建集群”。右键菜单如下图:
创建集群窗口,分为节点通用配置和db&repmgr配置两项。
项目创建成功后,在创建集群时,进行节点通用配置。
注意事项:创建集群成功后,节点通用配置参数将不能再修改。
界面如下:
配置项 |
描述 |
集群名称 |
新建的集群名称,只能是英文、数字、下划线或者三者组合,不能为空。 |
节点通用配置 |
当前配置适用于整个集群的所有节点,可以免除创建节点时重复 填写相同的值。 |
节点类型 |
选择当前创建的集群是通用机或者专用机,默认为通用机。 |
securecmd端口 |
工具连接节点或者直接向节点发起指令时, 创建连接所使用到的securecmd服务端口号,默认为8890,可根据环境修改 |
常规用户 |
部署集群所使用的账户,集群将会创建在该账户之下。 如果用户不存在,工具负责创建(创建用户命令为:useradd -g -m ), 并设置默认密码(123456)。 |
默认路径 |
集群安装的路径,路径由工具根据项目名称,集群名称拼接而成 且不可修改。 |
填写完成后点击“下一步”进入到db&repmgr配置,如下图:
配置项 |
描述 |
选择数据库zip包 |
点击选择按钮,选择db.zip。 补充: db.zip文件位置 /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools/zip/securecmdd.zip |
大小写不敏感 |
默认不勾选,即大小写敏感。 补充: Oracle模式下,大小写敏感可选;MySQL/Postgresql,大小写敏感不可选 |
max_connections |
数据库最大 连接数,默认100个,不能为空。参数最小值不能小于100, 最大值无限制。 |
listenerPort |
数据库监听端口号,默认54321,不能为空。 |
dbUser |
数据库用户名,默认system,不能为空。 |
dbPassword |
数据库密码,默认12345678ab,不能为空。 |
replication mode |
同步/异步模式:1.quorum 2.sync 3.async 4.all。 |
archive_path |
数据库归档路径。若不采用默认路径,支持事先规划 默认开启归档 |
dbmode |
数据库兼容模式, Oracle、PostgreSQL、MySQL两种模式,默认兼容Oracle。 |
加密算法 |
数据库认证采取的加密 方式,scram-sha-256、md5,默认是scram-sha-256。 |
ip类型 |
支持IPV4和IPV6两种地址类型。 |
trust_server |
集群的信任网关,网关可以填写多 个用英文逗号分隔,多个信任网关中有一个可用即可。 |
使用hostname |
开启后工具支持多网段域名部署 |
使用多网冗余部署 |
开启后connection_timeout参数改为10,关闭为5。 此功能需开启“使用hostname”才可使用。 |
ping_path |
系统环境中ping指令所在路径。 |
hamgr_dbname |
默认是esrep, 且不可修改。repmgr所依赖的表就存放在此数据库中。 |
hamgr_dbuser |
默认是esrep, 且不可修改。登录esrep数据库的用户为esrep。 |
data_directory |
集群数据库data存放路径。目前暂不支持自定义规划路径 |
sys_bindir |
集群数据库bin存放路径。 |
repmgrd_pid_file |
记录repmgrd pid文件路径, 默认值:${cluster_path}/kingbase/etc/repmgrd.pid, 参数值不允许修改。 写入repmgr.conf文件,参数名为:repmgrd_pid_file |
kbha_pid_file |
记录kbha pid文件路径, 默认值:${cluster_path}/kingbase/etc/kbha.pid, 参数值不允许修改。 写入repmgr.conf文件,参数名为:kbha_pid_file |
repmgrd_log_file |
记录repmgrd日志文件路径, 默认值:${cluster_path}/kingbase/log/hamgr.log, 参数值不允许修改。 写入repmgr.conf文件,参数名为:log_file |
kbha_log_file |
记录kbha日志文件路径, 默认值:${cluster_path}/kingbase/log/kbha.log, 参数值不允许修改。 写入repmgr.conf文件,参数名为:kbha_log_file。 |
running_under_fa ilure_trusted_se rvers |
网关故障后数据库是否继续运行,可选值为 on 或 off, 默认为on。on:网关故障后,数据库不受影响,正常运行; off:网关故障后,集群会关闭数据库保证数据不发生分歧。 补充: 信任网关是一个急群中所有节点都能ping通的ip,不需要任何安装部署,只需要这个ip能够保持稳定,不宕机就可以了,是作为集群节点是否存活的一种探测手段 |
data_checksums |
用于控制是否开启数据校验和功能,默认是开启状态。 on: 开启数据校验和功能; off:关闭数据校验和功能; 写 入repmgr_config.conf文件,参数名为:data_checksums。 补充: 数据校验功能是为了校验数据块是否有损坏,对于重要系统,建议开启这个功能,开启后对性能有一定影响。 |
流复制通信超时 时间 |
流复制之间的数据传输超时时间, 超过这个时间没有数据传输则表示流复制断开了, 会进行重连。默认30000毫秒 |
1.max_connections的值只能修改为更大的值,不能修改为更小的值。
2.执行which ping命令,查看操作系统中真实的ping_path路径,修改ping_path路径为查看的实际路径。 3.集群部署完成后,请不要修改repmgrd_pid_file、kbha_pid_file参数的值,修改后可能会造成同时启动多个kbha或repmgrd进程。
4.Oracle模式下,大小写敏感可选;MySQL/Postgresql,大小写敏感不可选。
5.默认开启归档
配置项 |
描述 |
wal_keep_segments |
最小预留xlog文件个数,默认为512个,不能为空。 |
max_wal_senders |
支持最大集群备机个数,默认为32,此配置项不能 大于max_connections,最少是n+4个,n为集群节点个数, 不能为空。 |
hot_standby_feedback |
备机读事物时避免主机vacuum造成的数据无法查询的 取消冲突,默认为on,开启状态。 |
control_file_copy |
控制文件多副本,最多可配置8个文件,写入到es_rep.conf里 |
审计表空间加密 |
若勾选,则初始化数据库时增加'-t'作为参数执行。 若输入框中输入内容, 则初始化数据库时增加'-t -K ${输入的内容}'作为参数执行。 |
log_checkpoints |
数据库日志中记录检查点和重启点。包括一些统计信息, 写入缓冲区的数据和写入所花的时间。 on、off。默认为on。 |
log_replication_commands |
数据库日志中记录每一个复制命令。 on、off。默认为on。 |
wal_compression |
打开此参数可以减小WAL所占的空间且无需承受不可恢复的 数据损坏风险。但代价是需要额外的CPU开销,以便在WAL 记录期间进行压缩以及在WAL重放时解压。 on、off。默认为on。 |
db_other_options |
在Oracle兼容模式下, initdb初始化数据库流程需添加兼 容V7参数 –scenario-tuning, 调用scenario_tuning.sql SQL脚本,生成V7兼容视图、字段, 以支持V7部分系统视图。 |
encoding |
模板数据库的编码格式,默认数据库的编码格式, 未选择encoding的情况下不可选择Collate和CType , 默认为default,将设置为服务器环境配置的字符集 |
Collate |
这个值决定了字符串类型排序的规则, 值为“C”时表示没有规则,即以二进制值大小为比较规则。 在初始化设置后不能被修改。 |
CType |
这个值决定了字符的分类,例如大小写和数字, 值为“C”时表示没有规则,即以二进制值大小为比较规则。 在初始化设置后不能被修改。 |
virtual_ip |
DB节点的虚拟ip(用于切换时ip的移动,一直跟随着主DB)。 目前支持多cluster,VIP就可以为空。如果要填写则必须 为有效的IP格式,且必须为无法ping通的IP地址。 |
virtual_ip_mask |
虚拟ip的掩码长度,默认为24。 掩码长度需要配置为加载虚拟ip的网卡的实际掩码长度。 |
ip_path |
系统环境中ip指令所在路径。 |
auto_cluster_recovery_level |
全故障自动恢复配置。0:关闭;1:打开,默认为1。 |
use_chek_disk |
|
conn_options |
connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3 tcp_user_timeout=9000 |
scmd_options |
-q -o ConnectTimeout=10 -o StrictHostKeyChecking=no -p 8890 -o ServerAliveInterval=2 -o ServerAliveCountMax=3 |
waldir |
指定链接的wal日志目录,将data目录中sys_wal目录 作为软连接的形式存在。 |
scmd_options |
集群节点ssh通信的配置项,连接超时10秒。 |
conn_options |
集群节点连接的配置项。 |
failover |
节点故障自动切换,automatic、manual,默认值 为automatic。 |
服务可用优先 /数据保护优先 |
单选项。根据选项不同,reconnect_attempts, reconnect_interval,recovery,synchronous_commit 四个参数的默认值不同。 默认选项为数据保护优先 |
reconnect_attempts |
集群中连接的重试次数。 服务可用优先默认值为3,数据保护优先默认值为10。 |
reconnect_interval |
集群中连接的重试间隔。 服务可用优先默认值为5,数据保护优先默认值为6。 |
recovery |
节点故障自动恢复,automatic、standby、manual。 manual,关闭自动恢复,故障节点无论是主机还是备机, 都不进行自动恢复;standby,故障节点是备机才自动恢复; automatic,所有故障节点都自动恢复。 服务可用优先默认值为automatic, 数据保护优先默认值为standby。 |
synchronous_commit |
指定在命令返回"success"指示给客户端之前, 一个事务是否需要等待WAL记录被写入磁盘。 on、off、local、remote_write、remote_apply。 服务可用优先默认值为on,数据保护优先默认值为remote_apply |
在使用NetworkManager管理网络服务的情况下,如果手动删除了virtual_ip所在网卡上所有的物理IP,有可能导致virtual_ip丢失,且在物理IP被重新添加上之前,virtual_ip不会自动添加。
执行which ip命令,查看操作系统中真实的ip_path路径,修改ip_path,路径为查看的实际路径。
展开当前创建的集群,右键选择菜单的“新增节点”,如下图所示:
工具开启“增加节点”流程窗口,如下图所示:
配置项 |
描述 |
使用ssh启动securecmd |
单选项,默认选中。 此项选中时,ssh端口、root密码、选择securecmd文件、 securecmd路径四项需配置。 可使用ssh方式上传并启用securecmd。 补充: securecmd文件位置 /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools/zip/securecmdd.zip |
主机名或IP地址 |
当前节点(服务器)的IP地址或主机名。 当“开启hostname”选项未勾选时,此处名称为IP地址。 |
ssh端口 |
节点所在的物理机器的ssh端口,默认22。不可为空。 |
root密码 |
节点所在的物理机器的root密码,不能为空。 |
选择securecmd文件 |
securecmd安装包,不可为空。 |
securecmd路径 |
节点服务器上securecmd部署路径,不可为空。 必须位于/home/${常规用户}目录下。 |
使用已部署的securecmd |
单选项,默认不选中 此项。选中时,securecmd需要用户手动在节点服务中配置, 用户可点击“下一步”进入节点配置页面。 |
配置项 |
描述 |
显示名称 |
用户自定义的节点名称(服务器的别名), 最终将会显示在左侧的树形菜单中。 |
主机名或IP地址 |
当前节点(服务器)的IP地址或主机名。 当“开启hostname”选项未勾选时,此处名称为IP地址。 |
securecmd端口,常规用户 ,默认路径 |
此三项均来自通用配置中,无需再次填写,且无法修改。 详细介绍参见通用配置参数介绍。 |
系统节点名称 |
系统节点名称记录在数据库配置文件中的节点(服务器)别名, 目前采用node + ip最后一段的拼接的方式命名。无法更改 |
网卡名称 |
此项主要是针对填写VIP选项的集群。使用VIP必须填写该VIP 要绑定的对应网卡名称。 支持获取多个网卡。点击“获取网卡”,列出所有状态UP的网卡 列表,并将与当前节点服器IP相同的网卡名称显示列表第一位。 可以从获取的网卡列表中选择一个,也可以手动进行填写。若没填写VIP选项的集群,选项为灰色不可填写 |
网卡物理IP地址 |
此项主要是针对填写VIP选项的集群。 填写网卡名称后,需要输入对应的网卡IP地址。 点击“获取”,工具显示对应的物理IP地址。 若存在多个地址,默认只显示第一个。 也可手动进行填写。 |
选择license文件 |
此项主要是针对非保密机集群。 需要选择集群节点所需要的license的上传路径。 |
检测合格后进入到系统环境检测步骤界面,此时需点击下方的检测按钮。如下图所示:
点击“检查”按钮, 环境参数的信息检测都会输出到这个界面中。输出信息中可能会出现红色和黄色提示,被标为红色ERROR的提示,意为不允许安装集群,用户需解决后,才可继续进行下一步。黄色警告意为不解决可能会导致集群出现问题隐患。例如:
(1)防火墙,有些用户和系统必须开,那么就需要用户将集群使用到的端口号添加到防火墙白名单中。
(2)检查发现[ulimit.open proc] is null,则需要检查一下集群用户的shell环境。 如下图所示:
点击“一键修改系统参数”按钮, 修改的系统参数项,都会输出到这个界面中。 如下图所示:
点击“关闭防火墙”按钮, 关闭防火墙的日志打印,都会输出到这个界面中。 如下图所示:
点击上图中“下一步”按钮,系统进入预览信息界面,当前界面将会把配置信息进行汇总并显示,如下图所示:
点击上图中“确定”按钮,系统进入集群部署界面,如下图:
图中按钮功能如下:
这里点击“部署”按钮,系统开始执行集群部署操作。执行过程截图如下:
部署时的界面打印。此界面将执行命令,返回结果等均进行输出,便于错误时候的查询报错信息。也便于学习和理解KingbaseES的部署流程步骤。
到此,集群部署顺利完成。
以此类推,进行第二个节点的部署。
展开当前创建的集群,右键选择菜单的“新增节点”,如下图所示:
工具开启“增加节点”流程窗口,如下图所示:
配置项 |
描述 |
使用ssh启动securecmd |
单选项,默认选中。 此项选中时,ssh端口、root密码、选择securecmd文件、 securecmd路径四项需配置。 可使用ssh方式上传并启用securecmd。 补充: securecmd文件位置 /KDBV8R6/KESRealPro/V008R006C008B0014/ClientTools/guitools/DeployTools/zip/securecmdd.zip |
主机名或IP地址 |
当前节点(服务器)的IP地址或主机名。 当“开启hostname”选项未勾选时,此处名称为IP地址。 |
ssh端口 |
节点所在的物理机器的ssh端口,默认22。不可为空。 |
root密码 |
节点所在的物理机器的root密码,不能为空。 |
选择securecmd文件 |
securecmd安装包,不可为空。 |
securecmd路径 |
节点服务器上securecmd部署路径,不可为空。 必须位于/home/${常规用户}目录下。 |
使用已部署的securecmd |
单选项,默认不选中 此项。选中时,securecmd需要用户手动在节点服务中配置, 用户可点击“下一步”进入节点配置页面。 |
配置项 |
描述 |
显示名称 |
用户自定义的节点名称(服务器的别名), 最终将会显示在左侧的树形菜单中。 |
主机名或IP地址 |
当前节点(服务器)的IP地址或主机名。 当“开启hostname”选项未勾选时,此处名称为IP地址。 |
securecmd端口,常规用户 ,默认路径 |
此三项均来自通用配置中,无需再次填写,且无法修改。 详细介绍参见通用配置参数介绍。 |
系统节点名称 |
系统节点名称记录在数据库配置文件中的节点(服务器)别名, 目前采用node + ip最后一段的拼接的方式命名。无法更改 |
网卡名称 |
此项主要是针对填写VIP选项的集群。使用VIP必须填写该VIP 要绑定的对应网卡名称。 支持获取多个网卡。点击“获取网卡”,列出所有状态UP的网卡 列表,并将与当前节点服器IP相同的网卡名称显示列表第一位。 可以从获取的网卡列表中选择一个,也可以手动进行填写。若没填写VIP选项的集群,选项为灰色不可填写 |
网卡物理IP地址 |
此项主要是针对填写VIP选项的集群。 填写网卡名称后,需要输入对应的网卡IP地址。 点击“获取”,工具显示对应的物理IP地址。 若存在多个地址,默认只显示第一个。 也可手动进行填写。 |
选择license文件 |
此项主要是针对非保密机集群。 需要选择集群节点所需要的license的上传路径。 |
解决办法:
[root@localhost ~]# yum install -y net-tools
解决办法:
[root@localhost ~]# yum install -y unzip
上传的过程中会解压,如果未安装unzip依赖包,会提示上传securecmd失败。
检测合格后进入到系统环境检测步骤界面,此时需点击下方的检测按钮。如下图所示:
点击“检查”按钮, 环境参数的信息检测都会输出到这个界面中。输出信息中可能会出现红色和黄色提示,被标为红色ERROR的提示,意为不允许安装集群,用户需解决后,才可继续进行下一步。黄色警告意为不解决可能会导致集群出现问题隐患。例如:
(1)防火墙,有些用户和系统必须开,那么就需要用户将集群使用到的端口号添加到防火墙白名单中。
(2)检查发现[ulimit.open proc] is null,则需要检查一下集群用户的shell环境。 如下图所示:
点击“一键修改系统参数”按钮, 修改的系统参数项,都会输出到这个界面中。 如下图所示:
点击“关闭防火墙”按钮, 关闭防火墙的日志打印,都会输出到这个界面中。 如下图所示:
点击上图中“下一步”按钮,系统进入预览信息界面,当前界面将会把配置信息进行汇总并显示,如下图所示:
点击上图中“确定”按钮,系统进入集群部署界面,如下图:
图中按钮功能如下:
这里点击“部署”按钮,系统开始执行集群部署操作。执行过程截图如下:
部署时的界面打印。此界面将执行命令,返回结果等均进行输出,便于错误时候的查询报错信息。也便于学习和理解KingbaseES的部署流程步骤。
到此,集群部署顺利完成。
以此类推,进行第三个或第四个等节点的部署。
[上传安装包&解压]
[忽略]
[License操作]
ln -s '/home/kingbase/cluster/topsy/syxk/license_29296_0.dat' /home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat;chmod 766 /home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat
exitStatus=0
[创建etc目录]
su - kingbase -c " mkdir -p /home/kingbase/cluster/topsy/syxk/kingbase/etc;touch /home/kingbase/cluster/topsy/syxk/kingbase/etc/repmgr.conf;touch /home/kingbase/cluster/topsy/syxk/kingbase/etc/all_nodes_tools.conf;mkdir -p /KDBARCH;"
mkdir: cannot create directory ‘/KDBARCH’: Permission denied
exitStatus=1
[上传安装包&解压]
[忽略]
[License操作]
ln -s '/home/kingbase/cluster/topsy/syxk/license_29296_0.dat' /home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat;chmod 766 /home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat
ln: failed to create symbolic link ‘/home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat’: File exists
exitStatus=0
[创建etc目录]
su - kingbase -c " mkdir -p /home/kingbase/cluster/topsy/syxk/kingbase/etc;touch /home/kingbase/cluster/topsy/syxk/kingbase/etc/repmgr.conf;touch /home/kingbase/cluster/topsy/syxk/kingbase/etc/all_nodes_tools.conf;mkdir -p /KDBARCH;"
exitStatus=0
[repmgr.conf文件配置]
[update repmgr.conf configuration completed.]
[all_nodes_tools.conf文件配置]
[update all_nodes_tools.conf configuration completed.]
[创建备节点]
su - kingbase -c " find /home/kingbase/cluster/topsy/syxk/kingbase/bin/ ! -name arping | xargs chmod +x ;/home/kingbase/cluster/topsy/syxk/kingbase/bin/repmgr.sh create_standby_node \"192.168.40.152\" "
[Fri Jan 5 20:21:57 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/sys_securecmd -p 8890 -o StrictHostKeyChecking=no -o ConnectTimeout=10 -l kingbase -T 192.168.40.152 "cat /home/kingbase/cluster/topsy/syxk//kingbase/etc/repmgr.conf " > /home/kingbase/cluster/topsy/syxk//kingbase/etc/repmgr.conf
[WARNING] following problems with command line parameters detected:
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
-D/--sysdata will be ignored if a repmgr configuration file is provided
[Fri Jan 5 20:21:58 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/sys_securecmd -p 8890 -o StrictHostKeyChecking=no -o ConnectTimeout=10 -l kingbase -T 192.168.40.152 "cat ~/.encpwd " > ~/.encpwd
[NOTICE] destination directory "/home/kingbase/cluster/topsy/syxk/kingbase/data" provided
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[INFO] connecting to source node
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[DETAIL] connection string is: host=192.168.40.152 user=esrep port=54321 dbname=esrep
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_NAME=node_id
[DETAIL] current installation size is 67 MB
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[NOTICE] checking for available walsenders on the source node (2 required)
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_VALUES='2'
[NOTICE] checking replication connections can be made to the source server (2 required)
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[INFO] creating directory "/home/kingbase/cluster/topsy/syxk/kingbase/data"...
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARM_EXIST=1
[INFO] creating replication slot as user "esrep"
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[NOTICE] starting backup (using sys_basebackup)...
[Fri Jan 5 20:21:58 CST 2024] [INFO] sed -i "/[#]*node_id[ ]*=/cnode_id='2'" /home/kingbase/cluster/topsy/syxk//kingbase/etc/repmgr.conf
[INFO] executing:
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
/home/kingbase/cluster/topsy/syxk/kingbase/bin/sys_basebackup -l "repmgr base backup" -D /home/kingbase/cluster/topsy/syxk/kingbase/data -h 192.168.40.152 -p 54321 -U esrep -c fast -X stream -S repmgr_slot_2
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_NAME=node_name
[NOTICE] standby clone (using sys_basebackup) complete
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[NOTICE] you can now start your Kingbase server
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_VALUES='node2'
[HINT] for example: sys_ctl -D /home/kingbase/cluster/topsy/syxk/kingbase/data start
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[HINT] after starting the server, you need to register this standby with "repmgr standby register"
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARM_EXIST=1
[INFO] connecting to local node "node2" (ID: 2)
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[INFO] connecting to primary database
[Fri Jan 5 20:21:58 CST 2024] [INFO] sed -i "/[#]*node_name[ ]*=/cnode_name='node2'" /home/kingbase/cluster/topsy/syxk//kingbase/etc/repmgr.conf
[WARNING] --upstream-node-id not supplied, assuming upstream node is primary (node ID: 1)
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[INFO] standby registration complete
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_NAME=conninfo
[NOTICE] standby node "node2" (ID: 2) successfully registered
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_VALUES='host
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARM_EXIST=1
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[Fri Jan 5 20:21:58 CST 2024] [INFO] sed -i "/[#]*conninfo[ ]*=/cconninfo='host=192.168.40.153 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3 tcp_user_timeout=9000'" /home/kingbase/cluster/topsy/syxk//kingbase/etc/repmgr.conf
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_NAME=net_device
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_VALUES=''
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_NAME=net_device_ip
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[Fri Jan 5 20:21:58 CST 2024] [INFO] PARAMETER_VALUES=''
[Fri Jan 5 20:21:58 CST 2024] [INFO] success
[Fri Jan 5 20:21:58 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/repmgr -h 192.168.40.152 -U esrep -d esrep -p 54321 --fast-checkpoint -D /home/kingbase/cluster/topsy/syxk/kingbase/data standby clone
[Fri Jan 5 20:21:59 CST 2024] [INFO] success
[Fri Jan 5 20:21:59 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/sys_ctl start -w -t 90 -D /home/kingbase/cluster/topsy/syxk/kingbase/data -o --port=54321
waiting for server to start....2024-01-05 20:21:59.783 CST [7506] LOG: sepapower extension initialized
2024-01-05 20:21:59.790 CST [7506] LOG: starting KingbaseES V008R006C008B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
2024-01-05 20:21:59.790 CST [7506] LOG: listening on IPv4 address "0.0.0.0", port 54321
2024-01-05 20:21:59.790 CST [7506] LOG: listening on IPv6 address "::", port 54321
2024-01-05 20:21:59.792 CST [7506] LOG: listening on Unix socket "/tmp/.s.KINGBASE.54321"
2024-01-05 20:21:59.857 CST [7506] LOG: redirecting log output to logging collector process
2024-01-05 20:21:59.857 CST [7506] HINT: Future log output will appear in directory "sys_log".
done
server started
[Fri Jan 5 20:21:59 CST 2024] [INFO] success
[Fri Jan 5 20:21:59 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/repmgr standby register -F
[Fri Jan 5 20:22:02 CST 2024] [INFO] success
[RUNNING] set scale_ip as 192.168.40.153...OK
[RUNNING] query archive command at 192.168.40.152 ...
[RUNNING] current cluster not config sys_rman,return.
exitStatus=0
[检测节点注册]
su - kingbase -c " /home/kingbase/cluster/topsy/syxk/kingbase/bin/repmgr cluster show "
[repmgr register success]
exitStatus=0
[启动节点]
su - kingbase -c " /home/kingbase/cluster/topsy/syxk/kingbase/bin/sys_monitor.sh start 2>&1;"
2024-01-05 20:22:03 Ready to start all DB ...
2024-01-05 20:22:03 begin to start DB on "[192.168.40.153]".
2024-01-05 20:22:04 DB on "[192.168.40.153]" already started, connect to check it.
2024-01-05 20:22:05 DB on "[192.168.40.153]" start success.
2024-01-05 20:22:05 Try to ping trusted_servers on host 192.168.40.152 ...
2024-01-05 20:22:09 Try to ping trusted_servers on host 192.168.40.153 ...
2024-01-05 20:22:12 begin to start DB on "[192.168.40.152]".
2024-01-05 20:22:13 DB on "[192.168.40.152]" already started, connect to check it.
2024-01-05 20:22:14 DB on "[192.168.40.152]" start success.
ID | Name | Role | Status | Upstream | Location | Priority | Timeline | LSN_Lag | Connection string
----+-------+---------+-----------+----------+----------+----------+----------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 | node1 | primary | * running | | default | 100 | 1 | | host=192.168.40.152 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3 tcp_user_timeout=9000
2 | node2 | standby | running | node1 | default | 100 | 1 | 0 bytes | host=192.168.40.153 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3 tcp_user_timeout=9000
2024-01-05 20:22:14 The primary DB is started.
2024-01-05 20:22:15 begin to start repmgrd on "[192.168.40.152]".
2024-01-05 20:22:16 repmgrd on "[192.168.40.152]" already started.
2024-01-05 20:22:16 begin to start repmgrd on "[192.168.40.153]".
[2024-01-05 20:22:17] [NOTICE] using provided configuration file "/home/kingbase/cluster/topsy/syxk/kingbase/bin/../etc/repmgr.conf"
[2024-01-05 20:22:17] [INFO] creating directory "/home/kingbase/cluster/topsy/syxk/kingbase/log"...
[2024-01-05 20:22:17] [NOTICE] redirecting logging output to "/home/kingbase/cluster/topsy/syxk/kingbase/log/hamgr.log"
2024-01-05 20:22:19 repmgrd on "[192.168.40.153]" start success.
ID | Name | Role | Status | Upstream | repmgrd | PID | Paused? | Upstream last seen
----+-------+---------+-----------+----------+---------+-------+---------+--------------------
1 | node1 | primary | * running | | running | 12422 | no | n/a
2 | node2 | standby | running | node1 | running | 7812 | no | 0 second(s) ago
[2024-01-05 20:22:26] [NOTICE] redirecting logging output to "/home/kingbase/cluster/topsy/syxk/kingbase/log/kbha.log"
[2024-01-05 20:22:28] [NOTICE] redirecting logging output to "/home/kingbase/cluster/topsy/syxk/kingbase/log/kbha.log"
2024-01-05 20:22:30 Done.
exitStatus=0
原因是采用了自定义的归档路径,未使用默认归档路径,事先未创建自定义的归档路径。
解决办法
--归档目录
su - root
mkdir -p /KDBARCH
chown -R kingbase:kingbase /KDBARCH
witness节点是一个正常的KingbaseES实例,不是流复制群集的一部分;其目的是,如果发生故障转移情况,则提供证明它是主服务器本身不可用的证据,而不是例如在不同物理位置之间的网络分裂。
展开当前创建的集群,右键选择菜单的“新增Witness节点”,如下图所示:
工具开启“新加Witness节点”流程窗口,ssh配置同新增节点章节,节点配置如下图所示:
配置项 |
描述 |
Witness名称 |
用户自 定义的Witness节点名称(服务器的别名) ,最终将会显示在左侧的树形菜单中。 |
主机名或IP地址 |
当前节点(服务器)的IP地址或主机名 当“开启hostname”选项未勾选时, 此处名称为IP地址。 |
securecmd端口、常规用户、 默认路径 |
此三项均来自通用 配置中,无需再次填写,且无法修改 。详细介绍参见通用配置参数介绍。 |
系统节点名称 |
系统节点名 称是用于记录在数据库配置文件中的 节点(服务器)别名,目前采用node + ip最后一段的拼接的方式命名。 |
选择license文件 |
此项主要 是针对非保密机集群。需要填写集群 节点所需要的license的上传路径。 |
解决办法:
[root@localhost ~]# yum install -y net-tools
解决办法:
[root@localhost ~]# yum install -y unzip
上传的过程中会解压,如果未安装unzip依赖包,会提示上传securecmd失败。
解决办法:
由于是中途取消,目录中文件未回滚删除,再次部署Witness节点提示上述报错。
[root@localhost ~]# cd /home/kingbase/cluster/
[root@localhost cluster]# ls -l
total 2524
drwxrwxr-x 5 kingbase kingbase 41 Sep 2 04:18 securecmdd
-rwxr-xr-x 1 kingbase root 2584328 Jan 5 20:37 securecmdd.zip
drwxr-xr-x 3 kingbase kingbase 18 Jan 5 20:38 topsy
[root@localhost cluster]# rm -rf *
[root@localhost cluster]#
解决办法
--安装lsof依赖包
[root@localhost cluster]# yum install -y lsof
--查看占用端口的程序和pid
[root@localhost cluster]# lsof -i:8890
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sys_secur 2453 root 3u IPv4 57276 0t0 TCP *:ddi-tcp-3 (LISTEN)
sys_secur 2453 root 4u IPv6 57277 0t0 TCP *:ddi-tcp-3 (LISTEN)
[root@localhost cluster]# ps -ef | grep 2453
root 2453 1 0 17:37 ? 00:00:00 sys_securecmdd: /home/kingbase/cluster/securecmdd/bin/sys_securecmdd -f /etc/.kes/securecmdd_config [listener] 0 of 128-256 startups
root 6455 6316 0 18:17 pts/0 00:00:00 grep --color=auto 2453
--杀掉端口
[root@localhost cluster]# kill -9 2453
[\u4e0a\u4f20\u5b89\u88c5\u5305&\u89e3\u538b]
[\u5ffd\u7565]
[License\u64cd\u4f5c]
ln -s '/home/kingbase/cluster/topsy/syxk/license_29296_0.dat' /home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat;chmod 766 /home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat
exitStatus=0
[\u521d\u59cb\u5316\u6570\u636e\u5e93]
su - kingbase -c " specialPwd=\"`echo a2luZ2Jhc2U= 2>/dev/null | base64 -d`\"; find /home/kingbase/cluster/topsy/syxk/kingbase/bin/ ! -name arping | xargs chmod +x ;/home/kingbase/cluster/topsy/syxk/kingbase/bin/repmgr.sh initdb \${specialPwd} /home/kingbase/cluster/topsy/syxk/kingbase/data/sys_wal"
[Sat Jan 6 18:30:56 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/initdb -U "system" -E UTF-8 -m pg -D /home/kingbase/cluster/topsy/syxk/kingbase/data -A scram-sha-256 -x ****** --data-checksums --lc-collat=en_US.UTF-8 --lc-ctype=en_US.UTF-8
The files belonging to this database system will be owned by user "kingbase".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".
The comparision of strings is case-sensitive.
Data page checksums are enabled.
creating directory /home/kingbase/cluster/topsy/syxk/kingbase/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
Begin setup encrypt device
initializing the encrypt device ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
create security database ... ok
load security database ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
/home/kingbase/cluster/topsy/syxk/kingbase/bin/sys_ctl -D /home/kingbase/cluster/topsy/syxk/kingbase/data -l logfile start
[Sat Jan 6 18:30:58 CST 2024] [INFO] success
exitStatus=0
[\u521b\u5efaetc\u76ee\u5f55]
su - kingbase -c " mkdir -p /home/kingbase/cluster/topsy/syxk/kingbase/etc;touch /home/kingbase/cluster/topsy/syxk/kingbase/etc/repmgr.conf;touch /home/kingbase/cluster/topsy/syxk/kingbase/etc/all_nodes_tools.conf;mkdir -p /KDBARCH;"
mkdir: cannot create directory \u2018/KDBARCH\u2019: Permission denied
exitStatus=1
[\u4e0a\u4f20\u5b89\u88c5\u5305&\u89e3\u538b]
[\u5ffd\u7565]
[License\u64cd\u4f5c]
ln -s '/home/kingbase/cluster/topsy/syxk/license_29296_0.dat' /home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat;chmod 766 /home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat
ln: failed to create symbolic link \u2018/home/kingbase/cluster/topsy/syxk/kingbase/bin/license.dat\u2019: File exists
exitStatus=0
[\u521d\u59cb\u5316\u6570\u636e\u5e93]
su - kingbase -c " specialPwd=\"`echo a2luZ2Jhc2U= 2>/dev/null | base64 -d`\"; find /home/kingbase/cluster/topsy/syxk/kingbase/bin/ ! -name arping | xargs chmod +x ;/home/kingbase/cluster/topsy/syxk/kingbase/bin/repmgr.sh initdb \${specialPwd} /home/kingbase/cluster/topsy/syxk/kingbase/data/sys_wal"
[Sat Jan 6 18:33:08 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/initdb -U "system" -E UTF-8 -m pg -D /home/kingbase/cluster/topsy/syxk/kingbase/data -A scram-sha-256 -x ****** --data-checksums --lc-collat=en_US.UTF-8 --lc-ctype=en_US.UTF-8
The files belonging to this database system will be owned by user "kingbase".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".
The comparision of strings is case-sensitive.
Data page checksums are enabled.
creating directory /home/kingbase/cluster/topsy/syxk/kingbase/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
Begin setup encrypt device
initializing the encrypt device ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
create security database ... ok
load security database ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
/home/kingbase/cluster/topsy/syxk/kingbase/bin/sys_ctl -D /home/kingbase/cluster/topsy/syxk/kingbase/data -l logfile start
[Sat Jan 6 18:33:10 CST 2024] [INFO] success
exitStatus=0
[\u521b\u5efaetc\u76ee\u5f55]
su - kingbase -c " mkdir -p /home/kingbase/cluster/topsy/syxk/kingbase/etc;touch /home/kingbase/cluster/topsy/syxk/kingbase/etc/repmgr.conf;touch /home/kingbase/cluster/topsy/syxk/kingbase/etc/all_nodes_tools.conf;mkdir -p /KDBARCH;"
exitStatus=0
[es_rep.conf\u6587\u4ef6\u914d\u7f6e]
[update es_rep.conf configuration completed.]
[repmgr.conf\u6587\u4ef6\u914d\u7f6e]
[update repmgr.conf configuration completed.]
[all_nodes_tools.conf\u6587\u4ef6\u914d\u7f6e]
[update all_nodes_tools.conf configuration completed.]
[\u521b\u5efaWitness\u8282\u70b9]
su - kingbase -c " find /home/kingbase/cluster/topsy/syxk/kingbase/bin/ ! -name arping | xargs chmod +x;specialPwd=\"`echo a2luZ2Jhc2U= 2>/dev/null | base64 -d`\";/home/kingbase/cluster/topsy/syxk/kingbase/bin/repmgr.sh create_witness_node \${specialPwd} \"192.168.40.152\" "
[Sat Jan 6 18:33:32 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/sys_securecmd -p 8890 -o StrictHostKeyChecking=no -o ConnectTimeout=10 -l kingbase -T 192.168.40.152 "cat ~/.encpwd " > ~/.encpwd
[INFO] connecting to witness node "node3" (ID: 3)
[Sat Jan 6 18:33:32 CST 2024] [INFO] success
[INFO] connecting to primary node
[Sat Jan 6 18:33:32 CST 2024] [INFO] success
[NOTICE] attempting to install extension "repmgr"
[Sat Jan 6 18:33:32 CST 2024] [INFO] success
[NOTICE] "repmgr" extension successfully installed
[Sat Jan 6 18:33:32 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/sys_ctl start -w -t 90 -D /home/kingbase/cluster/topsy/syxk/kingbase/data -o --port=54321
[INFO] witness registration complete
waiting for server to start....2024-01-06 18:33:32.822 CST [13234] LOG: sepapower extension initialized
[NOTICE] witness node "node3" (ID: 3) successfully registered
2024-01-06 18:33:32.827 CST [13234] LOG: starting KingbaseES V008R006C008B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
2024-01-06 18:33:32.827 CST [13234] LOG: listening on IPv4 address "0.0.0.0", port 54321
2024-01-06 18:33:32.827 CST [13234] LOG: listening on IPv6 address "::", port 54321
2024-01-06 18:33:32.828 CST [13234] LOG: listening on Unix socket "/tmp/.s.KINGBASE.54321"
2024-01-06 18:33:32.868 CST [13234] LOG: redirecting log output to logging collector process
2024-01-06 18:33:32.868 CST [13234] HINT: Future log output will appear in directory "sys_log".
done
server started
[Sat Jan 6 18:33:32 CST 2024] [INFO] success
[Sat Jan 6 18:33:32 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/ksql "user=system dbname=test port=54321" -c "create user "esrep" with login replication PASSWORD '******' in role kcluster;"
CREATE ROLE
[Sat Jan 6 18:33:32 CST 2024] [INFO] success
[Sat Jan 6 18:33:32 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/ksql "user=system dbname=test port=54321" -c "create database "esrep";"
CREATE DATABASE
[Sat Jan 6 18:33:33 CST 2024] [INFO] success
[Sat Jan 6 18:33:33 CST 2024] [INFO] /home/kingbase/cluster/topsy/syxk//kingbase/bin/repmgr -h 192.168.40.152 -p 54321 witness register --superuser system
[Sat Jan 6 18:33:34 CST 2024] [INFO] success
[Sat Jan 6 18:33:34 CST 2024] [INFO] sed -i "/*:*:*:system:.*/d" ~/.encpwd
[Sat Jan 6 18:33:34 CST 2024] [INFO] success
exitStatus=0
[\u68c0\u6d4b\u8282\u70b9\u6ce8\u518c]
su - kingbase -c " /home/kingbase/cluster/topsy/syxk/kingbase/bin/repmgr cluster show "
[repmgr register success]
exitStatus=0
[\u542f\u52a8Witness\u8282\u70b9]
su - kingbase -c " /home/kingbase/cluster/topsy/syxk/kingbase/bin/sys_monitor.sh start 2>&1;"
2024-01-06 18:33:34 Ready to start all DB ...
2024-01-06 18:33:34 begin to start DB on "[192.168.40.154]".
2024-01-06 18:33:35 DB on "[192.168.40.154]" already started, connect to check it.
2024-01-06 18:33:36 DB on "[192.168.40.154]" start success.
2024-01-06 18:33:36 Try to ping trusted_servers on host 192.168.40.152 ...
2024-01-06 18:33:39 Try to ping trusted_servers on host 192.168.40.153 ...
2024-01-06 18:33:42 Try to ping trusted_servers on host 192.168.40.154 ...
2024-01-06 18:33:44 begin to start DB on "[192.168.40.152]".
2024-01-06 18:33:45 DB on "[192.168.40.152]" already started, connect to check it.
2024-01-06 18:33:46 DB on "[192.168.40.152]" start success.
2024-01-06 18:33:46 begin to start DB on "[192.168.40.153]".
2024-01-06 18:33:47 DB on "[192.168.40.153]" already started, connect to check it.
2024-01-06 18:33:48 DB on "[192.168.40.153]" start success.
ID | Name | Role | Status | Upstream | Location | Priority | Timeline | LSN_Lag | Connection string
----+-------+---------+-----------+----------+----------+----------+----------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 | node1 | primary | * running | | default | 100 | 1 | | host=192.168.40.152 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3 tcp_user_timeout=9000
2 | node2 | standby | running | node1 | default | 100 | 1 | 0 bytes | host=192.168.40.153 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3 tcp_user_timeout=9000
3 | node3 | witness | * running | node1 | default | 0 | n/a | | host=192.168.40.154 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3 tcp_user_timeout=9000
2024-01-06 18:33:48 The primary DB is started.
2024-01-06 18:33:48 begin to start repmgrd on "[192.168.40.152]".
2024-01-06 18:33:49 repmgrd on "[192.168.40.152]" already started.
2024-01-06 18:33:49 begin to start repmgrd on "[192.168.40.153]".
2024-01-06 18:33:49 repmgrd on "[192.168.40.153]" already started.
2024-01-06 18:33:49 begin to start repmgrd on "[192.168.40.154]".
[2024-01-06 18:33:50] [NOTICE] using provided configuration file "/home/kingbase/cluster/topsy/syxk/kingbase/bin/../etc/repmgr.conf"
[2024-01-06 18:33:50] [INFO] creating directory "/home/kingbase/cluster/topsy/syxk/kingbase/log"...
[2024-01-06 18:33:50] [NOTICE] redirecting logging output to "/home/kingbase/cluster/topsy/syxk/kingbase/log/hamgr.log"
2024-01-06 18:33:52 repmgrd on "[192.168.40.154]" start success.
ID | Name | Role | Status | Upstream | repmgrd | PID | Paused? | Upstream last seen
----+-------+---------+-----------+----------+---------+-------+---------+--------------------
1 | node1 | primary | * running | | running | 12422 | no | n/a
2 | node2 | standby | running | node1 | running | 7812 | no | 1 second(s) ago
3 | node3 | witness | * running | node1 | running | 13604 | no | 1 second(s) ago
[2024-01-06 18:33:55] [NOTICE] redirecting logging output to "/home/kingbase/cluster/topsy/syxk/kingbase/log/kbha.log"
[2024-01-06 18:33:59] [NOTICE] redirecting logging output to "/home/kingbase/cluster/topsy/syxk/kingbase/log/kbha.log"
[2024-01-06 18:34:02] [NOTICE] redirecting logging output to "/home/kingbase/cluster/topsy/syxk/kingbase/log/kbha.log"
2024-01-06 18:34:03 Done.
exitStatus=0
原因是采用了自定义的归档路径,未使用默认归档路径,事先未创建自定义的归档路径。
解决办法
--归档目录
su - root
mkdir -p /KDBARCH
chown -R kingbase:kingbase /KDBARCH
此功能对特定节点进行日志输出功能。
右键单击“日志查询”节点,弹出菜单,选择“选择新建日志查询”,右键菜单如下图:
工具打开新建日志查询窗口,如下图:
配置项 |
描述 |
显示名称 |
新建的日志节点名称,只能是英文、数字、下划线或者三者组合, 不能为空。 |
主机名或IP地址 |
当前节点(服务器)的IP地址或主机名。 当“开启hostname”选项未勾选时,此处名称为IP地址。 |
securecmd端口 |
工具连接节点或者直接向节点发起指令时, 创建连接所使用到的securecmd服务端口号,默认为8890,可根据环境修改 |
securecmd用户名 |
工具连接节点需要通过指定用户连接的用户名 |
securecmd密码 |
对应用户名的用户密码 |
数据库Data路径 |
节点所安装的数据库对应的Data目录的路径 |
点击“检查”测试是否正常连接到节点,如下图所示:
如提示错误信息,则按照对应的错误提示信息进行修改。 检查通过后点击“保存”即可完成新建日志节点,在“日志查询”下将会有一个日志节点。如下图所示:
右键单击日志节点,弹出菜单,选择“日志查看”,右键菜单如下图:
显示日志查看窗口,如下图所示:
此窗口最多显示300条最新数据,每十秒会执行自动刷新操作更新日志信息。
当端口出现异常或关闭时,将提示连接失败,如下图:
点击提示完成后,日志查看窗口将变为无数据。
当端口正常后,已经打开的日志查看窗口将自动更新日志信息并输出。
在日志节点菜单中选择“修改日志查询”,打开修改日志查询界面,如下图所示:
可对参数进行修改。
在右键日志节点中选择“删除”,然后提示删除成功后,则删除完成,如下图所示:
双击集群名称后,显示集群状态。弹出菜单如下图所示:
显示集群状态中包含: 上游节点、PID、是否暂停、最后一次观测到的时间等。右下角有刷新按钮,方便更新集群状态。
集群运行信息:
ID -- 数据库节点ID
Name -- 数据库在集群内部名称
Role -- 数据库节点角色,有primary和standby两种
Status -- 状态, *running 和 running两种状态是正常运行状态,还有其他的状态,都是异常
Upstream -- 上游节点名称,即:从哪个节点同步数据
Hamgrd -- 管理软件remgrd的运行状态
PID -- 管理软件repmgrd的进程ID
Paused -- 管理软件repmgrd是否暂停
Upstream last seen-- 本节点距离上一次同步数据的时间(单位:秒)
--
[kingbase@localhost ~]$ sys_ctl stop -D /home/kingbase/cluster/topsy/syxk/kingbase/data
waiting for server to shut down.... done
server stopped
输入密码“rdjc12#$”,选择“正常”开启开发者模式。 在开发者模式下点击“开发者模式”会提示到您已经在此模式下,如下图所示:
所有主节点全部宕机或异常时,右键正常运行的备节点,”提升为主库”按钮变为可点击状态:
刷新,查看集群状态
若原主节点宕机,并且集群通过若干时间将1个备库提升出一个正常的主节点时,右键异常的原主节点,”恢复至集群”按钮变为可点击状态:
输入密码“rdjc12#$”,选择“正常”开启开发者模式。 在开发者模式下点击“开发者模式”会提示到您已经在此模式下,如下图所示:
左键双击需要查看的节点名称,查看节点信息:
若集群整体处于已停止状态,所有节点允许删除。若集群处于已启用状态,主节点不允许删除。 删除节点成功后,提示用户“只删除工具端配置文件,服务器数据未删除”,需要用户手动删除。
鼠标右键点击需要删除的节点,弹出菜单如下图所示:
开发者模式为特殊情况下进入开发人员模式,进行一系列对数据库集群有关的操作(具体有:启动此节点数据库、恢复至集群、提升为主库、保留此主库)。此模式会在集群部署工具重新启动时自动关闭。此操作存在丢数危险,请谨慎操作。
点击集群部署工具的工具栏中的“帮助”,选择“开发者模式”进行开启,如下图所示:
输入密码“rdjc12#$”,选择“正常”开启开发者模式。 在开发者模式下点击“开发者模式”会提示到您已经在此模式下,如下图所示:
点击集群部署工具的工具栏中的“帮助”,选择“关闭开发者模式”进行关闭,如下图所示:
鼠标右键选择集群,选择菜单中的停止集群,如下图所示:
鼠标右键选择集群,选择菜单中的启动集群,如下图所示:
鼠标右键选择集群,选择菜单中的暂停自动功能,暂停功能是将集群的处于运行状态的自动功能停止掉,例如:自动切换、自动恢复。如下图所示:
该窗口为确认窗口,并对暂停自动功能有相应的提示和说明。图中有复选框dry-run,如果勾选复选框,工具会先尝试执行一次暂停自动功能的操作,尝试成功则直接执行暂停指令。反之,失败则不执行暂停指令。如果未勾选复选框,工具会直接执行暂停集群功能的指令。界面如下图所示:
集群功能被暂停后,在集群状态窗口可以查看到集群此时的状态。暂停状态会被现实成红色,并且有弹窗提示。如下图所示:
鼠标右键选择集群,选择菜单中的恢复自动功能,恢复功能是将集群的处于暂停状态的自动功能重新启动。如下图所示:
该窗口为确认窗口,并对恢复自动功能有相应的提示和说明。途中有复选框dry-run,如果勾选复选框,工具会先尝试执行一次恢复自动功能的操作,尝试成功则直接执行恢复指令。反之,失败则不执行恢复指令。如果未勾选复选框,工具会直接执行恢复集群功能的指令。界面如下图所示:
再次查看集群状态:
鼠标右键选择集群,选择菜单中的主备切换功能,该功能可以将指定的备机提升为主机,剩下的所有备机继续跟随主机。如下图所示:
主备切换命令:
su - kingbase -c " /home/kingbase/cluster/topsy/syxk/kingbase/bin/repmgr standby switchover --force-rewind --siblings-follow "
[NOTICE] executing switchover on node "node2" (ID: 2)
[INFO] The output from primary check cmd "repmgr node check --terse -LERROR --archive-ready --optformat" is: "--status=OK --files=0
"
[NOTICE] attempting to pause repmgrd on 3 nodes
[INFO] pausing repmgrd on node "node1" (ID 1)
[INFO] pausing repmgrd on node "node2" (ID 2)
[INFO] pausing repmgrd on node "node3" (ID 3)
[NOTICE] local node "node2" (ID: 2) will be promoted to primary; current primary "node1" (ID: 1) will be demoted to standby
[NOTICE] stopping current primary node "node1" (ID: 1)
[NOTICE] issuing CHECKPOINT on node "node1" (ID: 1)
[DETAIL] executing server command "/home/kingbase/cluster/topsy/syxk/kingbase/bin/sys_ctl -D '/home/kingbase/cluster/topsy/syxk/kingbase/data' -l /home/kingbase/cluster/topsy/syxk/kingbase/bin/logfile -W -m fast stop"
[INFO] checking for primary shutdown; 1 of 60 attempts ("shutdown_check_timeout")
[INFO] checking for primary shutdown; 2 of 60 attempts ("shutdown_check_timeout")
[NOTICE] current primary has been cleanly shut down at location 0/5000028
[NOTICE] promoting standby to primary
[DETAIL] promoting server "node2" (ID: 2) using pg_promote()
[NOTICE] waiting for promotion to complete, replay lsn: 0/50000A0
[NOTICE] STANDBY PROMOTE successful
[DETAIL] server "node2" (ID: 2) was successfully promoted to primary
[NOTICE] issuing CHECKPOINT
[NOTICE] node "node2" (ID: 2) promoted to primary, node "node1" (ID: 1) demoted to standby
[NOTICE] executing STANDBY FOLLOW on 1 of 1 siblings
INFO: node 3 received notification to follow node 2
[INFO] STANDBY FOLLOW successfully executed on all reachable sibling nodes
[NOTICE] switchover was successful
[DETAIL] node "node2" is now primary and node "node1" is attached as standby
[INFO] unpausing repmgrd on node "node1" (ID 1)
[INFO] unpause node "node1" (ID 1) successfully
[INFO] unpausing repmgrd on node "node2" (ID 2)
[INFO] unpause node "node2" (ID 2) successfully
[INFO] unpausing repmgrd on node "node3" (ID 3)
[INFO] unpause node "node3" (ID 3) successfully
[NOTICE] STANDBY SWITCHOVER has completed successfully
此功能提供集群中每个节点的全面检查,将提示节点每个检查项是否正常,并给出非正常检查项的原因说明。可将检查结果导出到指定位置生成检查报告。此功能需存在大于等于一个正常运行的主/备节点才可进行检查。
1. 打开一键检查功能: 鼠标右键选择集群,选择菜单中的一键检查功能,如下图所示。
展开需要修改的集群,在节点通用配置选择集群然后右键,修改参数配置,进入配置界面。如下图:
选择需要修改的集群,右键弹框选择,修改集群密码:
参考链接:5. 集群部署(通用机) — KingbaseES产品手册