只要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单点架构,采用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
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 二进制文件 wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio mv minio /usr/local/bin/
mkdir -p /data/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"
在 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
确保
_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
安装目录下的
share/sys_backup.conf
根据实际项目需求和数据库实际容量合理设置备份策略和频次。
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节点内部,执行开启定时命令, 数据库需正常运行 。初始化是 一次性的 ,成功后不要重复执行。
/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
访问: https://192.168.40.111:9001/
S3存储路径:存储桶名字+/data/KBbackup/db_dxj/kbbr_repo目录

init
命令会基于配置生成新的
sys_rman.conf
,会覆盖已有配置,请提前备份
。
band-width
参数进行限速
。
_repo_retention_full_count
以控制备份集数量,避免产生不必要的费用。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69963491/viewspace-3173775/ ,如需转载,请注明出处,否则将追究法律责任。