【OceanBase】V3.1.5 物理备份恢复命令汇总

集群信息

查看OceanBase版本号

SELECT VERSION()

如下版本
在这里插入图片描述

查看集群信息

select * from v$ob_cluster\G

在这里插入图片描述

查看集群节点

select * from __all_server;
字段名称字段含义
svr_ip节点IP
svr_port节点的RPC端口
zone节点所在的Zone
inner_port节点的 SQL 端口,可以使用该端口通过直连方式连接 OceanBase 数据库。
with_rootserver该节点是否为集群 RS(RootServer),RS 负责处理集群管理操作。
statusACTIVE: 表示该节点为可用状态。
INACTIVE: 表示该节点为宕机状态.
DELETING: 表示该节点正在被删除
build_versionOceanBase 数据库软件的版本号。

备份目录结构

obcluster
└── 1712641788
    └── incarnation_1
        ├── 1
        │   └── clog
        │       ├── 3
        │       │   └── single_piece_info_@versionset@
        │       │       └── @version@_4
        │       └── 4
        │           └── single_piece_info_@versionset@
        │               └── @version@_4
        ├── 1001
        │   ├── clog
        │   │   ├── 3
        │   │   │   ├── archive_key
        │   │   │   │   ├── 1100611139403779_0
        │   │   │   │   ├── 1100611139403780_0
        │   │   │   │   ├── 1100611139403781_0
        │   │   │   │   └── 1100611139453777_0
        │   │   │   ├── data
        │   │   │   │   ├── 1100611139403779
        │   │   │   │   │   └── 0
        │   │   │   │   │       └── 1
        │   │   │   │   ├── 1100611139403780
        │   │   │   │   │   └── 0
        │   │   │   │   │       └── 1
        │   │   │   │   ├── 1100611139403781
        │   │   │   │   │   └── 0
        │   │   │   │   │       └── 1
        │   │   │   ├── index
        │   │   │   │   ├── 1100611139403779
        │   │   │   │   │   └── 0
        │   │   │   │   ├── 1100611139403780
        │   │   │   │   │   └── 0
        │   │   │   │   ├── 1100611139403781
        │   │   │   │   │   └── 0
        │   │   │   └── single_piece_info_@versionset@
        │   │   │       └── @version@_4
        │   │   ├── 4
        │   │   │   ├── archive_key
        │   │   │   │   ├── 1100611139403779_0
        │   │   │   │   ├── 1100611139403780_0
        │   │   │   │   ├── 1100611139403781_0
        │   │   │   ├── data
        │   │   │   │   ├── 1100611139403779
        │   │   │   │   │   └── 0
        │   │   │   │   │       └── 1
        │   │   │   │   ├── 1100611139403780
        │   │   │   │   │   └── 0
        │   │   │   │   │       └── 1
        │   │   │   │   ├── 1100611139403781
        │   │   │   │   │   └── 0
        │   │   │   │   │       └── 1
        │   │   │   ├── index
        │   │   │   │   ├── 1100611139403779
        │   │   │   │   │   └── 0
        │   │   │   │   ├── 1100611139403780
        │   │   │   │   │   └── 0
        │   │   │   │   ├── 1100611139403781
        │   │   │   │   │   └── 0
        │   │   │   └── single_piece_info_@versionset@
        │   │   │       └── @version@_4
        │   │   ├── backup_piece_info_@versionset@
        │   │   │   └── @version@_4
        │   │   └── tenant_clog_backup_info_@versionset@
        │   │       └── @version@_4
        │   └── data
        │       ├── backup_set_3_full_20240410
        │       │   ├── backup_3
        │       │   │   ├── meta_file_200
        │       │   │   ├── meta_index_file
        │       │   │   ├── meta_index_file_200
        │       │   │   ├── normal_pg_list
        │       │   │   ├── sys_pg_list
        │       │   │   ├── tenant_diagnose_info
        │       │   │   └── tenant_locality_info
        │       │   ├── backup_set_info_@versionset@
        │       │   │   └── @version@_4
        │       │   ├── data
        │       │   │   ├── 1100611139403779
        │       │   │   │   └── 0
        │       │   │   │       ├── major_data
        │       │   │   │       │   └── macro_block_index_3
        │       │   │   │       └── minor_data
        │       │   │   │           └── 200
        │       │   │   │               └── macro_block_index_3
        │       │   │   ├── 1100611139403780
        │       │   │   │   └── 0
        │       │   │   │       ├── major_data
        │       │   │   │       │   ├── macro_block_3.0
        │       │   │   │       │   └── macro_block_index_3
        │       │   │   │       └── minor_data
        │       │   │   │           └── 200
        │       │   │   │               └── macro_block_index_3
        │       │   └── single_backup_set_info_@versionset@
        │       │       └── @version@_4
        │       ├── backup_set_4_inc_20240410
        │       │   ├── backup_4
        │       │   │   ├── meta_file_300
        │       │   │   ├── meta_index_file
        │       │   │   ├── meta_index_file_300
        │       │   │   ├── normal_pg_list
        │       │   │   ├── sys_pg_list
        │       │   │   ├── tenant_diagnose_info
        │       │   │   └── tenant_locality_info
        │       │   ├── backup_set_info_@versionset@
        │       │   │   └── @version@_4
        │       │   ├── data
        │       │   │   ├── 1100611139403779
        │       │   │   │   └── 0
        │       │   │   │       ├── major_data
        │       │   │   │       │   └── macro_block_index_4
        │       │   │   │       └── minor_data
        │       │   │   │           └── 300
        │       │   │   │               └── macro_block_index_4
        │       │   │   ├── 1100611139403780
        │       │   │   │   └── 0
        │       │   │   │       ├── major_data
        │       │   │   │       │   └── macro_block_index_4
        │       │   │   │       └── minor_data
        │       │   │   │           └── 300
        │       │   │   │               └── macro_block_index_4
        │       │   │   ├── 1100611139403781
        │       │   │   │   └── 0
        │       │   │   │       ├── major_data
        │       │   │   │       │   └── macro_block_index_4
        │       │   │   │       └── minor_data
        │       │   │   │           └── 300
        │       │   │   │               └── macro_block_index_4
        │       │   └── single_backup_set_info_@versionset@
        │       │       └── @version@_4
        │       ├── tenant_backup_set_file_info_@versionset@
        │       │   └── @version@_4
        │       └── tenant_data_backup_info_@versionset@
        │           └── @version@_4
        ├── clog_info
        │   └── 1_192.168.xx.xx_2882
        ├── cluster_backup_piece_info_@versionset@
        │   └── @version@_4
        ├── cluster_backup_set_file_info_@versionset@
        │   └── @version@_4
        ├── cluster_clog_backup_info_@versionset@
        │   └── @version@_4
        ├── cluster_data_backup_info_@versionset@
        │   └── @version@_4
        ├── tenant_info_@versionset@
        │   └── @version@_4
        └── tenant_name_info_@versionset@
            └── @version@_4

