基于人大金仓数据库进行数据库的备份还原

已邀请:

通用版

1、数据库备份

#切换到数据库用户

su - kingbase 

#将ncc2005数据库备份到当前路径,备份文件名为ncc2005.dmp ,这个是金仓压缩模式的物理备份,需要用sys_restore恢复

sys_dump -Usystem -Fc -f ncc2005.dmp ncc2005   

#也可以直接生成逻辑备份,可用ksql还原

sys_dump -Usystem -f ncc2005.sql ncc2005


#对于非本机的标准端口数据库,也可以通过参数指定连接信息进行处理

sys_dump -h 数据库IP -p 端口 -U SYSTEM -W 数据库用户密码 -f 数据库备份绝对地址 要备份的数据库名称



2、数据库还原

#上传备份文件,例如上传到了/data/kingbase/,切换到数据库用户,并切换到备份文件目录

su - kingbase  

cd  /data/kingbase/

#恢复数据库,如果是物理备份(备份参数带-Fc), 例如已建好ncc2005数据库和用户

sys_restore  -U用户名 -d数据库 -p端口 物理备份绝对地址


#如果逻辑备份,还原到指定数据库

ksql -USYSTEM -W数据库用户密码 -d被还原的目标库(需提前建好) -p数据库端口 -f 备份文件绝对路径


#扩展,如果需要指定schema 指定表,可以参考在导出时配置如下参数

模式(-n)、表(-t)、结构(-s)、数据(-a)


如果使用ksql恢复物理备份,会提示如下:

    /uploads/answer/20210304/756cdd8ca7e623a63c218561d070019f.png

如果基于逻辑备份还原数据库,又想替换用户名(schema),如何操作?


sed
-i "s/原schema/导入目标库的新schema/g"  逻辑备份文件 ,然后在进行导入即可


如下为官方资料


示例:

二进制格式:

备份全库:

sys_dump -h ip -p 端口 -U 用户 -W 密码 –F c -f 备份路径/xxx.dmp 库名

还原全库:

sys_restore
-h ip -p
端口 -U 用户 -W 密码 -d 库名备份路径/xxx.dmp

sql格式:

备份全库:

sys_dump -h ip -p 端口 -U 用户 -W 密码-f 备份路径/xxx.sql 库名

还原全库:

ksql-h ip -U用户名 -W密码 -d 库名 -f备份路径/xxx.sql

全备份:

  sys_dumpall
-USYSTEM -W123456 -f 
备份路径/xxx.sql

还原:

  initdb
-USYSTEM -W123456 -D data_all

  ksql
-USYSTEM -W123456 -d SAMPLES -f 
备份路径/xxx.sql

物理备份及还原


物理备份是将实际组成数据库的操作系统文件进行拷贝的过程

1、脱机物理备份:

直接备份data

2、联机物理备份:全量、增量

备份:

使用工具:sys_rman

还原:

还原到最新时间点

还原到某个备份集

还原到某个时间点

sys_rman使用示例:

一、备份

1、配置参数

wal_level='replica'

archive_mode='on'

archive_dest='/home/kingbase/archive'

2、初始化

sys_rman
init -U SYSTEM -W 123456 -d TEMPLATE2 -B /home/kingbase/backup/ -D
/home/kingbase/KingbaseES/V8/data/

3、创建测试表及备份

新建表backup_full

CREATE
TABLE BACKUP_FULL(ID INT);

INSERT
INTO BACKUP_FULL SELECT GENERATE_SERIES(1,10000);


全量备份

sys_rman backup -b full-U SYSTEM -W 123456 -d TEMPLATE2 -B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data/

新建表backup_01

CREATE TABLE BACKUP_01(ID INT);

INSERT INTO BACKUP_01 SELECT
GENERATE_SERIES(1,10000);

增量备份01

sys_rman backup -b page-U SYSTEM -W 123456 -d TEMPLATE2 -B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data/

