Skip to content

KingBaseES 备份恢复命令

备份恢复命令概述

KingBaseES提供了一系列命令行工具,用于执行备份和恢复操作。这些工具可以帮助DBA自动化执行备份和恢复任务,确保数据的安全性和可恢复性。本文档将详细介绍KingBaseES常用的备份和恢复命令,包括命令语法、参数说明和使用示例。

备份命令

1. ks_backup / sys_backup.sh

ks_backup(V8 R7)和sys_backup.sh(V8 R6)是KingBaseES的主要备份工具,用于执行物理备份。

命令语法

bash
# V8 R7
ks_backup [OPTIONS] -b BACKUP_TYPE -D BACKUP_DIR

# V8 R6
sys_backup.sh [OPTIONS] -b BACKUP_TYPE -D BACKUP_DIR

主要参数

参数说明
-h, --host数据库服务器主机名或IP地址
-p, --port数据库服务器端口号
-U, --username数据库用户名
-W, --password数据库密码
-b, --backup-type备份类型:full(全量)、incremental(增量)、wal(WAL归档)
-D, --backup-dir备份目录
-F, --format备份格式:tar(tar格式)、plain(明文格式)
-z, --compress启用备份压缩
-Z, --compress-level压缩级别(0-9)
-v, --verbose详细输出
-V, --version显示版本信息
--history显示备份历史
--status显示备份状态

使用示例

bash
# V8 R7 执行全量备份
ks_backup -h 127.0.0.1 -p 54321 -U system -W 123456 -b full -D /backup/kingbase -F tar -z -Z 6

# V8 R6 执行全量备份
sys_backup.sh -h 127.0.0.1 -p 54321 -U system -W 123456 -b full -D /backup/kingbase -F tar -z -Z 6

# 查看备份历史
ks_backup --history

# 查看备份状态
ks_backup --status

2. ks_dump / sys_dump

ks_dump(V8 R7)和sys_dump(V8 R6)是KingBaseES的逻辑备份工具,用于导出数据库对象和数据。

命令语法

bash
# V8 R7
ks_dump [OPTIONS] DBNAME

# V8 R6
sys_dump [OPTIONS] DBNAME

主要参数

参数说明
-h, --host数据库服务器主机名或IP地址
-p, --port数据库服务器端口号
-U, --username数据库用户名
-W, --password数据库密码
-f, --file输出文件
-F, --format输出格式:p(明文)、c(自定义格式)、d(目录格式)、t(tar格式)
-a, --data-only只导出数据,不导出 schema
-s, --schema-only只导出 schema,不导出数据
-t, --table只导出指定表
-n, --schema只导出指定 schema
-x, --no-privileges不导出权限
-O, --no-owner不导出对象所有者
-z, --compress启用压缩
-v, --verbose详细输出

使用示例

bash
# 导出整个数据库(自定义格式,压缩)
ks_dump -h 127.0.0.1 -p 54321 -U system -W 123456 -F c -z -f /backup/kingbase/testdb.dump testdb

# 只导出指定表
testdb
ks_dump -h 127.0.0.1 -p 54321 -U system -W 123456 -t public.mytable -f /backup/kingbase/mytable.sql testdb

# 只导出数据
testdb
ks_dump -h 127.0.0.1 -p 54321 -U system -W 123456 -a -f /backup/kingbase/testdb_data.sql testdb

3. ks_dumpall / sys_dumpall

ks_dumpall(V8 R7)和sys_dumpall(V8 R6)用于导出所有数据库,包括全局对象(如用户、权限等)。

命令语法

bash
# V8 R7
ks_dumpall [OPTIONS]

# V8 R6
sys_dumpall [OPTIONS]

主要参数

参数说明
-h, --host数据库服务器主机名或IP地址
-p, --port数据库服务器端口号
-U, --username数据库用户名
-W, --password数据库密码
-f, --file输出文件
-g, --globals-only只导出全局对象
-r, --roles-only只导出角色
-t, --tablespaces-only只导出表空间
-x, --no-privileges不导出权限
-v, --verbose详细输出

使用示例

bash
# 导出所有数据库(包括全局对象)
ks_dumpall -h 127.0.0.1 -p 54321 -U system -W 123456 -f /backup/kingbase/all_dbs.sql

# 只导出全局对象
ks_dumpall -h 127.0.0.1 -p 54321 -U system -W 123456 -g -f /backup/kingbase/globals.sql