备份前准备

挂载NFS

mount -tnfs4 -o rw,timeo=30,wsize=1048576,rsize=1048576,namlen=512,sync,lookupcache=positive xxx.xxx.xxx.xxx:/mnt/nfs_ob3 /mnt/nfs_ob3

配置备份目的端

ALTER SYSTEM SET backup_dest='file:///mnt/nfs_ob3';

查看备份目的端

SHOW PARAMETERS LIKE 'backup_dest'\G

日志备份

启动日志归档

ALTER SYSTEM ARCHIVELOG;

停止日志归档

ALTER SYSTEM NOARCHIVELOG;

查看日志归档状态

SELECT * FROM CDB_OB_BACKUP_ARCHIVELOG;

CDB_OB_BACKUP_ARCHIVELOG视图字段说明

字段名称字段含义
LOG_ARCHIVE_ROUND日志轮转ID,每次发起一次日志归档,值+1
STATUS日志归档状态,DOING, STOPPING,当STATUS为DOING时,则表示日志备份任务已经开始。

查看备份集中Piece的状态

SELECT * FROM CDB_OB_BACKUP_PIECE_FILES;

查看归档历史

SELECT * FROM CDB_OB_BACKUP_ARCHIVELOG_SUMMARY;
字段名称含义
MAX_NEXT_TIME日志归档最大时间

数据备份

数据备份前确保日志归档状态为DOING。

发起转储

第一次全量备份前对集群进行一个合并,等合并完成后才能做下面的动作,否则会出现ERROR 9040(HY000): backup can not start。

-- 发起转储
ALTER SYSTEM MINOR FREEZE;

-- 查看转储进度
SELECT * FROM gv$merge_info;

发起合并

-- 发起合并
ALTER SYSTEM MAJOR FREEZE;

-- 查看合并进度
SELECT * FROM oceanbase.__all_zone WHERE name='merge_status';

发起全量备份(root用户sys租户)

