目录

安装kingbase数据库

创建安装目录

启用数据库

逻辑备份

备机服务器

1、编辑逻辑备份文件

2、加密数据库连接密码

3、执行逻辑备份脚本

物理备份

1、编辑sys_backup.conf 备份配置文件

2.备份脚本的初始化操作

恢复

一、完全恢复

灾难模拟

1、恢复

2、启用数据库

3、验证数据已恢复

二、指定时间点恢复 

1、删除数据

2.修改redo(异机) 和数据库的sys_rman.conf文件

3.指定时间点恢复

4、修改端口

启用新实例

查看数据是否恢复

导出数据

导入数据


安装kingbase数据库

数据库IP:192.168.40.27

备份服务器IP:192.168.40.26

数据库安装目录:/opt/Kingbase/ES/V8

数据目录:/opt/Kingbase/ES/V8/data

用户密码:kingbase/kingbase

数据库超管密码:system/1234%^&*Ab

  • 两台主机主机都安装相同版本数据库

1、创建用户修改密码

[root@localhost ~]# groupadd kingbase

[root@localhost ~]# useradd -m -d /home/kingbase kingbase -g kingbase

[root@localhost ~]# echo 'kingbase' | passwd --stdin kingbase

更改用户 kingbase 的密码 。

passwd:所有的身份验证令牌已经成功更新。

  1. 创建安装目录

    1. 修改所属用户和用户组
    2. 赋予所属用户(u)读(r)和写(w)的权限

[root@localhost ~]# mkdir -p /opt/Kingbase/ES/V8

[root@localhost ~]# chown -R kingbase:kingbase /opt/Kingbase/

[root@localhost ~]# chmod -R u+rw /opt/Kingbase/

[root@localhost ~]# mount -o loop KingbaseES_V008R030C011B0003_Lin64_install.iso /mnt/

mount: /dev/loop0 写保护,将以只读方式挂载

3、切换kingbase用户 命令行安装数据库

[root@localhost ~]# su - kingbase

[kingbase@localhost ~]$ cd /mnt/

[kingbase@localhost mnt]$ ./setup.sh -i console

  1. 启用数据库

/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data/ start

  • 配置通信

方式一:SSH免密通信

方式二:securecmdd服务连接

下面我们采用securecmdd服务通信 ---请看操作2

1、

步骤 1:在备份服务器(192.168.40.26)操作 切换到kingbase用户,生成 SSH 密钥并推送到数据库服务器:

su - kingbase

# 生成密钥(一路回车,不设密码)

ssh-keygen -t rsa

# 推送公钥到数据库服务器(输入数据库服务器kingbase用户的密码)

ssh-copy-id kingbase@192.168.40.27

步骤 2:验证双向免密 • 在数据库服务器(192.168.40.12)测试:

su - kingbase

ssh kingbase@192.168.40.102 "echo ok"  # 无需密码,返回ok

     • 在备份服务器(192.168.40.102)测试:

su - kingbase

ssh kingbase@192.168.40.12 "echo ok"  # 无需密码,返回ok

      

2、sys_securecmdd服务的初始化与启动操作

(安全远程连接守护进程)

Root用户执行(数据库和备机服务器都操作)

/opt/Kingbase/ES/V8/Server/bin/sys_HAscmdd.sh init

/opt/Kingbase/ES/V8/Server/bin/sys_HAscmdd.sh start

验证:

(注意:出现下面这种情况需要设置kingbase用户密码,然后再重试)

  • 逻辑备份

(注意:逻辑备份需要备机上启用数据库)

备机服务器

1、编辑逻辑备份文件

[kingbase@localhost mnt]$ vim /opt/Kingbase/ES/V8/SupTools/kb_backup/backup8.conf

kdb_home="/opt/Kingbase/ES/V8"

kdb_bin="/opt/Kingbase/ES/V8/Server/bin"

kdbback_dest="/opt/Kingbase/backup/logical"

kdb_user="system"

password="1234%^&*Ab"

kdb_port="54321"

kdb_host="192.168.40.27"

kdb_list=`${kdb_bin}/ksql -p ${kdb_port} -U ${kdb_user}  -c "SELECT datname FROM pg_database where datname not in ('templvim ate1','template0');" template1 |head -n -2|tail -n +3`

keep_time="31"

LD_LIBRARY_PATH="/opt/Kingbase/ES/V8/Server/lib"

解释:

