如果你是一名MySQL DBA,正在转型 Kingbase DBA,那么这篇介绍备份恢复的文章你一定要读完。
6月18日,金仓社区正式开启了新一期产品体验官活动,主题是MySQL兼容深度体验,具体要求我列在文末。
本文要聊的,是DBA体验方向,确切的说是备份恢复的内容。
01. 新版本速览:KES V9R3C18 MySQL兼容版
6月9日,KingbaseES MySQL兼容版 V9R3C18 发布。该版本重点强化了MySQL兼容性,全面优化数据库性能、高可用能力、云原生适配、数据安全与运维工具体系。
核心亮点速览:
| 维度 | 关键能力 |
|---|---|
| 兼容性 | MySQL 语法/函数/协议/驱动全栈兼容 |
| 性能 | OR Expansion、DISTINCT+LIMIT 下推、Memoize 缓存、扩展统计信息 |
| 高可用 | 集群扩容速率控制、并行故障检测、智能故障恢复、重做日志 DDL 解析 |
| 安全 | 渔翁/格尔加密设备透明加密 |
| 运维 | kbinspect 健康检查、sys_guc 参数管理、uninstall.sh 集群卸载、HA-Log 分析 |
| 多模 | 时序数据库 KES TimeSeries 扩展插件 |
| 部署 | 安装包体积缩减约 50%、容器环境授权 |
在运维方面,配套运维、备份、集群管理工具全面迭代,新增健康检查、参数批量管理等功能,优化故障诊断与集群卸载能力,进一步降低运维难度。
可用性方面,支持基于全量、差异及文件增量的块级增量备份与恢复,并支持备份集合并后形成永久增量备份,提升了数据库备份策略灵活性。
备份管理工具基于时间点恢复(PITR)时,支持记录时间线切换点并自动选择最优恢复路径,增强备份恢复系统的容错能力,保证备份数据长期可用。
02. KingbaseES V9R3C18 实践体验
安装的步骤之前介绍很多次了,这里就跳过了。
[shawnyan@kes ~]$ ksql -U system
License Type: 企业版.
Type "help" for help.
kingbase=# select version();
version
-------------------------
KingbaseES V009R003C018
(1 row)
接下来根据更新的内容依次看看实践结果。
2.1 金仓数据库四种备份类型
MySQL DBA的命根子就是备份。XtraBackup的增量备份和流式压缩是生产标配,金仓能不能给出一套同等体验的方案?
金仓数据库V9R3C18支持全量、差异、文件增量的备份与恢复,以及备份集合并形成永久增量备份的策略管理。
KingbaseES V9R3C18 支持四种备份类型,满足不同 RPO/RTO 需求:
| 备份类型 | 概念说明 | 空间占用 | 恢复速度 | 适用场景 |
|---|---|---|---|---|
| 全量备份 | 对整个数据库实例的完整数据备份 | 最大 | 最快 | 基础备份策略的基石 |
| 差异备份 | 备份自上一次全量备份以来所有变化的数据 | 中等 | 较快 | 减少每日备份数据量 |
| 文件增量备份 | 在文件粒度备份自上一次备份以来变化的数据 | 较小 | 较慢 | 节省存储空间 |
| 块增量备份 | 在数据块粒度备份自上一次备份以来变化的数据(需启用 ktrack 插件) | 最小 | 最慢 | 最小化备份数据量,细粒度 |
下面我们逐一来测试。
- 前期准备
# 修改备份配置文件
[shawnyan@kes share]$ pwd
/opt/Kingbase/ES/V9/KESRealPro/V009R003C018/ClientTools/share
[shawnyan@kes share]$ diff sys_backup.conf sys_backup.conf.bak | grep '<'
< _target_db_style="single"
< _one_db_ip="192.168.43.90"
< _repo_ip="192.168.43.90"
< _os_user_name="shawnyan"
< _repo_path="/home/shawnyan/backup"
< _single_data_dir="/opt/Kingbase/ES/V9/data"
< _single_bin_dir="/opt/Kingbase/ES/V9/Server/bin"
< _use_scmd=off
[shawnyan@kes share]$
- 在单机节点内部,执行初始化命令
[shawnyan@kes ~]$ sys_backup.sh init
# pre-condition: check the non-archived WAL files
# generate single sys_rman.conf...DONE
# update single archive_command with sys_rman.archive-push...DONE
# create stanza and check...(maybe 60+ seconds)
# create stanza and check...DONE
# initial first full backup...(maybe several minutes)
# initial first full backup...DONE
# Initial sys_rman OK.
'sys_backup.sh start' should be executed when need back-rest feature.
[shawnyan@kes ~]$
- 查看 sys_rman 版本
[shawnyan@kes backup]$ sys_rman version
sys_rman (KingbaseES) V009R003C018
2.2 全量备份
# 手动执行全量备份
sys_rman \
--config=/home/shawnyan/backup/sys_rman.conf \
--stanza=kingbase \
--archive-copy \
--type=full \
--miner-dictionary-copy=y \
backup
输出:
2026-07-03 00:53:10.359 P00 INFO: backup command begin 2.27: --archive-copy --no-archive-mode-check --no-archive-statistics --archive-timeout=600 --band-width=0 --compress-level=3 --compress-type=none --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44557-de7d2f8e --kb1-path=/opt/Kingbase/ES/V9/data --kb1-port=54321 --kb1-user=system --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --log-subprocess --miner-dictionary-copy --non-archived-space=1024 --process-max=4 --repo-disk-error=1024MB --repo-disk-warn=16384MB --repo1-path=/home/shawnyan/backup --repo1-retention-full=5 --stanza=kingbase --start-fast --type=full
2026-07-03 00:53:10.414 P00 INFO: Get pageCheckSum flag from ControlFile is 0
2026-07-03 00:53:10.415 P00 INFO: REPO disk warn-line: 16GB error-line: 1GB, current disk all 142.9GB, used 8.9GB, avail 134GB
2026-07-03 00:53:10.415 P00 INFO: Check the non archvied WAL space under the setting 1024 MB
2026-07-03 00:53:10.415 P00 INFO: Non archived WAL files have 0 MB.
2026-07-03 00:53:10.415 P00 INFO: execute non-exclusive sys_start_backup(): backup begins after the requested immediate checkpoint completes
WARN: Command execute failed(exit code: 102): {["/opt/Kingbase/ES/V9/KESRealPro/V009R003C018/ClientTools/bin/sys_miner", "--port=54321", "--username=system", "--save-dir=/opt/Kingbase/ES/V9/data/sys_miner", "save"]}
2026-07-03 00:53:10.444 P00 INFO: backup start archive = 000000010000000000000011, lsn = 0/11000028
2026-07-03 00:53:10.444 P00 INFO: check archive for prior segment 000000010000000000000010
2026-07-03 00:53:12.064 P04 INFO: backup file /opt/Kingbase/ES/V9/data/base/13146/16493 (2.2MB, 1%) checksum 5a28bd33e1c19557b673e5e9eb649bf4fbc2edde
2026-07-03 00:53:12.075 P04 INFO: backup file /opt/Kingbase/ES/V9/data/base/13147/1255 (1.8MB, 2%) checksum 4f408fe377b195204f03fc150bd1b0c61af2834c
2026-07-03 00:53:12.093 P04 INFO: backup file /opt/Kingbase/ES/V9/data/base/13146/1255 (1.8MB, 3%) checksum 2e975932a9eb0da47b62a17d62c0758199ea4c3b
...
2026-07-03 00:53:15.175 P04 INFO: backup file /opt/Kingbase/ES/V9/data/.wallet/tspkey.kr (0B, 100%)
2026-07-03 00:53:15.477 P03 INFO: backup file /opt/Kingbase/ES/V9/data/.wallet/userkey.kr (0B, 100%)
2026-07-03 00:53:15.477 P02 INFO: backup file /opt/Kingbase/ES/V9/data/.wallet/tbcolkey.kr (0B, 100%)
2026-07-03 00:53:15.477 P01 INFO: backup file /opt/Kingbase/ES/V9/data/.wallet/method.md (0B, 100%)
2026-07-03 00:53:15.478 P00 INFO: execute non-exclusive sys_stop_backup() and wait for all WAL segments to archive
WARN: Command execute failed(exit code: 102): {["/opt/Kingbase/ES/V9/KESRealPro/V009R003C018/ClientTools/bin/sys_miner", "--port=54321", "--username=system", "--save-dir=/opt/Kingbase/ES/V9/data/sys_miner", "delete"]}
2026-07-03 00:53:15.502 P00 INFO: backup stop archive = 000000010000000000000011, lsn = 0/110000F8
2026-07-03 00:53:15.504 P00 INFO: check archive for segment(s) 000000010000000000000011:000000010000000000000011
2026-07-03 00:53:15.704 P00 INFO: new backup label = 20260703-005310F
2026-07-03 00:53:15.728 P00 INFO: full backup size = 186.4MB, file total = 2404
2026-07-03 00:53:15.728 P00 INFO: backup command end: completed successfully (5375ms)
2026-07-03 00:53:15.728 P00 INFO: expire command begin 2.27: --no-archive-statistics --band-width=0 --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44557-de7d2f8e --lock-path=/home/shawnyan/backup --log-level-console=info --lo g-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --process-max=4 --repo1-path=/home/shawnyan/backup --repo1-retention-full=5 --stanza=kingbase
2026-07-03 00:53:15.730 P00 INFO: expire command end: completed successfully (2ms)
[shawnyan@kes ~]$
- 查看备份集
sys_rman \
--config=/home/shawnyan/backup/sys_rman.conf \
--stanza=kingbase \
info
输出:
stanza: kingbase
status: ok
cipher: none
db (current)
wal archive min/max (V009R003C018B0003): 00000001000000000000000D/000000010000000000000011
full backup: 20260702-233016F
timestamp start/stop: 2026-07-02 23:30:16+08 / 2026-07-02 23:30:20+08
wal start/stop: 00000001000000000000000F / 00000001000000000000000F
database size: 187.3MB, database backup size: 187.3MB
repo1: backup set size: 187.3MB, backup size: 187.3MB
full backup: 20260703-005310F
timestamp start/stop: 2026-07-03 00:53:10+08 / 2026-07-03 00:53:15+08
wal start/stop: 000000010000000000000011 / 000000010000000000000011
database size: 186.4MB, database backup size: 186.4MB
repo1: backup set size: 186.4MB, backup size: 186.4MB
[shawnyan@kes ~]$
2.3 差异备份
手动执行差异备份(基于最近一次全量备份)
sys_rman \
--config=/home/shawnyan/backup/sys_rman.conf \
--stanza=kingbase \
--archive-copy \
--type=diff \
backup
输出:
2026-07-03 00:58:55.853 P00 INFO: backup command begin 2.27: --archive-copy --no-archive-mode-check --no-archive-statistics --archive-timeout=600 --band-width=0 --compress-level=3 --compress-type=none --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44617-fd871db5 --kb1-path=/opt/Kingbase/ES/V9/data --kb1-port=54321 --kb1-user=system --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --log-subprocess --non-archived-space=1024 --process-max=4 --repo-disk-error=1024MB --repo-disk-warn=16384MB --repo1-path=/home/shawnyan/backup --repo1-retention-full=5 --stanza=kingbase --start-fast --type=diff
2026-07-03 00:58:55.892 P00 INFO: Get pageCheckSum flag from ControlFile is 0
2026-07-03 00:58:55.893 P00 INFO: REPO disk warn-line: 16GB error-line: 1GB, current disk all 142.9GB, used 9.1GB, avail 133.8GB
2026-07-03 00:58:55.910 P00 INFO: last backup label = 20260703-005310F, version = 2.27, start_lsn = 0/11000028, stop_lsn = 0/110000F8, timeline = 1
2026-07-03 00:58:55.910 P00 INFO: Check the non archvied WAL space under the setting 1024 MB
2026-07-03 00:58:55.910 P00 INFO: Non archived WAL files have 0 MB.
2026-07-03 00:58:55.910 P00 INFO: execute non-exclusive sys_start_backup(): backup begins after the requested immediate checkpoint completes
2026-07-03 00:58:55.933 P00 INFO: backup start archive = 000000010000000000000013, lsn = 0/13000028
2026-07-03 00:58:55.933 P00 INFO: check archive for prior segment 000000010000000000000012
2026-07-03 00:58:57.042 P02 INFO: backup file /opt/Kingbase/ES/V9/data/sys_csnlog/0000 (256KB, 48%) checksum ec8543934e4fea7262ea9133679c570a8e373c4d
2026-07-03 00:58:57.043 P03 INFO: backup file /opt/Kingbase/ES/V9/data/global/sys_control (8KB, 49%) checksum 3e8ff25957ce6c287af05cab159a4de18d12b459
2026-07-03 00:58:57.144 P04 INFO: backup file /opt/Kingbase/ES/V9/data/base/13146/16517 (8KB, 51%) checksum b4ee7088a397f15468ee4ed5040f9df5cf801560
2026-07-03 00:58:57.446 P01 INFO: backup file /opt/Kingbase/ES/V9/data/sys_xact/0000 (256KB, 99%) checksum e672fba537fd9e76da18125dc3f5bbf12fbc2c73
2026-07-03 00:58:57.447 P02 INFO: backup file /opt/Kingbase/ES/V9/data/sys_log/kingbase-2026-07-03_000000.log (3.6KB, 99%) checksum a6bcf8f6f879832fcef0d764e0dbc3f46808431d
2026-07-03 00:58:57.447 P03 INFO: backup file /opt/Kingbase/ES/V9/data/sys_logical/replorigin_checkpoint (8B, 100%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532
2026-07-03 00:58:57.448 P00 INFO: execute non-exclusive sys_stop_backup() and wait for all WAL segments to archive
2026-07-03 00:58:57.467 P00 INFO: backup stop archive = 000000010000000000000013, lsn = 0/130000F8
2026-07-03 00:58:57.468 P00 INFO: check archive for segment(s) 000000010000000000000013:000000010000000000000013
2026-07-03 00:58:57.698 P00 INFO: new backup label = 20260703-005310F_20260703-005855D
2026-07-03 00:58:57.726 P00 INFO: diff backup size = 16.5MB, file total = 2404
2026-07-03 00:58:57.726 P00 INFO: backup command end: completed successfully (1877ms)
2026-07-03 00:58:57.726 P00 INFO: expire command begin 2.27: --no-archive-statistics --band-width=0 --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44617-fd871db5 --lock-path=/home/shawnyan/backup --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --process-max=4 --repo1-path=/home/shawnyan/backup --repo1-retention-full=5 --stanza=kingbase
2026-07-03 00:58:57.728 P00 INFO: expire command end: completed successfully (2ms)
[shawnyan@kes ~]$
2.4 文件增量备份
手动执行文件级增量备份。
sys_rman \
--config=/home/shawnyan/backup/sys_rman.conf \
--stanza=kingbase \
--archive-copy \
--type=incr \
backup
输出:
2026-07-03 01:05:49.928 P00 INFO: backup command begin 2.27: --archive-copy --no-archive-mode-check --no-archive-statistics --archive-timeout=600 --band-width=0 --compress-level=3 --compress-type=none --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44692-8cc08523 --kb1-path=/opt/Kingbase/ES/V9/data --kb1-port=54321 --kb1-user=system --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --log-subprocess --non-archived-space=1024 --process-max=4 --repo-disk-error=1024MB --repo-disk-warn=16384MB --repo1-path=/home/shawnyan/backup --repo1-retention-full=5 --stanza=kingbase --start-fast --type=incr
2026-07-03 01:05:49.976 P00 INFO: Get pageCheckSum flag from ControlFile is 0
2026-07-03 01:05:49.976 P00 INFO: REPO disk warn-line: 16GB error-line: 1GB, current disk all 142.9GB, used 9.1GB, avail 133.8GB
2026-07-03 01:05:50.002 P00 INFO: last backup label = 20260703-005310F_20260703-005855D, version = 2.27, start_lsn = 0/13000028, stop_lsn = 0/130000F8, timeline = 1
2026-07-03 01:05:50.002 P00 INFO: Check the non archvied WAL space under the setting 1024 MB
2026-07-03 01:05:50.002 P00 INFO: Non archived WAL files have 0 MB.
2026-07-03 01:05:50.002 P00 INFO: execute non-exclusive sys_start_backup(): backup begins after the requested immediate checkpoint completes
2026-07-03 01:05:50.024 P00 INFO: backup start archive = 000000010000000000000015, lsn = 0/15000028
2026-07-03 01:05:50.024 P00 INFO: check archive for prior segment 000000010000000000000014
2026-07-03 01:05:51.083 P04 INFO: backup file /opt/Kingbase/ES/V9/data/base/13146/16517 (8KB, 1%) checksum 19bbc6a6a440da8cba730d0d250bdf454e081282
2026-07-03 01:05:51.084 P03 INFO: backup file /opt/Kingbase/ES/V9/data/global/sys_control (8KB, 2%) checksum 20ba678fa88ce248009fdc3bc9d2f1f0dcdbadb9
2026-07-03 01:05:51.185 P01 INFO: backup file /opt/Kingbase/ES/V9/data/sys_xact/0000 (256KB, 50%) checksum 33da36f78377808661fff3b4f7d2569c0fb48572
2026-07-03 01:05:51.486 P02 INFO: backup file /opt/Kingbase/ES/V9/data/sys_csnlog/0000 (256KB, 98%) checksum f5dd9450d6cc09b33fb747d72200c2e3d4bd2f8d
2026-07-03 01:05:51.486 P04 INFO: backup file /opt/Kingbase/ES/V9/data/sys_log/kingbase-2026-07-03_000000.log (6.1KB, 99%) checksum 1ebb0a19dd91c2725c74689364cb7fd8a4e5e0f7
2026-07-03 01:05:51.486 P03 INFO: backup file /opt/Kingbase/ES/V9/data/sys_logical/replorigin_checkpoint (8B, 100%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532
2026-07-03 01:05:51.487 P00 INFO: execute non-exclusive sys_stop_backup() and wait for all WAL segments to archive
2026-07-03 01:05:51.506 P00 INFO: backup stop archive = 000000010000000000000015, lsn = 0/150000F8
2026-07-03 01:05:51.507 P00 INFO: check archive for segment(s) 000000010000000000000015:000000010000000000000015
2026-07-03 01:05:51.717 P00 INFO: new backup label = 20260703-005310F_20260703-010549I
2026-07-03 01:05:51.773 P00 INFO: incr backup size = 16.5MB, file total = 2404
2026-07-03 01:05:51.773 P00 INFO: backup command end: completed successfully (1849ms)
2026-07-03 01:05:51.773 P00 INFO: expire command begin 2.27: --no-archive-statistics --band-width=0 --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44692-8cc08523 --lock-path=/home/shawnyan/backup --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --process-max=4 --repo1-path=/home/shawnyan/backup --repo1-retention-full=5 --stanza=kingbase
2026-07-03 01:05:51.776 P00 INFO: expire command end: completed successfully (3ms)
[shawnyan@kes ~]$
2.5 备份集合并
概念介绍:
备份集合并(Merge) 功能允许将历史积累的若干增量备份集合并为全量备份集,以达到节省存储空间的目的。合并后,旧的增量备份集可被清除。
注意事项:
- 合并备份集只支持指定增量备份集作为合并的终点
- 不允许指定全量、块增量、差异备份集
两种合并方式:
# 方式一:手动执行 merge 命令
# 将指定的增量备份集以及依赖链上的全量/增量合并为新的全量备份集
# --merge_action=merge-no-delete :合并但保留旧全量备份集
# --merge_action=merge-and-delete :合并并删除旧全量备份集
sys_rman \
--config=/home/kingbase/kbbr_repo/sys_rman.conf \
--stanza=kingbase \
--set=<增量备份集ID> \
--merge_action=merge-and-delete merge
# 方式二:执行增量备份时附带 merge 动作
sys_rman \
--config=/home/kingbase/kbbr_repo/sys_rman.conf \
--stanza=kingbase \
--type=incr \
--merge_action=merge-and-delete backup
实操演示:
- 查看当前备份信息
[shawnyan@kes ~]$ sys_rman \
--config=/home/shawnyan/backup/sys_rman.conf \
--stanza=kingbase \
info
stanza: kingbase
status: ok
cipher: none
db (current)
wal archive min/max (V009R003C018B0003): 00000001000000000000000D/000000010000000000000015
full backup: 20260702-233016F
timestamp start/stop: 2026-07-02 23:30:16+08 / 2026-07-02 23:30:20+08
wal start/stop: 00000001000000000000000F / 00000001000000000000000F
database size: 187.3MB, database backup size: 187.3MB
repo1: backup set size: 187.3MB, backup size: 187.3MB
full backup: 20260703-005310F
timestamp start/stop: 2026-07-03 00:53:10+08 / 2026-07-03 00:53:15+08
wal start/stop: 000000010000000000000011 / 000000010000000000000011
database size: 186.4MB, database backup size: 186.4MB
repo1: backup set size: 186.4MB, backup size: 186.4MB
diff backup: 20260703-005310F_20260703-005855D
timestamp start/stop: 2026-07-03 00:58:55+08 / 2026-07-03 00:58:57+08
wal start/stop: 000000010000000000000013 / 000000010000000000000013
database size: 186.4MB, database backup size: 16.5MB
repo1: backup set size: 186.4MB, backup size: 16.5MB
backup reference list: 20260703-005310F
incr backup: 20260703-005310F_20260703-010549I
timestamp start/stop: 2026-07-03 01:05:49+08 / 2026-07-03 01:05:51+08
wal start/stop: 000000010000000000000015 / 000000010000000000000015
database size: 186.4MB, database backup size: 16.5MB
repo1: backup set size: 186.4MB, backup size: 16.5MB
backup reference list: 20260703-005310F
[shawnyan@kes ~]$
- 手动执行 merge 命令
[shawnyan@kes ~]$ sys_rman \
--config=/home/shawnyan/backup/sys_rman.conf \
--stanza=kingbase \
--set=20260703-005310F_20260703-010549I \
--merge_action=merge-and-delete \
merge
2026-07-03 01:17:10.908 P00 INFO: merge command begin 2.27: --no-archive-statistics --compress-level=3 --compress-type=none --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44778-847383e0 --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --merge_action=merge-and-delete --repo1-path=/home/shawnyan/backup --repo1-retention-full=5 --set=20260703-005310F_20260703-010549I --stanza=kingbase
2026-07-03 01:17:10.909 P00 INFO: Will merge and delete
2026-07-03 01:17:10.941 P00 INFO: merge 20260703-005310F_20260703-010549I (reference 20260703-005310F) to 20260703-010549F
2026-07-03 01:17:11.074 P00 INFO: copied 2396 files from referenced backup set
2026-07-03 01:17:11.099 P00 INFO: finish mergence using 1
2026-07-03 01:17:11.100 P00 INFO: merge command end: completed successfully (198ms)
2026-07-03 01:17:11.100 P00 INFO: expire command begin 2.27: --no-archive-statistics --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44778-847383e0 --lock-path=/home/shawnyan/backup --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --repo1-path=/home/shawnyan/backup --repo1-retention-full=5 --set=20260703-005310F --stanza=kingbase
2026-07-03 01:17:11.100 P00 INFO: expire the backup-set 20260703-005310F
2026-07-03 01:17:11.101 P00 INFO: repo1: expire adhoc backup set 20260703-005310F, 20260703-005310F_20260703-005855D, 20260703-005310F_20260703-010549I
2026-07-03 01:17:11.103 P00 INFO: repo1: remove expired backup 20260703-005310F_20260703-010549I
2026-07-03 01:17:11.103 P00 INFO: repo1: remove expired backup 20260703-005310F_20260703-005855D
2026-07-03 01:17:11.104 P00 INFO: repo1: remove expired backup 20260703-005310F
2026-07-03 01:17:11.113 P00 INFO: option 'repo-retention-archive' is not set - archive logs will not be expired
2026-07-03 01:17:11.113 P00 INFO: expire command end: completed successfully (13ms)
[shawnyan@kes ~]$
- 合并后再次查看备份信息
[shawnyan@kes ~]$ sys_rman --config=/home/shawnyan/backup/sys_rman.conf --stanza=kingbase info
stanza: kingbase
status: ok
cipher: none
db (current)
wal archive min/max (V009R003C018B0003): 00000001000000000000000D/000000010000000000000015
full backup: 20260702-233016F
timestamp start/stop: 2026-07-02 23:30:16+08 / 2026-07-02 23:30:20+08
wal start/stop: 00000001000000000000000F / 00000001000000000000000F
database size: 187.3MB, database backup size: 187.3MB
repo1: backup set size: 187.3MB, backup size: 187.3MB
full backup: 20260703-010549F
timestamp start/stop: 2026-07-03 01:05:49+08 / 2026-07-03 01:05:51+08
wal start/stop: 000000010000000000000015 / 000000010000000000000015
database size: 186.4MB, database backup size: 186.4MB
repo1: backup set size: 186.4MB, backup size: 186.4MB
[shawnyan@kes ~]$
2.6 永久增量备份
概念介绍:
永久增量备份是 V9R3C18 新增的备份策略管理功能。通过在初始化配置文件 sys_backup.conf 中设置 _continue_incr=y,系统不再执行周期性全量备份,而是由增量备份 + 合并(Merge)获得一个全量备份集。这样每次备份都是增量备份,通过后台自动合并机制产生等效的全量备份。
配置示例:
# sys_backup.conf
# 启用永久增量备份模式
_continue_incr=y
# 自动执行增量备份的间隔天数
_crond_incr_days=1
# 自动执行增量备份的时间点(凌晨 4 点)
_crond_incr_hour=4
# 保存全量备份的数目(用于自动清理)
repo1-retention-full=5
永久增量备份流程:
永久增量备份模式:
第1天:增量备份1
第2天:增量备份2 → 自动合并 → 等效全量备份A
第3天:增量备份3(基于等效全量备份A)
第4天:增量备份4 → 自动合并 → 等效全量备份B
...
2.7 全量恢复
从全量备份中恢复数据。
mkdir /home/shawnyan/dbdata02
sys_rman \
--config=/home/shawnyan/backup/sys_rman.conf \
--stanza=kingbase \
--kb1-path=/home/shawnyan/dbdata02 \
--archive-mode=off \
restore
输出:
[shawnyan@kes ~]$ sys_rman \
--config=/home/shawnyan/backup/sys_rman.conf \
--stanza=kingbase \
--kb1-path=/home/shawnyan/dbdata02 \
--archive-mode=off \
restore
2026-07-03 01:27:25.297 P00 INFO: restore command begin 2.27: --archive-mode=off --band-width=0 --config=/home/shawnyan/backup/sys_rman.conf --exec-id=44842-2c955a46 --kb1-path=/home/shawnyan/dbdata02 --link-all --log-level-console=info --log-level-file=info --log-path=/opt/Kingbase/ES/V9/Server/log --log-subprocess --non-archived-space=1024 --process-max=4 --repo1-path=/home/shawnyan/backup --stanza=kingbase
2026-07-03 01:27:25.298 P00 INFO: try to get referenced backup set from 'timeline 1 [0/0, 0/0]'
2026-07-03 01:27:25.309 P00 INFO: find referenced backup set '20260703-010549F' [0/15000028, 0/150000F8] in timeline 1 [0/0, 0/0]
2026-07-03 01:27:25.316 P00 INFO: repo1: restore backup set 20260703-010549F, recovery will start at 2026-07-03 01:05:49
2026-07-03 01:27:25.316 P00 INFO: remap data directory to '/home/shawnyan/dbdata02'
2026-07-03 01:27:25.380 P00 INFO: Restore Process: FILE: 1 / 2404 0% SIZE: 4456448 bytes / 195456836 bytes 4.2MB / 186.4MB 2%
2026-07-03 01:27:25.388 P00 INFO: Restore Process: FILE: 2 / 2404 0% SIZE: 6725632 bytes / 195456836 bytes 6.4MB / 186.4MB 3%
2026-07-03 01:27:25.393 P00 INFO: Restore Process: FILE: 3 / 2404 0% SIZE: 8585216 bytes / 195456836 bytes 8.2MB / 186.4MB 4%
...
2026-07-03 01:27:27.799 P00 INFO: Restore Process: FILE: 2402 / 2404 99% SIZE: 195456836 bytes / 195456836 bytes 186.4MB / 186.4MB 100%
2026-07-03 01:27:27.799 P00 INFO: Restore Process: FILE: 2403 / 2404 99% SIZE: 195456836 bytes / 195456836 bytes 186.4MB / 186.4MB 100%
2026-07-03 01:27:27.799 P00 INFO: Restore Process: FILE: 2404 / 2404 100% SIZE: 195456836 bytes / 195456836 bytes 186.4MB / 186.4MB 100%
2026-07-03 01:27:27.800 P00 INFO: write updated /home/shawnyan/dbdata02/kingbase.auto.conf
2026-07-03 01:27:27.804 P00 INFO: restore global/sys_control (performed last to ensure aborted restores cannot be started)
2026-07-03 01:27:27.804 P00 INFO: restore size = 186.4MB, file total = 2404
2026-07-03 01:27:27.804 P00 INFO: restore command end: completed successfully (2514ms)
[shawnyan@kes ~]$
修改监听端口,启动数据库。
cd dbdata02
vi kingbase.conf
< port=52222
sys_ctl start -D /home/shawnyan/dbdata02
连接到刚恢复的数据库,确认数据正常。
[shawnyan@kes ~]$ ksql -U system -p 54322
License Type: 企业版.
Type "help" for help.
kingbase=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+--------+----------+-------------+-------------+-------------------
kingbase | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
security | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/system +
| | | | | system=CTc/system
template1 | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/system +
| | | | | system=CTc/system
test | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(5 rows)
kingbase=# select * from t_shawnyan;
int
-----
1
2
3
4
5
6
(6 rows)
kingbase=#
关于金仓数据库 MySQL 兼容版的备份与恢复我们就先介绍到这里。
2026 金仓数据库产品体验官召集令
无论你是开发者、DBA,还是数据库爱好者,只要你对数据库技术有热情、愿意动手实践与分享,诚邀你加入"数据库平替用金仓"的体验官阵营!
⏰ 本期活动时间:2026 年 6 月 18 日 — 7 月 18 日
三步解锁体验官。
① 下载部署
前往金仓官网 (https://www.kingbase.com.cn/download.html) 获取安装包。
KingbaseES 数据库安装包 (MySQL兼容) — V9R3C18
此版本全方位升级,核心强化 MySQL 全栈兼容,实现业务无缝迁移。
② 深度体验(开发者 & DBA 双通道)
围绕以下金仓数据库 MySQL 兼容特性撰写博文(可自由选择多个特性进行体验):
开发者体验方向
- MySQL 语法兼容:体验零值日期、注释、CASE 类型隐式转换、字段位置调整、RENAME USER/TABLE、PREPARE/EXECUTE 等 MySQL 常用语法兼容。
- JSON 与函数兼容:测试 JSON_OVERLAPS、JSON 操作符
->/->>优先级,以及 INSERT、LEFT、quote、FORMAT、time format 等函数能力。 - 驱动与接口应用:使用 MySQL 原生驱动连接 KES,体验 MySQL C API 兼容接口,以及 GOKB 多主机智能连接、网络超时配置和自增列 ID 获取功能。
- 查询与写入优化:测试 OR Expansion、QueryMapping、Hint、DISTINCT 并行与 LIMIT 下推、Memoize 参数化结果集缓存,以及多 VALUES INSERT 批量写入,观察性能提升幅度。
DBA 体验方向
- 高可用集群运维:体验读写分离集群扩容、重建备库时的克隆同步速率控制,以及主库故障下并行检测、选举与升主流程优化。
- 备份恢复:测试全量、差异、文件增量的备份与恢复,以及备份集合并形成永久增量备份的策略管理。
- 故障恢复与日志解析:体验智能故障恢复模式、主库变迁历史记录,以及解析重做日志中 DDL 信息并动态更新数据字典的能力。
- 运维工具链:测试 kbinspect 一站式健康检查、sys_guc 参数批量修改、uninstall.sh 集群卸载及 HA-Log 故障信息自动收集分析能力。
③ 发布图文
采用 【金仓数据库产品体验官】+ 自拟标题,带双话题标签 #数据库就用金仓 #金仓产品体验官,发布至金仓社区博客专区或者 CSDN 博客专区。
更多活动细节请参考活动贴:
https://bbs.kingbase.com.cn/forumDetail?articleId=89b65cfa122a2a42ff148fa3bcc3099d
#数据库平替用金仓 #金仓产品体验官
Have a nice day ~ ☕
🌻 相关阅读 ▼
👉 这里有得聊
如果你对国产基础软件(操作系统、数据库、中间件)、AI Agent、Vibe Coding、OpenClaw 、Hermes Agent 等感兴趣,欢迎关注微信公众号:「少安事务所」。如果这篇文章为你带来了灵感或启发,请帮忙『点赞、转发、推荐』,感谢!ღ( ´・ᴗ・` )~




