目录

一、安装kingbase

二、设置环境变量

三、创建集群安装目录

四、在主node1上操作

五、修改集群initstall.conf配置文件(主节点执行)

六、root执行 节点互信配置主节点执行互信配置

cd /opt/KingbaseES/V9/ClientTools/guitools/DeployTools/zip./trust_cluster.sh

七、集群部署主节点执行 集群部署

环境变量

逻辑备份

物理备份cd /opt/kingbase/cluster/install/kingbase/share    (集群好之后下的路径)vi sys_backup.conf     (集群部署好的路径下的data和bin)


主备集群部署

node1

主:192.168.40.26

node2

备:192.168.40.27

安装软件包

KingbaseES_V009R001C010B0004_Lin64_install.iso

系统:CentOS7.9

cpu:因特尔

一、安装kingbase

node1上创建kingbase用户并安装kingbase

[root@node1 ~]# groupadd kingbase 
[root@node1 ~]# useradd -m -d /home/kingbase kingbase -g kingbase 
[root@node1 ~]# mkdir -p /opt/KingbaseES/V9
[root@node1 ~]# chown -R kingbase:kingbase /opt/KingbaseES/V9
[root@node1 ~]# chmod -R u+rw /opt/KingbaseES/V9
[root@node1 ~]# mount -o loop KingbaseES_V009R001C010B0004_Lin64_install.iso /mnt/
mount: /dev/loop0 写保护,将以只读方式挂载
[root@node1 ~]# echo "1234%^&*" | passwd --stdin kingbase 
更改用户 kingbase 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@node1 ~]# su - kingbase 
[kingbase@node1 ~]$ cd /mnt/
[kingbase@node1 mnt]$ ls
setup  setup.sh
[kingbase@node1 mnt]$ ./setup.sh -i console

初始化数据库

二、设置环境变量

在末尾添加

export KINGBASE_DATA=/opt/KingbaseES/V9/data
export PATH=$PATH:/opt/KingbaseES/V9/Server/bin

三、创建集群安装目录

[root@node1 ~]# mkdir -p /opt/kingbase/cluster/install
[root@node1 ~]# chown -R kingbase:kingbase /opt/kingbase/
[root@node1 ~]# chmod -R u+rw /opt/kingbase/
[root@node1 ~]# su - kingbase 

[root@node2 ~]# mkdir -p /opt/kingbase/cluster/install
[root@node2 ~]# chown -R kingbase:kingbase /opt/kingbase/
[root@node2 ~]# chmod -R u+rw /opt/kingbase/
[root@node2 ~]# su - kingbase 

四、在主node1上操作

复制zip包到集群安装目录下

[kingbase@node1 ~]$ cd /opt/KingbaseES/V9/ClientTools/guitools/DeployTools/zip/
[kingbase@node1 zip]$ cp db.zip /opt/kingbase/cluster/install/

复制zip包到备192.168.40.27的集群安装目录下

[kingbase@node1 install]$ scp db.zip kingbase@192.168.40.27:/opt/kingbase/cluster/install

解压zip包

[kingbase@node1 zip]$ cd /opt/kingbase/cluster/install/
[kingbase@node1 install]$ unzip db.zip 

[kingbase@node2 ~]$ cd /opt/kingbase/cluster/install/
[kingbase@node2 install]$ ls
db.zip
[kingbase@node2 install]$ unzip db.zip 

启用数据库

/opt/KingbaseES/V9/Server/bin/sys_ctl -D /opt/KingbaseES/V9/data/ start

在防火墙启用的情况做好允许端口开放(指定端口开放)

(root执行)

firewall-cmd --zone=public --add-port=54321/tcp --permanent

firewall-cmd --zone=public --add-port=54322/tcp --permanent

firewall-cmd --zone=public --add-port=8890/tcp --permanent

firewall-cmd --reload firewall-cmd --list-port

启用守护进程服务

(root执行)解压的db.zip路径下的bin目录
./sys_HAscmdd.sh init
./sys_HAscmdd.sh start

[root@node1 bin]# ./sys_HAscmdd.sh init
successfully initialized the sys_securecmdd, please use "./sys_HAscmdd.sh start" to start the sys_securecmdd
[root@node1 bin]# ./sys_HAscmdd.sh start 
Created symlink from /etc/systemd/system/multi-user.target.wants/securecmdd.service to /etc/systemd/system/securecmdd.service.

[root@node2 bin]# ./sys_HAscmdd.sh init
successfully initialized the sys_securecmdd, please use "./sys_HAscmdd.sh start" to start the sys_securecmdd
[root@node2 bin]# ./sys_HAscmdd.sh start 
Created symlink from /etc/systemd/system/multi-user.target.wants/securecmdd.service to /etc/systemd/system/securecmdd.service.