-- 全量备份
ALTER SYSTEM BACKUP DATABASE;

发起增量备份(root用户sys租户)

-- 增量备份
ALTER SYSTEM BACKUP INCREMENTAL DATABASE;

查看备份进度

当查不到结果的时候,就表示备份完成了。

-- 查看备份进度
SELECT * FROM CDB_OB_BACKUP_PROGRESS;

视图字段说明:

字段名称字段含义
BS_KEY备份集ID
BACKUP_TYPE备份类型:D全量、I增量
STATUS备份状态: RUNNING, COMPLETED

查看备份历史

SELECT * FROM oceanbase.CDB_OB_BACKUP_SET_FILES;

或者

SELECT * FROM CDB_OB_BACKUP_SET_DETAILS;
字段名称含义
TENATN_ID备份对应的租户ID,1-系统租户,其他表示业务租户。
BACKUP_TYPE备份类型:D全备, I-增量
ENCRYPTION_MODE备份加密模式,NONE表示没有加密。
START_TIME备份什么时候开始
COMPLETION_TIME备份结束时间
DEVICE_TYPE备份方式,FILE表示使用文件方式。
OUTPUT_BYTES写在外部存储介质上的数据量,单位字节。
OUTPUT_RATE_BYTES每秒上传的数据量,单位字节。
COMPRESSION_RATIO备份出的数据的压缩比率。
OUTPUT_BYTES_DISPLAY对OUTPUT_BYTES可视化,转换了单位,比如3.85MB
OUTPUT_RATE_BYTES_DISPLAY对OUTPUT_RATE_BYTES可视化,转换了单位,比如0.02MB/S
TIME_TAKEN_DISPLAY备份花费了多长时间。

查看备份的恢复窗口

SHOW PARAMETERS LIKE '%recovery_window%';

查看与备份相关的RootService事件

SELECT * 
FROM oceanbase.__all_rootservice_event_history
WHERE module LIKE '%backup%' OR module LIKE '%archive%' 
ORDER BY gtm_create DESC LIMIT 30;

停止数据备份

ALTER SYSTEM CANCEL BACKUP;
ALTER SYSTEM CANCEL ALL BACKUP FORCE;

备份日志分析

针对v3.2.4.4

tail -f /home/admin/oceanbase/log/rootservice.log |grep -v "succ set current backup dest" |grep -v "succeed to get backup log archive backup status"| grep -v "finish do log archive schedule" | grep -v "get backup info" |grep "/mnt/nfs"

备份的日志搜索:
succeed to write_external_single_backup_piece_info:
/obcluster/1712641788/incarnation_1/1001/clog/40/single_piece_info

succeed to write_extern_log_archive_backup_info:
/obcluster/1712641788/incarnation_1/cluster_clog_backup_info

read meta file: 
/obcluster/1712641788/incarnation_1/1002/data/backup_set_34_full_20240508/backup_34/meta_file_3300

succeed to write_extern_tenant_locality_info: 
/obcluster/1712641788/incarnation_1/1002/data/backup_set_34_full_20240508/backup_34/tenant_locality_info

succeed to write_extern_backup_set_info: 
/obcluster/1712641788/incarnation_1/1002/data/backup_set_34_full_20240508/backup_set_info

数据恢复

恢复前一定要停止日志归档,不能让日志再进行归档备份了。

需要提前创建要恢复的租户的资源池。

恢复并行度

查看恢复并行度

show parameters like 'restore_concurrency';

设置恢复并行度,可以提高恢复速度。

alter system set restore_concurrency = 20;

恢复等待时间

默认恢复等待时间 _restore_idle_time 为 1 分钟,生产环境不建议修改,整个恢复期间会有 3 次等待,即 3 分钟的等待时间。对于测试恢复性能的场景,为了减少恢复的空闲时间,可以执行以下语句将等待时间调整为 10s。

alter system set _restore_idle_time = '10s';

发起数据恢复

恢复租户命令的内部流程:

  • 创建恢复用的租户
  • 恢复租户的系统表数据
  • 恢复租户的系统表日志
  • 调整恢复租户的元信息
  • 恢复租户的用户表数据
  • 恢复租户的用户表日志
ALTER SYSTEM RESTORE tenant2 FROM tenant1 at 'file:///data/backup' until '2023-12-23 17:37:38.744639' with  'backup_cluster_name=ob3cluster&backup_cluster_id=1&pool_list=resource_pool2';

恢复命令中的参数含义