·  kdb_home="/opt/Kingbase/ES/V8"

  • ·  定义金仓数据库的安装主目录,路径是/opt/Kingbase/ES/V8

·  kdb_bin="/opt/Kingbase/ES/V8/Server/bin"

  • ·  定义金仓数据库命令工具(如ksql、备份工具)所在的目录,路径是/opt/Kingbase/ES/V8/Server/bin

·  kdbback_dest="/opt/Kingbase/backup/logical"

  • ·  定义逻辑备份文件的存储目录,路径是/opt/Kingbase/backup/logical

·  kdb_user="system"

  • ·  定义连接数据库使用的用户名,这里是金仓数据库的默认管理员用户system

·  password="1234^&*Ab"

  • ·  定义连接数据库的用户密码(注意:脚本明文写密码存在安全风险)。

·  kdb_port="54321"

  • ·  定义数据库的监听端口,金仓数据库的默认端口是54321

·  kdb_host="192.168.40.27"

  • ·  定义数据库所在服务器的 IP 地址,这里是192.168.40.27

·  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``

  • ·  执行ksql命令查询数据库列表:筛选出除了系统模板库template1template0之外的所有业务数据库,并用head/tail处理输出格式,结果存到kdb_list变量中(用于后续批量备份这些数据库)。

·  keep_time="31"

  • ·  定义备份文件的保留时间,这里是 31 天(超过时间的备份会被清理)。

·  LD_LIBRARY_PATH="/opt/Kingbase/ES/V8/Server/lib"

·  设置系统的库文件搜索路径,指定金仓数据库依赖的动态链接库所在目录,确保命令工具能找到对应的依赖库。

2、加密数据库连接密码

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

3、执行逻辑备份脚本

/opt/Kingbase/ES/V8/SupTools/kb_backup/fast_deploy_backup8.sh

  • 物理备份

(物理备份不需要启用数据库服务)

1、编辑sys_backup.conf 备份配置文件

Vim  /opt/Kingbase/ES/V8/Server/bin/share/sys_backup.conf

# target db style enum:  single/cluster/single-pro

_target_db_style="single"

# one kingbase node IP/hostname

# just provide one IP/hostname, script will use 'repmgr cluster show' get other node IP/hostname

_one_db_ip="192.168.40.27"

如果是单节点数据库,直接填该节点IP;如果是集群,填任意一个节点IP即可

# local repo IP/hostname, inner-REPO, means repo located in one db node

# outer repo IP/hostname, outer-REPO, means repo located in outer node

# support MULTI repo IP/hostname, separate by space, example: "10.10.10.11 10.10.10.12"

_repo_ip="192.168.40.26"

备份文件存储在 IP 为192.168.40.26的远程服务器上

# label of this cluster

_stanza_name="kingbase"

# OS user name of database

_os_user_name="kingbase"

# !!!! dir to store the backup files

# should be accessable for the OS user

