暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

实例说明GBase 8a集群的备份恢复工具gcrcman的使用方法

原创 Lily_tj 2022-09-19
2377

目录

数据库中的数据是很重要的要素,DBA主要职责要要保障数据库系统不间断运行。在生产环境中,可能发生硬件故障、软件故障、自然灾害、黑客攻击及人为的误操等因素,从而导致数据丢失的情况发生。

GBase 8a MPP Cluster(以下简称8a集群) 作为MPP分析型集群,在备份恢复与OLTP事务数据库有较大差异。如事务数据库具有完备的WAL(write ahead logging)事务日志,可以通过事务日志实现数据库的备份、双活复制、异地容灾等;MPP分析型数据库为追求大吞吐性能去掉了事务日志支持,无法采用基于事务日志方式实现备份恢复、容灾备份方案。

8a集群提供专用的备份恢复工具(gcrcman)实现本地备份;对于容灾备份,提供异步双活集群、实时双活集群和两地三中心灾备方案,满足数据安全、业务连续要求。本文详细介绍备份恢复工具gcrcman使用方法。

一、备份恢复工具gcrcman

GBase 8a MPP Cluster 提供专用的备份恢复工具(gcrcman),让用户可以方便地对整个集群中的数据进行备份和恢复,防止数据丢失或损坏对用户业务造成不利影响,保障在异常情况下能够快速恢复系统。备份恢复工具 gcrcman.py 随集群的安装自动安装在$GCLUSTER_BASE/server/bin 目录下。

1、gcrcman的具体功能:

  • 支持集群级、库级、表级的全量备份
  • 支持集群级、库级、表级的增量备份
  • 支持集群级、库级、表级恢复到指定备份周期的指定备份点
  • 支持集群级、库级、表级恢复到最新备份周期最新备份点
  • 支持异地备份恢复(nfs 挂载异地备份恢复数据存放磁盘)
  • 支持删除备份和清除无效备份数据
  • 支持查看备份信息
  • 支持删除备份数据
  • 支持删除垃圾备份数据

2、 执行gcrcman的注意事项

gcrcman.py 是备份恢复工具执行文件,执行时注意事项如下:

  • 必须是安装数据库时指定的 dbauser(例如:gbase)账号执行备份恢复操作
  • 每次只能运行一个gcrcman.py程序,只需在即安装 gcware 服务又有gcluster服务的Coordinator任一节点执行备份操作即可
  • 集群上每个节点需要建立一个同样名称的备份目录,可nfs到异地备份文件服务器目录上,dbauser对该备份目录具有读写权限,不能将 $GCLUSTER_BASE、$GBASE_BASE、$GCWARE_BASE 这三个目录及其子目录设置为备份目录名称
  • 执行备份时要求8a集群各节点运行正常,没有offline节点,没有event事件日志。
  • 执行 gcrcman.py 命令,需要确定操作系统已安装 pexpect 包(未安装会报错 “gcrcman error:No module named pexpect”)。

3、 gcrcman.py 语法

$ python $GCLUSTER_BASE/server/bin/gcrcman.py [options] <-d|--path BACKUP_PATH>

可使用 gcrcman.py -h 查看具体参数信息,常用参数说明如下:

参数名称 说明
-h,–help 显示帮助信息
-V,–version 显示 gcrcman 的版本信息
-d ,–path 必选参数。用于设定备份数据的存放路径。该路径必须是绝对路径,路径中支持“~”的使用,在每个节点下面都要有 path 参数指定 的 路 径 , 且 该 路 径 要 求 有 写 权 限 。 不 能 将 $GCLUSTER_BASE 或 者 GBASE_BASE 或 者GCWARE_BASE 这三个目录及子目录设置为 path 的路径。
-e --execute 指定要执行的备份或恢复命令,执行完自动退出。具体命令参考表。当使用-e 这种简称参数时,建议-e 和后面的参数之间使用一个空格,提高可读性。
-P --ospassword 指定数据库管理员的操作系统用户密码。默认是 gbase 用户,不可指定,此处填写操作系统用户 gbase 的密码。
-p , --dbpassword 指定数据库管理员的数据库用户密码。备份恢复工具有些操作需要访问数据库,因此需要指定数据库用户密码。数据库用户默认是 gbase,不可指定。
-r , --parallel 用于设置备份恢复工具执行的并行度,取值范围为[1,128],默认值为 4。