sys_rman restore ID -B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data2

3、基于时间点还原

mkdir data3

sys_rman restore-B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data3--time 'Recovery time'


新建表backup_02

CREATE TABLE BACKUP_02(ID INT);

INSERT INTO BACKUP_02 SELECT
GENERATE_SERIES(1,10000);

增量备份02

sys_rman backup -b page-U SYSTEM -W 123456 -d TEMPLATE2 -B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data/

新建表backup_03

CREATE TABLE BACKUP_03(ID INT);

INSERT INTO BACKUP_03 SELECT GENERATE_SERIES(1,10000);

增量备份03

sys_rman backup -b page-U SYSTEM -W 123456 -d TEMPLATE2 -B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data/

4、查看备份集

sys_rman show -B /home/kingbase/backup/


二、还原

1、默认还原到最新时间点

mkdir data1

sys_rman restore -B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data1

2、还原到某个备份集

mkdir data2

sys_rman restore ID -B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data2

3、基于时间点还原

mkdir data3

sys_rman restore-B /home/kingbase/backup/ -D /home/kingbase/KingbaseES/V8/data3--time 'Recovery time'


三、清理策略

1、按备份集保留

sys_rman retention purge--redundancy 1 -B /home/kingbase/backup/

——指定应保留多少完整备份清除命令

2、按时间保留

sys_rman retention purge--window 7 -B /home/kingbase/backup/

——指定可恢复的天数



一、逻辑备份脚本部署

1mkdir /home/kingbase/scripts

2、将备份脚本backup8.sh放到scripts

3、修改备份脚本里的参数

kdb_home="/home/kingbase/KingbaseES/V8/Server"——安装目录

kdbback_dest="/home/kingbase/backup"——备份路径

kdb_user="SYSTEM"——备份用户

kdb_pass="123456"——密码

kdb_port="54321"——端口

kdb_host="127.0.0.1"——ip

kdb_list="TEST,SAMPLES"——要备份的库名,用逗号隔开

keep_time="7"——备份保留天数


4、测试脚本

sh -x/home/kingbase/scripts/backup8.sh

5、编写定时任务

crontab -e

0
2 * * *
sh
/home/kingbase/scripts/backup8.sh>/dev/null 2>&1 &

——每天凌晨两点进行逻辑备份



二、全量增量备份脚本部署

1mkdir /home/kingbase/scripts

2、将备份脚本rman_full.sh、rman_page.sh放到scripts

3、修改备份脚本里的参数

(1)修改rman_full.sh

kdb_home="/home/v8/Kingbase/ES/V8/Server/"——安装目录

kdb_data="/home/kingbase/KingbaseES/V8/data" ——数据目录路径

kdb_user="SYSTEM"——备份用户

kdb_pass="123456"——密码

kdb_port="54321"——端口

kdb_host="127.0.0.1"——ip

kdbback_dest="/home/kingbase/backup"——备份路径

keep_num="2"——保留备份集


(2)修改rman_page.sh

kdb_home="/home/v8/Kingbase/ES/V8/Server/"——安装目录

kdb_data="/home/kingbase/KingbaseES/V8/data"——数据目录路径

kdb_user="SYSTEM" ——备份用户

kdb_pass="123456" ——密码

kdb_port="54321" ——端口

kdb_host="127.0.0.1"——ip

kdbback_dest="/home/kingbase/backup"——备份路径

4、测试脚本

sh -x/home/kingbase/scripts/rman_full.sh

sh -x/home/kingbase/scripts/rman_page.sh


5、编写定时任务

crontab -e

023**6sh
/home/kingbase/scripts/rman_full.sh>/dev/null 2>&1 &

023**0-5sh
/home/kingbase/scripts/rman_page.sh>/dev/null 2>&1 &

——每周六晚23点进行物理全量备份,周日至周五晚23点进行物理增量备份



要回复问题请先登录注册