_repo_path="/opt/Kingbase/backup/rman" (指定备份文件的存储目录

# data dir of single

_single_data_dir="/opt/Kingbase/ES/V8/data" (数据库数据目录)

# bin dir of single

_single_bin_dir="/opt/Kingbase/ES/V8/Server/bin" (数据库命令行工具目录)

# on means sys_securecmd, off means normal ssh 

_use_scmd=on

# 当值为on时,使用sys_securecmd工具;当值为off时,使用普通的ssh

# whether to gz the target file,  none or gz

_compress_type=none

一般为压缩备份

2.备份脚本的初始化操作

(备机服务器上操作)

[kingbase@localhost bin]$ ./sys_backup.sh init

启动备份任务

[kingbase@localhost bin]$ ./sys_backup.sh start

/opt/Kingbase/ES/V8/Server/bin/sys_rman --config=/opt/Kingbase/backup/rman/sys_rman.conf --stanza=kingbase info

查看:

WAL 归档推送操作成功完成

本地备份操作已成功完成

备份环境检查

·  检查备份存储库(repo1)的配置是否正常;

·  检查 WAL 归档是否正常:日志中明确显示WAL segment 000000010000000000000006 successfully archived,即 WAL 日志段已成功归档到指定存储路径

执行一次全量备份

/opt/Kingbase/ES/V8/Server/bin/sys_rman --config=/opt/Kingbase/backup/rman/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup

查看

/opt/Kingbase/ES/V8/Server/bin/sys_rman --config=/opt/Kingbase/backup/rman/sys_rman.conf --stanza=kingbase info

在数据库上查看 rman下sys_rman.conf文件

[kingbase@localhost rman]$ cat sys_rman.conf

# Genarate by script at 20260109153755, should not change manually

[kingbase]

kb1-path=/opt/Kingbase/ES/V8/data

#指定数据库节点 1 的数据目录路径,sys_rman通过此路径访问数据库文件

[global]

repo1-host=192.168.40.26

#备份存储库所在的主机 IP

repo1-host-user=kingbase

#访问备份存储库使用的操作系统用户

repo1-host-config=/opt/Kingbase/backup/rman/sys_rman.conf

#备份存储库主机上的配置文件路径

repo1-path=/opt/Kingbase/backup/rman

#备份存储库的本地路径(备份文件存储位置)

archive-statistics=n

#禁用归档文件的统计信息收集

log-path=/opt/Kingbase/ES/V8/Server/log

#sys_rman的日志存储路径

log-level-file=info

log-level-console=info

log-subprocess=y

#### support: gz none

compress-type=none

#备份文件不压缩

compress-level=3

#压缩级别(仅compress-type=gz时生效)

band-width=0

#不限速(0 表示无带宽限制)

repo-disk-warn=16384MB

#备份存储库剩余空间低于 16384MB 时告警

repo-disk-error=1024MB

#备份存储库剩余空间低于 1024MB 时报错终止

archive-timeout=600

#WAL 归档超时时间(600 秒)

archive-mode-check=n

#不检查数据库的归档模式

link-all=y

#备份时保留所有文件的链接关系

cmd-ssh=/opt/Kingbase/ES/V8/Server/bin/sys_securecmd

#远程连接使用的工具(sys_securecmd)

查看备机rman的sys_rman.conf 文件

# Genarate by script at 20260109153754, should not change manually

[kingbase]  (数据库节点配置)

kb1-path=/opt/Kingbase/ES/V8/data

kb1-port=54321

kb1-user=system

kb1-host=192.168.40.27

kb1-host-user=kingbase

[global] (全局备份配置)

repo1-path=/opt/Kingbase/backup/rman

repo1-retention-full=5

archive-statistics=n

log-path=/opt/Kingbase/ES/V8/Server/log

log-level-file=info

log-level-console=info

log-subprocess=y

process-max=4

#### support: gz none

compress-type=none

compress-level=3

start-fast=y

link-all=y

archive-mode-check=n

band-width=0

repo-disk-warn=16384MB

repo-disk-error=1024MB

non-archived-space=1024

archive-timeout=600

#### Enable below alert-command to take custom action on issue during backup, such as sending alert mail

# alert-command=( cd /opt/Kingbase/ES/V8/Server/bin; ./sys_mail -s "%t" -b "%c" & )

cmd-ssh=/opt/Kingbase/ES/V8/Server/bin/sys_securecmd

注意:当前用的是金仓数据库专用的sys_securecmd替代系统 SSH 做远程连接;

恢复

一、完全恢复
灾难模拟

数据库数据丢失

先备份:cp -r data data.bak/

删除数据目录:rm -rf data/.*

      rm -rf /opt/kingbase/cluster/install/kingbase/data

1、恢复

/opt/kingbase/cluster/install/kingbase/bin/sys_rman --config=/opt/kingbase/backup/rman/sys_rman.conf --stanza=kingbase restore

2、启用数据库

/opt/kingbase/cluster/install/kingbase/bin/sys_ctl -D /opt/kingbase/cluster/install/kingbase/data start

3、验证数据已恢复

二、指定时间点恢复 

1、删除数据

(记住这个时间点)

2.修改redo(异机) 和数据库的sys_rman.conf文件

3.指定时间点恢复

/opt/kingbase/cluster/install/kingbase/bin/sys_rman --config=/opt/kingbase/backup/rman/sys_rman.conf --stanza=kingbase --type=time --target='2026-01-12 10:03:31' --target-action=promote restore

4、修改端口

[kingbase@node1 ~]$ vim /opt/kingbase/data/es_rep.conf

[kingbase@node1 ~]$ vim /opt/kingbase/data/kingbase.conf

启用新实例

[kingbase@node1 data]$ /opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/kingbase/data start

查看数据是否恢复

导出数据

[kingbase@node1 data]$ sys_dump -U system -d test -p 54322 -t students -f /opt/kingbase/students.sql

导入数据

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