备份恢复命令说明:backup level < 0 | 1 > 0表示全备,1表示增备
恢复命令:recover [<cycle_id> [point_id]]

备份恢复命令说明

参数名称 说明
show backup 显示备份信息
backup level <0|1> 集群级备份。设置备份级别,0 表示全备,1 表示增备。
backup database [vcname.] level <0|1> 数据库级备份。
backup table [vcname.]<dbname.tablename> level <0|1> 表级备份。
recover [<cycle_id> [point_id]] 实例级恢复。
recover database [vcname.] [<cycle_id> [point_id]] 数据库级恢复
recover [force] table [vcname.]<dbname.tablename> [<cycle_id> [point_id]] 表级恢复
delete <cycle_id | last> 删除备份数据
cleanup 清除无效备份数据
quit 退出
help 显示帮助信息

说明:

  • 设置备份级别:0 表示全备,1 表示增备。
  • cycle_id 表示备份周期,不写表示最新的备份周期
  • point_id 指定的备份点,不写表示恢复到最新的备份点
  • 执行集群级备份命令前,需要将8a集群模式设置为readonly只读才能执行备份命令;
  • 执行数据库级或表级备份命令,则不需要将8a集群模式设置为readonly只读模式,备份时该数据库中的表或备份的表会锁住。

4、 两种执行模式

gcrcman.py 支持两种执行模式

  1. 交互式模式
    适合DBA手动执行备份恢复命令,进入 gcrcman>提示符下,进行备份恢复的相关操作命令。
[gbase@162 ~]$ gcrcman.py -d /home/gbase/backup/ -P gbase8a -p gbase20110531 gcrcman>help gcrcman>backup level 0 gcrcman>quit

说明:交互式方式下如果输入了错误字符想删除,需使用 Ctrl+Backspace 清除错误字符

  1. 命令行模式
    使用-e 参数,gcrcman 启动后,仅执行-e 指定的命令,执行完毕后自动退出。
    命令行模式适合执行一条具体的备份恢复命令,常用在脚本中,或者cron定时任务命令。
[gbase@162 ~]$ gcrcman.py -d /home/gbase/backup/ -e "show backup" -P gbase8a -p gbase20110531 no backup data

-e 参数:表示后面跟一个备份恢复命令

5、支持三种级别备份恢复

gcrcman.py 支持三种级别备份恢复

  1. 集群级备份集群数据
    不分VC集群所有节点的所有数据的全备或增备,备份前需将8a集群设置为readonly只读状态,备份操作完成后,将集群设置为normal状态正常操作;使用集群级恢复操作前,需将8a集群设置为recovery恢复状态,备份操作完成后,将集群设置为normal状态正常操作;
    执行命令: backup level < 0 | 1 >

  2. 库级备份
    将 GBase 8a MPP Cluster 数据库中的某个库中所有表全量/增量备份至指定路径中。
    执行命令:backup database [vc_name].<database_name>level < 0 | 1 >

  3. 表级备份
    将 GBase 8a MPP Cluster 数据库中的某个表全量备份至指定路径中。
    执行命令:backup table [vcname].. level < 0 | 1 >

二、使用备份恢复工具gcrcman 实操练习

1、 8a集群环境说明

使用3个节点的8a集群进行实操,3个节点集群安装的兼容模式的集群,非多VC部署。

[gbase@162 ~]$ gcadmin CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: NORMAL =============================================================== | GBASE COORDINATOR CLUSTER INFORMATION | =============================================================== | NodeName | IpAddress | gcware | gcluster | DataState | --------------------------------------------------------------- | coordinator1 | 172.16.9.162 | OPEN | OPEN | 0 | --------------------------------------------------------------- | coordinator2 | 172.16.9.163 | OPEN | OPEN | 0 | --------------------------------------------------------------- | coordinator3 | 172.16.9.164 | OPEN | OPEN | 0 | --------------------------------------------------------------- ========================================================================================================= | GBASE DATA CLUSTER INFORMATION | ========================================================================================================= | NodeName | IpAddress | DistributionId | gnode | syncserver | DataState | --------------------------------------------------------------------------------------------------------- | node1 | 172.16.9.162 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node2 | 172.16.9.163 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node3 | 172.16.9.164 | 1 | OPEN | OPEN | 0 | ---------------------------------------------------------------------------------------------------------

3个节点都安装 pexpect 依赖包

[root@162 yum.repos.d]# yum install pexpect
[root@163 yum.repos.d]# yum install pexpect
[root@164 yum.repos.d]# yum install pexpect

