除了对象级备份外,恢复前数据库必须是down的状态
删除节点1的数据文件
下面进行恢复
[
dbadmin@verdb-56120 ~]$ vbr.py --task restore --config-file fafa_backup_1201.ini
Preparing...
Found Database port: 5433
Copying...
[==================================================] 100%
All child processes terminated successfully.
restore done!
Preparing...
Found Database port: 5433
Copying...
[==================================================] 100%
All child processes terminated successfully.
restore done!
查看
[
dbadmin@verdb-56120 fafa]$ ls
dbLog dbLog.1.gz port.dat v_fafa_node0001_catalog v_fafa_node0001_data
dbLog dbLog.1.gz port.dat v_fafa_node0001_catalog v_fafa_node0001_data
数据文件存在恢复成功
全量恢复时如果数据库重建过,则新建的数据库名称、catalog、data文件路径要一致,否则恢复脚本显示完成,但是数据并未实际恢复
删除表
drop table web.CONFAccessState;
[
dbadmin@verdb-56120 ~]$ vbr.py --task restore --config-file fafa_backup_1201.ini
Preparing...
Found Database port: 5433
Copying...
[==================================================] 100%
All child processes terminated successfully.
restore done!
Preparing...
Found Database port: 5433
Copying...
[==================================================] 100%
All child processes terminated successfully.
restore done!
启动数据库查看
fafa=> select * from web.CONFAccessState;
State_Code | State_desc | is_correct | State_comment | EUTIME | EID
------------+------------+------------+---------------+--------+-----
(0 rows)
成功恢复数据库
这里拓展一下,对delete数据的恢复
dbadmin=> delete from fafa where a=2
dbadmin-> ;
-[ RECORD 1 ]
OUTPUT | 1
dbadmin=> select * from system;
-[ RECORD 1 ]------------+----------
current_epoch | 357
ahm_epoch | 356
last_good_epoch | 356
refresh_epoch | -1
designed_fault_tolerance | 0
node_count | 1
node_down_count | 0
current_fault_tolerance | 0
catalog_revision_number | 1121
wos_used_bytes | 0
wos_row_count | 0
ros_used_bytes | 530172277
ros_row_count | 31088742
total_used_bytes | 530172277
total_row_count | 31088742
dbadmin=> at epoch 356 select * from fafa;
-[ RECORD 1 ]
a | 3
-[ RECORD 2 ]
a | 2
dbadmin=> select * from fafa;
-[ RECORD 1 ]
a | 3
看到356这个好的epoch数据仍然存在,我们可以使用admintools将数据库恢复到这个epoch
另外要强调数据delete和update操作是要手动purge的(vertica并没有实际意义的update操作,无非是delete和insert的结合)