参数名称含义
backup_cluster_name备份集群的名称
backup_cluster_id备份集群的id
pool_list恢复的资源池

恢复命令中util的时间如何找:

SELECT * FROM oceanbase.CDB_OB_BACKUP_SET_DETAILS;
SELECT * FROM oceanbase.CDB_OB_BACKUP_ARCHIVELOG_SUMMARY;

需要满足:
CDB_OB_BACKUP_SET_DETAILS:START_TIME < until <= CDB_OB_BACKUP_ARCHIVELOG_SUMMARY:MAX_NEXT_TIME

查看恢复进度

方式一

-- 正在恢复
SELECT * FROM __all_restore_info;
SELECT * FROM oceanbase.CDB_OB_RESTORE_PROGRESS;

方式二

SELECT svr_ip, role, is_restore, COUNT(*) FROM __all_root_table AS a, (SELECT value FROM __all_restore_info WHERE name='tenant_id') AS b WHERE a.tenant_id = b.value GROUP BY role, is_restore, svr_ip ORDER BY svr_ip, is_restore;

is_restore的取值含义如下:

  • 0: 表示正常副本
  • 1:表示逻辑恢复的副本
  • 2:表示物理恢复需要恢复基线的副本
  • 3:表示物理恢复需要恢复转储的副本
  • 4:物理恢复需要恢复clog的副本
  • 5:物理恢复需要转储的副本
  • 6:物理恢复等待所有副本转储完成的副本
  • 7:物理恢复设置 member list的副本
  • 8:即将结束

role的取值含义:

  • 1: 表示Leader
  • 2: 表示Follower
  • 3: 表示恢复中的Leader

恢复完成后检查

SELECT svr_ip, role, is_restore, count(*) FROM __all_virtual_meta_table AS a, (SELECT value FROM __all_restore_info WHERE name = 'tenant_id') AS b WHERE a.tenant_id = b.value GROUP BY role, is_restore, svr_ip ORDER BY  svr_ip, is_restore;

SELECT svr_ip, is_restore, COUNT(*) FROM __all_virtual_partition_store_info WHERE tenant_id > 1001 GROUP BY svr_ip, is_restore ORDER BY svr_ip, is_restore;

验证恢复

连接恢复出来的租户,查看租户中的数据库、数据库中的表是否存在,如果有的话表示恢复成功。

查看恢复历史

方式一

SELECT * FROM oceanbase.CDB_OB_RESTORE_HISTORY;

方式二

SELECT * FROM __all_restore_history;
字段名称字段含义
restore_start_timestamp恢复开始时间
restore_finish_timestamp恢复结束时间

取消恢复

DROP TENANT tenant_name FORCE;

恢复日志分析

针对v3.2.4.4

tail -f /home/admin/oceanbase/log/rootservice.log | grep -v "succ set current backup dest" |grep -v "finish do log archive schedule" | grep -v "succeed to get backup log archive backup status" | grep "/mnt/nfs"

开始恢复的日志搜索:
start fill backup path
finish fill backup path
finish fill_physical_restore_job
execute write sql
insert job
physical restore tenant start

其他命令

租户

连接租户

obclient -h192.168.xxx.xxx -P2883 -uroot@tenant2#obcluster -pxxxxxx

查看租户

select * from __all_tenant;

删除租户

drop tenant {tenant_name};
drop tenant {tenant_name} force;

资源单元

创建资源单元

CREATE RESOURCE UNIT mysqlt_restore_unit max_cpu 16, max_memory 103079215104, max_iops 10240, max_disk_size 53687091200, max_session_num 64, MIN_CPU=16, MIN_MEMORY=103079215104, MIN_IOPS=10240;

创建的时候不指定max_iops和min_iops,恢复速度可能会快一些。

参数含义
max_iops最大io
min_iops最小io

查看资源单元

SELECT * FROM oceanbase.__all_unit_config;

删除资源单元

DROP RESOURCE UNIT {unit_name};

资源池

创建资源池

CREATE RESOURCE POOL mysqlt_restore_pool unit = '{unit_name}', unit_num = 1, zone_list = ('z1','z2','z3');

查看资源池

SELECT * FROM oceanbase.__all_resource_pool;

删除资源池

DROP RESOURCE POOL {pool_name}; 

参考资料

  • OceanBase v3.1.5 物理备份与恢复概述
    https://www.oceanbase.com/docs/community-observer-cn-10000000001879588

  • 详解OceanBase数据库备份恢复保障数据安全
    https://zhuanlan.zhihu.com/p/498044128

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值