查看gcrcman的版本9.5.2.39

[gbase@162 ~]$ gcrcman.py -V
gcrcman 9.5.2.39.124109

2、 进行集群级备份恢复操作

集群级备份是对所有的节点所有对象进行备份。目前版本不能指定某个VC做备份恢复。

  1. 集群级备份前,新建集群级备份目录
    在3个节点上创建集群级备份目录 /home/gbase/backup,gbase用户具有读写权限

[gbase@162 ~]$ mkdir -p /home/gbase/backup
[gbase@163 ~]$ mkdir -p /home/gbase/backup
[gbase@164 ~]$ mkdir -p /home/gbase/backup

  1. 集群级备份前,数据库切换成只读状态。

备份前需要将集群切换成只读状态,只需在任一个管理节点执行即可。

  • 兼容模式(单VC)部署,设置只读状态命令:
    $ gcadmin switchmode readonly

  • 多VC部署,要求把每个VC设置成recovery状态。例如:有两个VC1和VC2,分别设置只读状态。
    $ gcadmin switchmode readonly vc vc1
    $ gcadmin switchmode readonly vc vc2

[gbase@162 ~]$ gcadmin switchmode readonly ========== switch cluster mode... switch pre mode: [NORMAL] switch mode to [READONLY] switch after mode: [READONLY]

查看集群状态是readonly模式

[gbase@162 ~]$ gcadmin CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: READONLY ...
  1. 集群级进行全量备份:
    第一次备份必须是全量备份(backup level 0) ,有了全备之后,才可以执行增量备份,增量备份要在全量备份的基础上进行。
    gcrcman.py参数说明: -d 备份目录 -P linux账户gbase密码 -p 数据库gbase用户密码
[gbase@162 ~]$ gcrcman.py -d /home/gbase/backup/ -P gbase8a -p gbase20110531 gcrcman>backup level 0 09.01 02:16:16 BackUp start -------------------------------------------- 09.01 02:16:16 node (172.16.9.162) backup begin 09.01 02:16:16 node (172.16.9.163) backup begin 09.01 02:16:16 node (172.16.9.164) backup begin 09.01 02:16:49 node (172.16.9.162) backup success 09.01 02:16:49 node (172.16.9.163) backup success 09.01 02:16:49 node (172.16.9.164) backup success -------------------------------------------- 09.01 02:16:50 BackUp end gcrcman>show backup cycle point level time 0 0 0 2022-09-01 02:16:16 gcrcman>quit

第一次全备生成0备份周期 0 备份点

  1. 将8a集群设置为normal
[gbase@162 ~]$ gcadmin switchmode normal ========== switch cluster mode... switch pre mode: [READONLY] switch mode to [NORMAL] switch after mode: [NORMAL]
  1. 对8a集群数据库做一些SQL操作
[gbase@162 ~]$ gccli -uroot -p -- 新建一个t1表,插入6条数据。 gbase> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | performance_schema | | gbase | | gctmpdb | | gclusterdb | | test | +--------------------+ 6 rows in set (Elapsed: 00:00:00.00) gbase> use test; Query OK, 0 rows affected (Elapsed: 00:00:00.00) gbase> create table t1(i int ,j varchar(20)); Query OK, 0 rows affected (Elapsed: 00:00:00.17) gbase> insert into t1 values(1,'a'),(2,'b'),(3,'c'); Query OK, 3 rows affected (Elapsed: 00:00:00.11) Records: 3 Duplicates: 0 Warnings: 0 gbase> insert into t1 select * from t1; Query OK, 3 rows affected (Elapsed: 00:00:00.21) Records: 3 Duplicates: 0 Warnings: 0 gbase> select count(*) from t1; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (Elapsed: 00:00:00.04) gbase> exit Bye
  1. 执行一次增量备份操作
    将集群设置为只读模式
    用命令行方式执行增量备份命令(使用-e “backup level 1”参数执行)