4. ks_receivewal / pg_receivewal

ks_receivewal(V8 R7)和pg_receivewal(V8 R6)用于接收WAL日志,用于WAL归档和流复制。

命令语法

bash
# V8 R7
ks_receivewal [OPTIONS] DESTINATION

# V8 R6
pg_receivewal [OPTIONS] DESTINATION

主要参数

参数说明
-h, --host数据库服务器主机名或IP地址
-p, --port数据库服务器端口号
-U, --username数据库用户名
-W, --password数据库密码
-D, --directoryWAL日志存储目录
-v, --verbose详细输出
-n, --no-loop接收完成后退出,不循环等待新的WAL日志
-s, --status-interval状态报告间隔(秒)

使用示例

bash
# 接收WAL日志到指定目录
ks_receivewal -h 127.0.0.1 -p 54321 -U system -W 123456 -D /archive/kingbase

恢复命令

1. ks_restore / sys_restore

ks_restore(V8 R7)和sys_restore(V8 R6)用于从逻辑备份中恢复数据库对象和数据。

命令语法

bash
# V8 R7
ks_restore [OPTIONS] BACKUP_FILE

# V8 R6
sys_restore [OPTIONS] BACKUP_FILE

主要参数

参数说明
-h, --host数据库服务器主机名或IP地址
-p, --port数据库服务器端口号
-U, --username数据库用户名
-W, --password数据库密码
-d, --dbname目标数据库名
-a, --data-only只恢复数据,不恢复 schema
-s, --schema-only只恢复 schema,不恢复数据
-t, --table只恢复指定表
-n, --schema只恢复指定 schema
-O, --no-owner不恢复对象所有者
-x, --no-privileges不恢复权限
-v, --verbose详细输出
-l, --list列出备份内容
-L, --use-list从文件中读取要恢复的对象列表

使用示例

bash
# 从自定义格式备份中恢复整个数据库
ks_restore -h 127.0.0.1 -p 54321 -U system -W 123456 -d testdb /backup/kingbase/testdb.dump

# 列出备份内容
ks_restore -l /backup/kingbase/testdb.dump

# 只恢复指定表
ks_restore -h 127.0.0.1 -p 54321 -U system -W 123456 -d testdb -t public.mytable /backup/kingbase/testdb.dump

2. ks_restore_cluster / sys_restore_cluster.sh

ks_restore_cluster(V8 R7)和sys_restore_cluster.sh(V8 R6)用于从物理备份中恢复数据库集群。

命令语法

bash
# V8 R7
ks_restore_cluster [OPTIONS] -D DATA_DIR BACKUP_DIR

# V8 R6
sys_restore_cluster.sh [OPTIONS] -D DATA_DIR BACKUP_DIR

主要参数

参数说明
-h, --host数据库服务器主机名或IP地址
-p, --port数据库服务器端口号
-U, --username数据库用户名
-W, --password数据库密码
-D, --data-dir数据库数据目录
-F, --format备份格式:tar(tar格式)、plain(明文格式)
-v, --verbose详细输出

使用示例

bash
# 从物理备份中恢复数据库集群
ks_restore_cluster -D /opt/Kingbase/ES/V8/data /backup/kingbase/2024-01-01_120000

3. ks_basebackup / sys_basebackup

ks_basebackup(V8 R7)和sys_basebackup(V8 R6)用于执行基础备份,创建数据库集群的完整副本。

命令语法

bash
# V8 R7
ks_basebackup [OPTIONS] -D BACKUP_DIR

# V8 R6
sys_basebackup [OPTIONS] -D BACKUP_DIR

主要参数

参数说明
-h, --host数据库服务器主机名或IP地址
-p, --port数据库服务器端口号
-U, --username数据库用户名
-W, --password数据库密码
-D, --pgdata备份目录
-F, --format备份格式:tar(tar格式)、plain(明文格式)
-z, --gzip启用备份压缩
-Z, --compress压缩级别(0-9)
-X, --wal-methodWAL日志包含方法:fetch(获取)、stream(流式)
-v, --verbose详细输出

使用示例

bash
# 执行基础备份(tar格式,包含WAL日志)
ks_basebackup -h 127.0.0.1 -p 54321 -U system -W 123456 -D /backup/kingbase/basebackup -F tar -X fetch -z

4. pg_restore(兼容命令)

