暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

金仓数据库 V9R3C18 MySQL 兼容版体验(备份篇)

原创 严少安 2天前
34

如果你是一名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 等感兴趣,欢迎关注微信公众号:「少安事务所」。如果这篇文章为你带来了灵感或启发,请帮忙『点赞、转发、推荐』,感谢!ღ( ´・ᴗ・` )~

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论