[gbase@162 ~]$ gcadmin switchmode readonly ========== switch cluster mode... switch pre mode: [NORMAL] switch mode to [READONLY] switch after mode: [READONLY] [gbase@162 ~]$ gcrcman.py -d /home/gbase/backup/ -e "backup level 1" -P gbase8a -p gbase20110531 09.01 02:30:57 check cluster topology begin 09.01 02:30:57 node (172.16.9.162) check topology begin 09.01 02:31:01 node (172.16.9.162) check topology success 09.01 02:31:01 check cluster topology end 09.01 02:31:01 BackUp start -------------------------------------------- 09.01 02:31:01 node (172.16.9.162) backup begin 09.01 02:31:01 node (172.16.9.163) backup begin 09.01 02:31:01 node (172.16.9.164) backup begin 09.01 02:31:38 node (172.16.9.162) backup success 09.01 02:31:38 node (172.16.9.163) backup success 09.01 02:31:38 node (172.16.9.164) backup success -------------------------------------------- 09.01 02:31:38 BackUp end
  1. 模拟误删除t1数据
    将8a集群设置为normal,然后删除t1表所有数据
[gbase@162 ~]$ gcadmin switchmode normal ========== switch cluster mode... switch pre mode: [READONLY] switch mode to [NORMAL] switch after mode: [NORMAL] [gbase@162 ~]$ gccli -uroot -p Enter password: GBase client 9.5.2.39.126761. Copyright (c) 2004-2022, GBase. All Rights Reserved. gbase> use test; Query OK, 0 rows affected (Elapsed: 00:00:00.00) gbase> show tables; +----------------+ | Tables_in_test | +----------------+ | t | | t1 | +----------------+ 2 rows in set (Elapsed: 00:00:00.00) gbase> select count(*) from t1; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (Elapsed: 00:00:00.05) gbase> delete from t1; Query OK, 6 rows affected (Elapsed: 00:00:00.12) gbase> select count(*) from t1; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (Elapsed: 00:00:00.03) gbase> exit Bye
  1. 执行恢复前将8a集群切换到recovery状态**
    数据库执行恢复命令前需将集群切换到recovery状态
  • 兼容模式(单VC)部署
    $ gcadmin switchmode recovery

  • 多VC部署,要求把每个VC设置成recovery状态。例如:有两个VC1和VC2,分别设置状态。
    $ gcadmin switchmode recovery vc vc1
    $ gcadmin switchmode recovery vc vc2

备注: 将全部数据恢复到备份的时间点,可能会丢失备份后操作的数据,正式环境谨慎操作!!

[gbase@162 ~]$ gcadmin switchmode recovery ========== switch cluster mode... switch pre mode: [NORMAL] switch mode to [RECOVERY] switch after mode: [RECOVERY] -- 查看8a集群状态 [gbase@162 ~]$ gcadmin CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: RECOVERY ...
  1. 执行集群级恢复命令
[gbase@162 ~]$ gcrcman.py -d /home/gbase/backup/ -P gbase8a -p gbase20110531 -- 查看备份记录,2个备份,一个全备,一个增备 gcrcman>show backup cycle point level time 0 0 0 2022-09-01 02:16:16 0 1 1 2022-09-01 02:31:01 gcrcman>recover 0 1 09.01 18:06:12 check cluster topology begin 09.01 18:06:12 node (172.16.9.162) check topology begin 09.01 18:06:16 node (172.16.9.162) check topology success 09.01 18:06:16 check cluster topology end 09.01 18:06:16 check BackUp start -------------------------------------------- 09.01 18:06:16 node (172.16.9.162) check backup begin 09.01 18:06:16 node (172.16.9.163) check backup begin 09.01 18:06:16 node (172.16.9.164) check backup begin 09.01 18:06:38 node (172.16.9.162) check backup success 09.01 18:06:38 node (172.16.9.163) check backup success 09.01 18:06:38 node (172.16.9.164) check backup success -------------------------------------------- 09.01 18:06:38 check BackUp success 09.01 18:06:38 Recover start -------------------------------------------- 09.01 18:06:39 node (172.16.9.162) Recover begin 09.01 18:06:39 node (172.16.9.163) Recover begin 09.01 18:06:39 node (172.16.9.164) Recover begin 09.01 18:07:19 node (172.16.9.162) Recover success 09.01 18:07:19 node (172.16.9.163) Recover success 09.01 18:07:19 node (172.16.9.164) Recover success -------------------------------------------- 09.01 18:07:20 Recover success gcrcman>quit [gbase@162 ~]$
  1. 8a集群切换为normal状态
    恢复操作完成后,将8a集群切换到normal状态
[gbase@162 ~]$ gcadmin switchmode normal ========== switch cluster mode... switch pre mode: [RECOVERY] switch mode to [NORMAL] switch after mode: [NORMAL]

然后查看test.t1表,发现t1表数据恢复了。