KingBaseES兼容PostgreSQL的pg_restore命令,用于从PostgreSQL格式的备份中恢复数据。

命令语法

bash
pg_restore [OPTIONS] BACKUP_FILE

主要参数

ks_restore/sys_restore类似,详情请参考PostgreSQL文档。

使用示例

bash
# 从PostgreSQL格式备份中恢复数据库
pg_restore -h 127.0.0.1 -p 54321 -U system -W 123456 -d testdb /backup/kingbase/postgres.dump

备份验证命令

1. ks_backup_check / sys_backup_check

ks_backup_check(V8 R7)和sys_backup_check(V8 R6)用于验证备份的完整性。

命令语法

bash
# V8 R7
ks_backup_check [OPTIONS] BACKUP_DIR

# V8 R6
sys_backup_check [OPTIONS] BACKUP_DIR

主要参数

参数说明
-v, --verbose详细输出

使用示例

bash
# 验证备份完整性
ks_backup_check -v /backup/kingbase/2024-01-01_120000

2. pg_waldump / ks_waldump

pg_waldump(V8 R6)和ks_waldump(V8 R7)用于查看WAL日志内容。

命令语法

bash
# V8 R7
ks_waldump [OPTIONS] WAL_FILE

# V8 R6
pg_waldump [OPTIONS] WAL_FILE

主要参数

参数说明
-p, --pathWAL日志目录
-s, --start起始WAL位置
-e, --end结束WAL位置
-t, --timeline时间线ID
-v, --verbose详细输出

使用示例

bash
# 查看WAL日志内容
ks_waldump -p /opt/Kingbase/ES/V8/data/pg_wal 000000010000000000000001

备份恢复命令最佳实践

1. 命令使用注意事项

  • 权限要求:执行备份和恢复命令需要足够的权限,建议使用系统用户(如system)执行
  • 路径规范:使用绝对路径指定备份目录和数据目录,避免相对路径导致的问题
  • 密码安全:避免在命令行中直接输入密码,可以使用环境变量或密码文件
  • 详细输出:执行重要操作时,使用-v参数启用详细输出,便于调试和排查问题
  • 备份验证:备份完成后,使用ks_backup_check/sys_backup_check验证备份完整性

2. 自动化脚本示例

全量备份脚本

bash
#!/bin/bash
# 全量备份脚本

# 配置参数
HOST="127.0.0.1"
PORT="54321"
USER="system"
PASSWORD="123456"
BACKUP_DIR="/backup/kingbase"
BACKUP_TYPE="full"
FORMAT="tar"
COMPRESS="-z"
COMPRESS_LEVEL="-Z 6"
VERBOSE="-v"

# 创建备份目录
mkdir -p $BACKUP_DIR

# 执行备份
if command -v ks_backup &> /dev/null; then
    # V8 R7
    ks_backup -h $HOST -p $PORT -U $USER -W $PASSWORD -b $BACKUP_TYPE -D $BACKUP_DIR -F $FORMAT $COMPRESS $COMPRESS_LEVEL $VERBOSE
else
    # V8 R6
    sys_backup.sh -h $HOST -p $PORT -U $USER -W $PASSWORD -b $BACKUP_TYPE -D $BACKUP_DIR -F $FORMAT $COMPRESS $COMPRESS_LEVEL $VERBOSE
fi

# 验证备份
if command -v ks_backup_check &> /dev/null; then
    # V8 R7
    LATEST_BACKUP=$(ls -t $BACKUP_DIR | head -1)
    ks_backup_check $VERBOSE $BACKUP_DIR/$LATEST_BACKUP
else
    # V8 R6
    LATEST_BACKUP=$(ls -t $BACKUP_DIR | head -1)
    sys_backup_check $VERBOSE $BACKUP_DIR/$LATEST_BACKUP
fi

# 清理7天前的备份
find $BACKUP_DIR -name "*" -type d -mtime +7 -exec rm -rf {} \;

逻辑备份脚本

bash
#!/bin/bash
# 逻辑备份脚本

# 配置参数
HOST="127.0.0.1"
PORT="54321"
USER="system"
PASSWORD="123456"
DB_NAME="testdb"
BACKUP_DIR="/backup/kingbase"
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_$(date +%Y%m%d_%H%M%S).dump"
FORMAT="c"
COMPRESS="-z"
VERBOSE="-v"

