KingbaseES集群S3备份:sys_rman + SSL证书配置实战
只要sys_backup.conf中包含S3参数即支持S3备份
介绍
金仓数据库通过 sys_rman 工具将备份直接存储到支持S3协议的对象存储(如MinIO、华为云OBS、AWS S3等)。核心思路是修改备份配置文件 sys_backup.conf,将 _repo_type 设为 s3 并填入S3连接信息,最后执行初始化。

需求:将集群的物理备份存放到S3对象存储服务商。
| 数据节点1 | 192.168.40.200 | Centos7.9 x86_64 | OpenSSL 1.0.2k | V008R030C011PSI026 |
| 数据节点2 | 192.168.40.200 | Centos7.9 x86_64 | OpenSSL 1.0.2k | V008R030C011PSI026 |
| s3存储 | 192.168.40.111 | UOS Server 20 x86_64 | OpenSSL 1.1.1k | V008R030C011PSI026 |
准备工作
云存储不建议独立的REPO节点。
部署MinIO搭建S3 兼容的云存储服务
测试环境采用MinIO单点架构,采用https方式访问
设置主机名
hostnamectl set-hostname s3.repo
exec bash
生成证书
mkdir -p /etc/minio/certs
cd /etc/minio/certs
openssl genrsa -out private.key 2048
openssl req -new -x509 -days 3650 \
-key private.key \
-out public.crt \
-subj "/CN=s3.repo" \
-addext "subjectAltName = DNS:s3.repo"
ls -l
输出如下:
总用量 8
-rw------- 1 root root 1675 6月 5 15:51 private.key
-rw-r--r-- 1 root root 1135 6月 5 15:51 public.crt
创建kingbase用户并赋予权限
useradd kingbase
echo 'kingbase' | passwd --stdin kingbase
chown -R kingbase:kingbase /etc/minio/certs
输出如下:
[root@s3 certs]# ls -l /etc/minio/certs/
总用量 8
-rw------- 1 kingbase kingbase 1675 6月 5 15:51 private.key
-rw-r--r-- 1 kingbase kingbase 1135 6月 5 15:51 public.crt
安装MinIO
1.下载安装
# 下载 MinIO 二进制文件
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin/
2. 创建存储目录
mkdir -p /data/minio
3. 启动 MinIO 服务(可选)
在 MinIO 的启动命令或服务文件中,通过 --certs-dir 参数指定证书目录,如果不使用https方式访问,可以去掉--certs-dir 参数
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin
minio server --certs-dir /etc/minio/certs /data/minio --console-address ":9001"
- Web 管理界面:http:s//your_ip:9001
- S3 API 地址:https://your_ip:9000
后台运行(使用 systemd,强烈建议)
在 MinIO 的启动命令或服务文件中,通过 --certs-dir 参数指定证书目录,如果不使用https方式访问,可以去掉--certs-dir 参数
vi /etc/systemd/system/minio.service
[Unit]
Description=MinIO
After=network.target
[Service]
ExecStart=/usr/local/bin/minio server --certs-dir /etc/minio/certs /data/minio --console-address ":9001"
Environment="MINIO_ROOT_USER=minioadmin"
Environment="MINIO_ROOT_PASSWORD=minioadmin"
Restart=always
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
systemctl daemon-reexec
systemctl enable minio
systemctl start minio
- Web 管理界面:https://your_ip:9001
- S3 API 地址:https://your_ip:9000
创建存放备份文件的桶和目录
确保 _repo_path 目录已创建且kingbase用户有读写权限,S3密钥有存储桶的读写权限。
确保数据库服务器能正常访问你填写的 _repo_s3_endpoint 地址。