[gbase@162 ~]$ gccli -uroot -p -D test Enter password: GBase client 9.5.2.39.126761. Copyright (c) 2004-2022, GBase. All Rights Reserved. gbase> select * from t1; +------+------+ | i | j | +------+------+ | 1 | a | | 2 | b | | 3 | c | | 1 | a | | 2 | b | | 3 | c | +------+------+ 6 rows in set (Elapsed: 00:00:00.07)

以上是完整的8a集群级备份恢复实操过程。

3、 进行库级备份恢复操作

集群级备份是对8a集群整体做备份,不能指定某个VC做备份恢复,备份时需要将8a集群设置为只读状态,如果数据量巨大,则备份时间很长,会影响数据库其他操作。对于大数据量的8a集群,为了减少备份时长对整个系统的影响,也为了减少备份空间,有些用户会选择只备份一个数据库或个别重要的表进行备份,而非所有数据全部备份。

下面以单库备份恢复为例,说明整个库级备份恢复操作过程。
库级备份目录要跟集群级备份目录不同,各节点重新创建库级备份目录,库级备份不要求集群状态必须为readonly只读状态。

库级恢复前要求恢复库名不存在才能执行恢复操作,恢复后不能直接查询库中的表数据,可重启8a服务或者refresh刷新库中的表才能查询表数据。

  1. 数据库级备份前,在集群节点上创建新的表备份目录
[gbase@162 ~]$ mkdir /home/gbase/db-back [gbase@163 ~]$ mkdir /home/gbase/db-back [gbase@164 ~]$ mkdir /home/gbase/db-back
  1. 查询数据库信息
[gbase@162 ~]$ gccli -uroot -p Enter password: gbase> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | performance_schema | | gbase | | gctmpdb | | gclusterdb | | test | +--------------------+ 6 rows in set (Elapsed: 00:00:00.00) gbase> exit Bye [gbase@162 ~]$
  1. 对test数据库做全量备份
[gbase@162 ~]$ gcrcman.py -d /home/gbase/db-back -P gbase8a -p gbase20110531 gcrcman>backup database test level 0 09.01 23:33:38 BackUp database test start -------------------------------------------- 09.01 23:33:39 node (172.16.9.162) backup database begin 09.01 23:33:39 node (172.16.9.163) backup database begin 09.01 23:33:39 node (172.16.9.164) backup database begin 09.01 23:34:10 node (172.16.9.162) backup database success 09.01 23:34:10 node (172.16.9.163) backup database success 09.01 23:34:10 node (172.16.9.164) backup database success -------------------------------------------- 09.01 23:34:10 BackUp database test end gcrcman>show backup cycle point level time 0 0 0 2022-09-01 23:33:39 gcrcman>quit [gbase@162 ~]$
  1. 模拟在test1库中新创建表t2
[gbase@162 ~]$ gccli -uroot -p Enter password: gbase> use test; Query OK, 0 rows affected (Elapsed: 00:00:00.00) gbase> create table t2(a int,b varchar(20)); Query OK, 0 rows affected (Elapsed: 00:00:00.15) gbase> insert into t2 select * from t1; Query OK, 6 rows affected (Elapsed: 00:00:00.16) Records: 6 Duplicates: 0 Warnings: 0 gbase> select count(*) from t2; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (Elapsed: 00:00:00.03) gbase> exit Bye
  1. 对test库做增量备份
[gbase@162 ~]$ gcrcman.py -d /home/gbase/db-back -P gbase8a -p gbase20110531 gcrcman>backup database test level 1 09.01 23:43:19 BackUp database test start -------------------------------------------- 09.01 23:43:20 node (172.16.9.162) backup database begin 09.01 23:43:20 node (172.16.9.163) backup database begin 09.01 23:43:20 node (172.16.9.164) backup database begin 09.01 23:43:52 node (172.16.9.162) backup database success 09.01 23:43:52 node (172.16.9.163) backup database success 09.01 23:43:52 node (172.16.9.164) backup database success -------------------------------------------- 09.01 23:43:52 BackUp database test end gcrcman>show backup cycle point level time 0 0 0 2022-09-01 23:33:39 0 1 1 2022-09-01 23:43:19 gcrcman>quit
  1. 执行库恢复
    恢复库不需要将集群设置成recovery状态
    恢复时如果数据库存在,会报错,需要drop删除数据库后才能执行恢复操作,生产系统要慎重操作!!
[gbase@162 ~]$ gcrcman.py -d /home/gbase/db-back -P gbase8a -p gbase20110531 gcrcman>recover database test 0 1 database test exist, please drop database at first gcrcman>quit