# 创建备份目录
mkdir -p $BACKUP_DIR

# 执行备份
if command -v ks_dump &> /dev/null; then
    # V8 R7
    ks_dump -h $HOST -p $PORT -U $USER -W $PASSWORD -F $FORMAT $COMPRESS $VERBOSE -f $BACKUP_FILE $DB_NAME
else
    # V8 R6
    sys_dump -h $HOST -p $PORT -U $USER -W $PASSWORD -F $FORMAT $COMPRESS $VERBOSE -f $BACKUP_FILE $DB_NAME
fi

# 验证备份
if command -v ks_restore &> /dev/null; then
    # V8 R7
    ks_restore -l $BACKUP_FILE > /dev/null
else
    # V8 R6
    sys_restore -l $BACKUP_FILE > /dev/null
fi

# 清理7天前的备份
find $BACKUP_DIR -name "*.dump" -type f -mtime +7 -exec rm -f {} \;

版本差异

V8 R6

  • 备份工具:主要使用sys_backup.shsys_dumpsys_dumpall等脚本和命令
  • 恢复工具:主要使用sys_restoresys_restore_cluster.sh等脚本和命令
  • 命令风格:命令参数使用短横线(-)和长横线(--)混合风格
  • 输出格式:输出格式相对简单,主要是文本格式
  • 压缩支持:支持基本的gzip压缩

V8 R7

  • 备份工具:新增了ks_backupks_dumpks_dumpall等统一风格的命令
  • 恢复工具:新增了ks_restoreks_restore_cluster等统一风格的命令
  • 命令风格:命令参数统一使用短横线(-)风格,与PostgreSQL兼容
  • 输出格式:支持更丰富的输出格式,包括JSON格式
  • 压缩支持:支持多种压缩算法,压缩级别可调节
  • 性能优化:备份和恢复性能得到优化,支持并行操作
  • 功能增强:新增了更多的备份和恢复选项,如增量备份、WAL归档等

常见问题(FAQ)

1. 如何选择合适的备份命令?

根据备份需求选择合适的备份命令:

  • 物理备份:使用ks_backup/sys_backup.shks_basebackup/sys_basebackup
  • 逻辑备份:使用ks_dump/sys_dumpks_dumpall/sys_dumpall
  • WAL归档:使用ks_receivewal/pg_receivewal

2. 如何解决备份过程中的权限问题?

  • 确保执行备份命令的用户具有足够的权限
  • 对于物理备份,需要操作系统级别的权限访问数据目录
  • 对于逻辑备份,需要数据库级别的权限(如SUPERUSER或BACKUP权限)

3. 如何优化备份性能?

  • 使用压缩选项减少备份大小和备份时间
  • 选择合适的备份格式,如tar格式便于管理
  • 使用并行备份(V8 R7支持)
  • 在系统负载较低时执行备份
  • 优化备份存储的I/O性能

4. 如何验证备份的完整性?

  • 使用ks_backup_check/sys_backup_check验证物理备份完整性
  • 使用ks_restore -l/sys_restore -l验证逻辑备份完整性
  • 定期执行测试恢复,确保备份可恢复

5. 如何自动化执行备份命令?

  • 使用crontab或系统调度服务定期执行备份脚本
  • 编写自动化脚本,包含备份、验证和清理步骤
  • 配置监控和告警,确保备份任务正常执行

6. V8 R7的备份命令与V8 R6有什么主要区别?

  • 命令名称:V8 R7使用ks_前缀的命令,V8 R6使用sys_前缀的命令
  • 命令风格:V8 R7的命令风格与PostgreSQL更兼容
  • 功能增强:V8 R7支持更多的备份和恢复选项
  • 性能优化:V8 R7的备份和恢复性能更好
  • 输出格式:V8 R7支持更丰富的输出格式

总结

KingBaseES提供了一系列强大的备份和恢复命令,用于执行各种备份和恢复操作。这些命令可以帮助DBA自动化执行备份和恢复任务,确保数据的安全性和可恢复性。在实际应用中,DBA应根据业务需求选择合适的备份命令,并结合最佳实践,确保备份和恢复操作的可靠性和高效性。

随着KingBaseES版本的升级,备份和恢复命令不断增强,特别是V8 R7提供了更统一、更强大的命令集,与PostgreSQL的兼容性更好。DBA应及时了解新版本的命令变化,以便更好地管理和维护KingBaseES数据库。