OceanBase 数据库的物理备份分为数据备份和日志归档。
在进行物理备份操作时,需要先开启日志归档模式后,然后才能执行数据备份。
跟之前的 OceanBase 数据库 V2.x/V3.x 版本相比,OceanBase 数据库 V4.x 版本最大的改变是将物理备份的配置和调度从以前的集群级别下拆到了租户级别,对应的,相关的 SQL 语句和查询视图也有了较大的调整。
本文总结了 OceanBase 数据库 V4.x 中常用的备份恢复相关的 SQL 语句。
OceanBase 数据库 V4.x 版本
连接到 root@sys 租户,执行以下命令。
MySQL [oceanbase]> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1006/clog BINDING=Optional PIECE_SWITCH_INTERVAL=1d' TENANT=obmysql;
连接到普通业务租户的管理员用户,执行以下命令。
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1006/clog BINDING=Optional PIECE_SWITCH_INTERVAL=1d';
连接到 root@sys 租户查看日志备份的路径,执行以下命令。
- MySQL [oceanbase]> select * from cdb_ob_archive_dest;
- +-----------+---------+-----------------------+--------------------------------------------------------------------+
- | TENANT_ID | DEST_NO | NAME | VALUE |
- +-----------+---------+-----------------------+--------------------------------------------------------------------+
- | 1002 | 0 | binding | OPTIONAL |
- | 1002 | 0 | dest_id | 1002 |
- | 1002 | 0 | path | file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1002/clog |
- | 1002 | 0 | piece_switch_interval | 1d |
- | 1002 | 0 | state | ENABLE |
- +-----------+---------+-----------------------+--------------------------------------------------------------------+
- 5 rows in set (0.049 sec)
连接普通业务租户查看日志备份的路径,执行以下命令。
- obclient> select * from dba_ob_archive_dest;
- +---------+-----------------------+--------------------------------------------------------------------+
- | DEST_NO | NAME | VALUE |
- +---------+-----------------------+--------------------------------------------------------------------+
- | 0 | binding | OPTIONAL |
- | 0 | dest_id | 1002 |
- | 0 | path | file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1002/clog |
- | 0 | piece_switch_interval | 1d |
- | 0 | state | ENABLE |
- +---------+-----------------------+--------------------------------------------------------------------+
- 5 rows in set (0.042 sec)
使用 root 用户登录 sys 租户,执行以下命令。
MySQL [oceanbase]> ALTER SYSTEM ARCHIVELOG;
或者:
MySQL [oceanbase]> ALTER SYSTEM ARCHIVELOG TENANT=ALL;
或者:
MySQL [oceanbase]> ALTER SYSTEM ARCHIVELOG TENANT = mysql_tenant;
使用 root 用户登录 MySQL 模式租户,执行以下命令。
MySQL [(none)]> ALTER SYSTEM ARCHIVELOG;
使用 SYS 用户登录 Oracle 模式租户,执行以下命令。
obclient [SYS]> ALTER SYSTEM ARCHIVELOG;
使用 root 用户登录 sys 租户,执行以下命令。
MySQL [oceanbase]> select * from cdb_ob_archivelog\G
使用 root 用户登录 MySQL 模式租户,执行以下命令。
MySQL [oceanbase]> select * from dba_ob_archivelog\G
使用 SYS 用户登录 Oracle 模式租户,执行以下命令。
obclient [SYS]> select * from dba_ob_archivelog\G
使用 root 用户登录 sys 租户,执行以下命令。
MySQL [oceanbase]> select * from cdb_ob_archivelog_summary\G
使用 root 用户登录 MySQL 模式租户,执行以下命令。
MySQL [oceanbase]> select * from dba_ob_archivelog_summary;
使用 SYS 用户登录 Oracle 模式租户,执行以下命令。
obclient [SYS]> select * from dba_ob_archivelog_summary;
连接到 root@sys 租户,执行以下命令。
MySQL [oceanbase]> select * from cdb_ob_archivelog_piece_files; -- 查看集群中所有租户的所有 Piece 信息
连接到普通业务租户的管理员用户,执行以下命令。
obclient> select * from dba_ob_archivelog_piece_files; -- 查看本租户的所有 Piece 信息
使用 root 用户登录 sys 租户,执行以下命令。
MySQL [oceanbase]> ALTER SYSTEM NOARCHIVELOG;
或者:
MySQL [oceanbase]> ALTER SYSTEM NOARCHIVELOG TENANT=ALL;
或者:
MySQL [oceanbase]> ALTER SYSTEM NOARCHIVELOG TENANT = mysql_tenant;
使用 root 用户登录 MySQL 模式租户,执行以下命令。
MySQL [(none)]> ALTER SYSTEM NOARCHIVELOG;
使用 SYS 用户登录 Oracle 模式租户,执行以下命令。
obclient [SYS]> ALTER SYSTEM NOARCHIVELOG;
系统租户为指定租户配置备份目的端。
ALTER SYSTEM SET DATA_BACKUP_DEST = 'file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1006/data' TENANT = mysql_tenant;
用户租户配置本租户的备份目的端。
ALTER SYSTEM SET DATA_BACKUP_DEST = 'file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1006/data';
连接 root@sys 租户查看数据备份的参数。
- MySQL [oceanbase]> select * from cdb_ob_backup_parameter;
- +-----------+------------------+--------------------------------------------------------------------+
- | TENANT_ID | NAME | VALUE |
- +-----------+------------------+--------------------------------------------------------------------+
- | 1002 | data_backup_dest | file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1002/data |
- +-----------+------------------+--------------------------------------------------------------------+
- 1 row in set (0.054 sec)
连接普通业务租户查看数据备份的参数。
- obclient> select * from dba_ob_backup_parameter;
- +------------------+--------------------------------------------------------------------+
- | NAME | VALUE |
- +------------------+--------------------------------------------------------------------+
- | data_backup_dest | file:///obbackup/obcluster/1661253029/tenant_incarnation_1/1002/data |
- +------------------+--------------------------------------------------------------------+
- 1 row in set (0.015 sec)
连接到 root@sys 租户,执行以下命令。
- obclient [(none)]> ALTER SYSTEM BACKUP DATABASE; -- 对集群中的所有租户发起全量数据备份
- obclient [(none)]> ALTER SYSTEM BACKUP TENANT = mysql_tenant; -- 仅对指定租户发起全量数据备份,不会影响集群中的其他租户
连接到普通业务租户的管理员用户,执行以下命令。
obclient> ALTER SYSTEM BACKUP DATABASE; -- 对本租户发起全量数据备份
连接到 root@sys 租户,执行以下命令。
- obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL DATABASE; -- 对集群中的所有租户发起增量数据备份
- obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL TENANT = mysql_tenant; -- 仅对指定租户发起增量数据备份,不会影响集群中的其他租户
连接到普通业务租户的管理员用户,执行以下命令。
obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL DATABASE; -- 对本租户发起增量数据备份
连接到 root@sys 租户,执行以下命令。
- MySQL [oceanbase]> select * from cdb_ob_backup_jobs; -- 展示集群下所有租户的正在进行中的备份JOB 任务。用户发起一次备份任务,记录一条 JOB 任务记录。
- MySQL [oceanbase]> select * from cdb_ob_backup_tasks; -- 展示集群下所有租户的正在进行中的 TASK 级备份任务。一条 TASK 记录对应一个 backup_set 备份。TASK 任务记录和 JOB 任务记录为一一对应关系。
连接到普通业务租户的管理员用户,执行以下命令。
- obclient> select * from dba_ob_backup_jobs;
- obclient> select * from dba_ob_backup_tasks;
连接到 root@sys 租户,执行以下命令。
- MySQL [oceanbase]> select * from cdb_ob_backup_job_history; -- 展示集群下所有租户的历史备份JOB 任务。用户发起一次备份任务,记录一条 JOB 任务记录。
- MySQL [oceanbase]> select * from cdb_ob_backup_task_history; -- 展示集群下所有租户的历史 TASK 级备份任务。一条 TASK 记录对应一个 backup_set 备份。TASK 任务记录和 JOB 任务记录为一一对应关系。
连接到普通业务租户的管理员用户,执行以下命令。
- obclient> select * from dba_ob_backup_job_history;
- obclient> select * from dba_ob_backup_task_history;
连接到 root@sys 租户,执行以下命令。
MySQL [oceanbase]> select * from cdb_ob_backup_set_files;
连接到普通业务租户的管理员用户,执行以下命令。
obclient> select * from dba_ob_backup_set_files;
连接到 root@sys 租户,执行以下命令。
- obclient [(none)]> ALTER SYSTEM CANCEL BACKUP; -- 停止集群中所有租户的数据备份任务
- obclient [(none)]> ALTER SYSTEM BACKUP TENANT = mysql_tenant; -- 仅停止指定租户正在执行的数据备份任务,不会影响集群中的其他租户
连接到普通业务租户的管理员用户,执行以下命令。
obclient [(none)]> ALTER SYSTEM CANCEL BACKUP; -- 停止本租户正在执行的数据备份任务
归档目的端变更成功后,需要重新开启归档模式。
备份目的端变更成功后,需要重新发起全量数据备份。