--数据节点创建备份目录
mkdir -p /data/KBbackup
chown -R kingbase:kingbase /data/KBbackup
chmod -R 775 /data/KBbackup
配置域名解析
数据节点和repo节点都要配置,用于域名解析
vi /etc/hosts
增加
192.168.40.111 s3.repo
查看集群状态
repmgr cluster show 输出如下:
[kingbase@localhost ~]$ repmgr cluster show
ID | Name | Role | Status | Upstream | Location | Priority | Timeline | LSN_Lag | Connection string
----+-------+---------+-----------+----------+----------+----------+----------+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 | node1 | primary | * running | | default | 100 | 1 | | host=192.168.40.200 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=2 keepalives_interval=2 keepalives_count=3 tcp_user_timeout=9000
2 | node2 | standby | running | node1 | default | 100 | 1 | 0 bytes | host=192.168.40.201 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=2 keepalives_interval=2 keepalives_count=3 tcp_user_timeout=9000
配置免密登录
sys_rman 备份过程中,repo 节点会调用 数据库节点上的 sys_rman ,需要做免密,建议用加密密码文件 .encpwd(用于服务器进程,客户端也可读取),不要用客户端密码文件 .kbpass(名文存储密码,不安全)
sys_encpwd -H \* -U system -D \* -P 54321 -W kingbase
配置备份
配置sys_backup.conf文件
安装目录下的 share/sys_backup.conf
根据实际项目需求和数据库实际容量合理设置备份策略和频次。
- 推荐配置下大致预估的额外空间:3倍于预测数据库实例最大占用空间。
- 通用策略推荐的全量备份周期:默认7天可更改。
- 通用策略推荐的增量备份周期:默认1天可更改。
- 通用策略推荐的保留份数:默认5份全量备份可更改。
- 指定本地配置文件目录:/data/KBbackup/db_dxj/kbbr_repo 默认/home/kingbase/kbbr_repo 可更改。
cd /home/kingbase/dbhome/kingbase/share
cp sys_backup.conf sys_backup.confbak
vi sys_backup.conf
修改以下参数,备份策略参数按需修改
_target_db_style="cluster"
_one_db_ip="192.168.40.200" #数据库所在服务器IP 主节点
_repo_ip="192.168.40.200" #若DB与REPO合一,填相同IP
_stanza_name="kingbase"
_os_user_name="kingbase"
_repo_path="/data/KBbackup/db_dxj/kbbr_repo" #具备创建、读写权限
_repo_type=s3
_repo_s3_bucket=kesbackup
_repo_s3_endpoint=https://192.168.40.111:9000 #S3 API 地址
_repo_s3_region=dxj
_repo_s3_key=minioadmin #访问密钥ID(Access Key) 可以理解为用户id
_repo_s3_key_secret=minioadmin #私有访问密钥(Secret Key) 可以理解为用户密码
执行初始化
在DB节点内部,执行开启定时命令,数据库需正常运行。初始化是一次性的,成功后不要重复执行。
- 所有的数据节点上都会创建/data/KBbackup/db_dxj/kbbr_repo目录,该目录下存放sys_rman.conf文件
- S3存储路径:存储桶名字+/data/KBbackup/db_dxj/kbbr_repo目录
/home/kingbase/dbhome/kingbase/bin/sys_backup.sh init

初始化完成后,建议手动执行一次全量备份验证配置是否正确
--全量备份
/home/kingbase/dbhome/kingbase/bin/sys_rman --config=/data/KBbackup/db_dxj/kbbr_repo/sys_rman.conf --stanza=kingbase --type=full backup
--增量备份
/home/kingbase/dbhome/kingbase/bin/sys_rman
--config=/data/KBbackup/db_dxj/kbbr_repo/sys_rman.conf --stanza=kingbase
--type=incr backup
启动自动备份
在DB节点内部,执行开启定时命令,自动备份任务默认通过crontab实现
# 开启自动备份(会根据配置文件中的周期自动调度)
/home/kingbase/dbhome/kingbase/bin/sys_backup.sh start

如需关闭定时任务,可执行如下命令:
/home/kingbase/project/bin/sys_backup.sh stop
S3存储中查看备份文件
访问:https://192.168.40.111:9001/
S3存储路径:存储桶名字+/data/KBbackup/db_dxj/kbbr_repo目录

注意事项
- 当数据备份至S3云存储时,建议使用DB节点作为逻辑REPO节点,这样可以减少网络传输跨越主机的次数,提高IO传输效率。
- 文件覆盖:
init命令会基于配置生成新的sys_rman.conf,会覆盖已有配置,请提前备份。 - 备份性能:全量备份对I/O负载较大,建议在业务低峰期进行;可根据网络情况,在配置文件中调整
band-width参数进行限速。 - 恢复准备:从S3恢复时,需要网络连通、密钥有效,还原前务必确保目标数据目录为空。
- 存储成本:对象存储通常按API调用和存储量计费,请合理设置
_repo_retention_full_count以控制备份集数量,避免产生不必要的费用。
更多推荐


所有评论(0)