查看数据,drop删除数据库test

[gbase@162 ~]$ gccli -uroot -p Enter password: gbase> use test; Query OK, 0 rows affected (Elapsed: 00:00:00.00) gbase> drop database test; Query OK, 3 rows affected (Elapsed: 00:00:00.10) gbase> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | performance_schema | | gbase | | gctmpdb | | gclusterdb | +--------------------+ 5 rows in set (Elapsed: 00:00:00.00) gbase> exit Bye [gbase@162 ~]$
  1. 然后再执行恢复单库操作
[gbase@162 ~]$ gcrcman.py -d /home/gbase/db-back -P gbase8a -p gbase20110531 gcrcman>recover database test 0 1 09.01 23:56:43 check database BackUp start -------------------------------------------- 09.01 23:56:43 node (172.16.9.162) check database backup begin 09.01 23:56:43 node (172.16.9.163) check database backup begin 09.01 23:56:43 node (172.16.9.164) check database backup begin 09.01 23:57:05 node (172.16.9.162) check database backup success 09.01 23:57:05 node (172.16.9.163) check database backup success 09.01 23:57:05 node (172.16.9.164) check database backup success -------------------------------------------- 09.01 23:57:05 check database BackUp success 09.01 23:57:05 recover prepare start -------------------------------------------- 09.01 23:57:05 node (172.16.9.162) recover prepare begin 09.01 23:57:06 node (172.16.9.163) recover prepare begin 09.01 23:57:06 node (172.16.9.164) recover prepare begin 09.01 23:57:14 node (172.16.9.162) recover prepare success 09.01 23:57:14 node (172.16.9.163) recover prepare success 09.01 23:57:14 node (172.16.9.164) recover prepare success -------------------------------------------- 09.01 23:57:14 recover prepare finish 09.01 23:57:14 recreate database test start 09.01 23:57:14 recreate database test end 09.01 23:57:14 recreate tablespace start 09.01 23:57:14 recreate tablespace end 09.01 23:57:14 recreate database test tables start 09.01 23:57:14 node (172.16.9.162) recreate database tables begin 09.01 23:57:19 node (172.16.9.162) recreate database tables success 09.01 23:57:19 recreate database test tables end 09.01 23:57:19 Recover database test start -------------------------------------------- 09.01 23:57:19 node (172.16.9.162) Recover database begin 09.01 23:57:19 node (172.16.9.163) Recover database begin 09.01 23:57:19 node (172.16.9.164) Recover database begin 09.01 23:57:40 node (172.16.9.162) Recover database success 09.01 23:57:40 node (172.16.9.163) Recover database success 09.01 23:57:40 node (172.16.9.164) Recover database success -------------------------------------------- 09.01 23:57:40 Recover database test success, please refresh it! gcrcman>quit [gbase@162 ~]$
  1. 恢复操作完成后,查询库和库里的表
    查询test数据库,发现里面表为空表没数据,可以使用refresh tables; 刷新库里的表。
[gbase@162 ~]$ gccli -uroot -p Enter password: GBase client 9.5.2.39.126761. Copyright (c) 2004-2022, GBase. All Rights Reserved. gbase> use test; Query OK, 0 rows affected (Elapsed: 00:00:00.00) gbase> select * from t1; Empty set (Elapsed: 00:00:00.05) gbase> select * from t2; Empty set (Elapsed: 00:00:00.03) gbase> refresh tables; Query OK, 0 rows affected (Elapsed: 00:00:00.01) gbase> select * from t1; +------+------+ | i | j | +------+------+ | 1 | a | | 2 | b | | 3 | c | | 1 | a | | 2 | b | | 3 | c | +------+------+ 6 rows in set (Elapsed: 00:00:00.04) gbase> select count(*) from t2; +------+------+ | a | b | +------+------+ | 1 | a | | 2 | b | | 3 | c | | 1 | a | | 2 | b | | 3 | c | +------+------+ 6 rows in set (Elapsed: 00:00:00.04) gbase> exit Bye

当然也可以每个节点重启一下8a服务,这样库的表数据也可以被刷新。

[gbase@162 ~]$ gcluster_services all restart [gbase@163 ~]$ gcluster_services all restart [gbase@164 ~]$ gcluster_services all restart

以上就是数据库备份的所有操作。

对于表级的备份恢复操作,跟库级的类似,不再单独说明。

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

评论