做通信测试 (root执行) ./sys_securecmd kingbase@192.168.40.27 ifconfig   (注意:如果需要输入密码那就有问题)

在bin目录下执行

关闭守护进程服务(root执行)
./sys_HAscmdd.sh stop

[root@node1 bin]# ./sys_HAscmdd.sh stop
Removed symlink /etc/systemd/system/multi-user.target.wants/securecmdd.service.

[root@node2 bin]# ./sys_HAscmdd.sh stop 
Removed symlink /etc/systemd/system/multi-user.target.wants/securecmdd.service.

关闭数据库(kingbase用户执行)

修改集群initstall.conf配置文件(主节点执行)

下面这个是模板

修改集群initstall.conf配置文件(主节点执行)
cd /home/kingbase/KingbaseES/V8/ClientTools/guitools/DeployTools/zip
vim install.conf
all_ip=(192.168.158.24 192.168.158.25)
install_dir="/home/kingbase/cluster/install"
zip_package="/home/kingbase/KingbaseES/V9/ClientTools/guitools/DeployTools/zip/db.zip"

db_password="1234%^&*Ab" (在这个位置下面有一个设置大小写敏感的,一定不要忘了)

trusted_servers="192.168.158.2" (多个网关请用“,”分隔,不允许有空格。)
virtual_ip="10.12.11.200" 	(如果有vip,需要填网卡名称和vip)
net_device=(ens192 ens192) 	(填了网关必须填网卡名称)(空格隔开)
net_device_ip=(10.12.11.192 10.12.11.193)  (填主备节点物理ip)(空格隔开)

#all_ip参数为必须配置,所有集群节点的IPv4、IPv6或hostname,用但所有节点必须配置为相同的类型。
all_ip=(10.185.230.217 10.185.230.218 10.185.230.219)

#install_dir参数为必须配置,集群部署的路径。
install_dir="/data/kingbase/cluster/install"

#zip_package参数为必须配置,压缩包的路径。
zip_package="/home/kingbase/KingbaseES/V8/ClientTools/guitools/DeployTools/zip/db.zip"

#db_password="1234%^&*Ab"     
db_password="1234%^&*Ab"  

#trusted_servers参数为必须配置,指定当前部署集群的信任网关,多个网关请用“,”分隔,不允许有空格。
trusted_servers="10.185.230.1"

#virtual_ip参数为可选配置,部署集群所需VIP。只能配置IPv4,当all_ip配置为IPv6或hostname时, 不能配置此参数。
virtual_ip="10.185.230.15/23"

#net_device参数为可选配置,若配置了[virtual_ip],则此参数必须配置,值为VIP所在网卡的网卡名称。
net_device=(enp4s3 enp4s3 enp4s3)

#net_device_ip参数为可选配置,若配置了[virtual_ip],则此参数必须配置,值为VIP所在网卡的集群节点物理IP地址。
net_device_ip=(10.185.230.217 10.185.230.218 10.185.230.219)

五、修改集群initstall.conf配置文件(主节点执行)

  • db_case_sensitive="yes":表示大小写敏感(默认值),表名、列名等会区分大小写。
  • db_case_sensitive="no":表示大小写不敏感,表名、列名等不区分大小写(兼容 Oracle/MySQL 风格)。

六、root执行 节点互信配置主节点执行
互信配置


cd /opt/KingbaseES/V9/ClientTools/guitools/DeployTools/zip
./trust_cluster.sh

kingbase用户执行

七、集群部署主节点执行 集群部署

[kingbase@node1 ~]$ cd /opt/KingbaseES/V9/ClientTools/guitools/DeployTools/zip/

[kingbase@node1 zip]$ sh cluster_install.sh 

显示这样就证明主备集群安装成功

修改集群部署好后的路径下kingbase.conf文件参数(主备都要修改)

vim /opt/kingbase/cluster/install/kingbase/data/kingbase.conf
在 shared_preload_libraries 行后添加 passwordcheck, identity_pwdexp, sysaudit
shared_buffers = 2GB  
effective_cache_size = 4GB
min_wal_size = 2GB
max_wal_size = 8GB
maintenance_work_mem = 2GB
checkpoint_completion_target = 0.9
checkpoint_timeout = 30min

max_connections=1000
logging_collector = 'on'
log_destination = 'stderr'
log_directory = '../sys_log'
log_filename = 'kingbase-%d.log'
log_truncate_on_rotation = 'on'
log_rotation_age = 1440
log_rotation_size = 500MB

