外观
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 --status2. 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 testdb3. 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.sql4. 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, --directory | WAL日志存储目录 |
-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.dump2. 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_1200003. 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-method | WAL日志包含方法: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 -z4. 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_1200002. 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, --path | WAL日志目录 |
-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.sh、sys_dump、sys_dumpall等脚本和命令 - 恢复工具:主要使用
sys_restore、sys_restore_cluster.sh等脚本和命令 - 命令风格:命令参数使用短横线(-)和长横线(--)混合风格
- 输出格式:输出格式相对简单,主要是文本格式
- 压缩支持:支持基本的gzip压缩
V8 R7
- 备份工具:新增了
ks_backup、ks_dump、ks_dumpall等统一风格的命令 - 恢复工具:新增了
ks_restore、ks_restore_cluster等统一风格的命令 - 命令风格:命令参数统一使用短横线(-)风格,与PostgreSQL兼容
- 输出格式:支持更丰富的输出格式,包括JSON格式
- 压缩支持:支持多种压缩算法,压缩级别可调节
- 性能优化:备份和恢复性能得到优化,支持并行操作
- 功能增强:新增了更多的备份和恢复选项,如增量备份、WAL归档等
常见问题(FAQ)
1. 如何选择合适的备份命令?
根据备份需求选择合适的备份命令:
- 物理备份:使用
ks_backup/sys_backup.sh或ks_basebackup/sys_basebackup - 逻辑备份:使用
ks_dump/sys_dump或ks_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数据库。