passwordcheck.enable = on 
passwordcheck.password_condition_digit = 2 
passwordcheck.password_condition_letter = 2 
passwordcheck.password_condition_punct = 1
passwordcheck.password_length = 8 
sys_audlog.error_user_connect_times = 5  
sys_audlog.error_user_connect_interval = 10 
wal_level='replica'

archive_mode = on 
archive_command = ''

环境变量

vi ~/.bashrc

export KINGBASE_DATA=/opt/kingbase/cluster/install/kingbase/data
export PATH=$PATH:/opt/kingbase/cluster/install/kingbase/bin

source ~/.bashrc

kingbase用户主节点重启集群
sys_monitor.sh stop
sys_monitor.sh start

逻辑备份

(主备都做,可以将主的文件拷贝到备机上,让备机也能逻辑备份)


cd /opt/KingbaseES/V9/SupTools/kb_backup
vim backup8.conf
kdb_home="/opt/KingbaseES/V8"
kdb_bin="/opt/kingbase/cluster/install/kingbase/bin"
kdbback_dest="/opt/kingbase/backup/logical"
kdb_user="system"
password="1234%^&*Ab"
kdb_port="54321"
kdb_host="127.0.0.1"
kdb_list=`${kdb_bin}/ksql -p ${kdb_port} -U ${kdb_user}  -c "SELECT datname FROM pg_database where datname not in ('template1','template0');" template1 |head -n -2|tail -n +3`
keep_time="31"
LD_LIBRARY_PATH="/opt/kingbase/cluster/install/kingbase/lib"

更新密码

sys_encpwd -H \* -P \* -D  \* -W '1234%^&*Ab' -U system
./fast_deploy_backup8.sh

crontab -l
crontab -e

物理备份
cd /opt/kingbase/cluster/install/kingbase/share    (集群好之后下的路径)
vi sys_backup.conf     (集群部署好的路径下的data和bin)

cd ../bin/
./sys_backup.sh init   (主格式化一次就行,备节点只需要执行start就可以物理备份)
./sys_backup.sh start

(在备执行./sys_backup.sh start就可以开启物理备份)

备注
整个集群只需执行一次init动作;
初始化:只需要在一个DB节点修改sys_backup.conf、执行init动作;
定时备份任务:需要修改各节点的sys_backup.conf、分别执行start/stop动作;
single-pro支持各DB节点同时执行备份动作。

注意:
如果一直卡在这个位置不动,请检查 data下的 sys_hba.conf 文件的 local 那一行改为 trust没有
create stanza and check on 172.34.12.32 ...(maybe 60+ seconds)

--赋予kingbase用户crontab权限
vi /etc/cron.allow
kingbase


数据库信息填写


--查看ip和mac地址
ip a

--查看数据数据目录和备份目录的磁盘大小
df  -h

--查看cpu
lscpu

--查看操作系统
cat /etc/*release

--查看CPU(s)
lscpu | grep "CPU(s):"

--查看内存
free -h

--sql查看数据库大小写敏感​
SHOW case_sensitive;
on 表示大小写敏感,
off 表示大小写不敏感。
(注意:此参数可能在部分版本中不存在或名称不同,具体取决于金仓版本)

--sql查看大小写敏感配置
show enable_ci;
on    开启大小写不敏感(默认)    表名 user_info、User_Info、USER_INFO 视为同一个表
off    关闭(是大小写敏感)    表名 user_info 和 USER_INFO 是两个不同的表

--sql查看兼容什么模式
show database_mode;

--sql查看数据库版本号
select version();

--sql查看数据库构建版本信息
select build_version;

--sql查看授权文件剩余有效天数
select get_license_validdays();

1. select sys_is_in_recovery();
​作用​:检查数据库是否处于恢复模式(备用服务器状态)
返回 t(true):当前是备用服务器,处于只读模式
返回 f(false):当前是主服务器,可读写
在流复制架构中,用于判断当前节点的角色

2. select * from sys_stat_replication;
​作用​:查看流复制的状态信息
显示的内容包括:
复制连接的进程信息
客户端地址和端口
复制状态(同步/异步)
延迟情况(flush_lag, replay_lag)
已发送的WAL位置
是否启用级联复制
​用途​:监控主库到备库的复制是否正常,是否有延迟

3. select * from sys_replication_slots;
​作用​:查看复制槽信息
显示的内容包括:
复制槽名称
插件类型(physical/logical)
槽的当前状态
确认的LSN位置
保留的WAL日志量
​用途​:管理逻辑复制或物理复制的槽位,防止主库过早删除备库还需要WAL日志

如果是pg的,需要把sys改为pg
例如:select pg_is_in_recovery();
 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