当前位置: 首页 > news >正文

如何使用 minio 完成OceanBase社区版的归档和备份

自OceanBase社区版4.2.1BP7版本起,OceanBase的归档与备份功能开始兼容AWS S3及S3协议的对象存储服务,因此,许多用户选择采用 MinIO 作为其备份存储介质。因为 MinIO 兼容AWS S3云存储服务接口,成为了一个轻便的服务选项。

本文将介绍如何部署 minio ,以及如何使用 minio 来做OceanBase的归档和备份。

关于 minio 的介绍,可参考官方文档:minio官方文档

minio 安装部署

minio 的部署有多种方式,本文介绍的是 Single-Node Single-Drive 的部署方式,其他部署方式,可参考官方文档,操作系统是 CentOS 7.9。

首先下载软件,并执行安装:

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20240826153307.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm

创建用户,并授权,这里为了方便测试,直接使用了 root 用户,并且手动创建了一个目录 /obdata/minio 用作存储路径,这步可跳过

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4

创建配置文件,在/etc/default目录下,创建 minio 文件:

$vim /etc/default/minio
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment.MINIO_ROOT_USER="admin"
MINIO_ROOT_PASSWORD="xxxxxx"# MINIO_VOLUMES sets the storage volumes or paths to use for the MinIO server.
# The specified path uses MinIO expansion notation to denote a sequential series of drives between 1 and 4, inclusive.
# All drives or paths included in the expanded drive list must exist *and* be empty or freshly formatted for MinIO to start successfully.MINIO_VOLUMES="/obdata/minio"# MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
# For example, `--console-address :9001` sets the MinIO Console listen port
MINIO_OPTS="--console-address :9002 --address :9001"
  • MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD: 分别代表minio服务的最高权限的账号和密码,可用于后续登陆页面和调用 API ;
  • MINIO_VOLUMES:指定给 minio 服务使用的存储卷或者路径;
  • MINIO_OPTS:启动 minio 的参数。这里修改了页面登录的端口为9002,以及 API 端口为9001。

在使用 rpm 安装之后,默认会创建一个 systemd 文件在 /usr/lib/systemd/system/minio.service,不过这里需要修改一些参数,因为使用root启动minio,所以User和Group都改成了root。

$vim /usr/lib/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio[Service]
Type=notifyWorkingDirectory=/usr/localUser=root
Group=root
# ProtectProc=invisibleEnvironmentFile=-/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES# Let systemd restart this service always
Restart=always# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576# Turn-off memory accounting by systemd, which is buggy.
MemoryAccounting=no# Specifies the maximum number of threads this process can create
TasksMax=infinity# Disable timeout logic and wait until process is stopped
TimeoutSec=0SendSIGKILL=no[Install]
WantedBy=multi-user.target# Built for ${project.name}-${project.version} (${project.name})

启动 minio,并查看状态

# 启动 minio
sudo systemctl start minio.service
# 查看 minio 状态
sudo systemctl status minio.service
# 查看 minio 日志
journalctl -f -u minio.service
# 设置开机自启动
sudo systemctl enable minio.service

至此,minio的部署工作已经完成,接着,需要在页面上登陆 minio,然后创建 Buckets 和 Path,用户后续的归档和备份

创建Buckets

通过IP:Port访问 minio,使用上面 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 指定的账户名和密码,访问 minio 服务,在 Buckets 栏创建新的 Buckets。

1730879019

Buckets 创建完成之后,点击进入 Buckets,再创建 Path,这里分别创建了obtest 和 obtestbak两个Path,分别用户归档和数据库的备份测试。

1730879044

配置完成之后,接着就是进入到OceanBase数据库,开启归档和备份。

设置归档

归档和备份,可以使用sys租户,也可以登录到具体要设置的租户中执行相应的设置,本文都是进入sys租户,为 obtest 租户进行的配置。

首先设置归档并发度(可选)

ALTER SYSTEM SET log_archive_concurrency = 2 TENANT = obtest;

接着设置归档目的端

ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://obbak/obtest?host=11.161.xxx.xxx:9001&access_id=admin&access_key=xxxxxx' TENANT = obtest;

开启归档任务

ALTER SYSTEM ARCHIVELOG TENANT = obtest;

查看归档状态

obclient [oceanbase]> SELECT TENANT_NAME, LOG_MODE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_TYPE = 'USER'\G;
*************************** 1. row ***************************
TENANT_NAME: obtestLOG_MODE: ARCHIVELOG
*************************** 2. row ***************************

可以看到归档已经开启,并且在 minio 对应的路径下,已经创建出了归档的文件

1730879052

设置备份

设置备份目的端

ALTER SYSTEM SET DATA_BACKUP_DEST='s3://obbak/obtestbak?host=11.161.xxx.xxx:9001&access_id=admin&access_key=xxxxxx' TENANT = obtest;

设置租户的备份并发度(可选)

ALTER SYSTEM SET ha_low_thread_score = 2 TENANT = obtest;

发起全量备份

ALTER SYSTEM BACKUP TENANT = obtest;

查看备份结果

obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_BACKUP_JOB_HISTORY order by START_TIMESTAMP desc limit 1\G;
*************************** 1. row ***************************TENANT_ID: 1002JOB_ID: 2915INCARNATION: 1BACKUP_SET_ID: 66
INITIATOR_TENANT_ID: 1INITIATOR_JOB_ID: 66EXECUTOR_TENANT_ID: 1002PLUS_ARCHIVELOG: OFFBACKUP_TYPE: FULLJOB_LEVEL: USER_TENANTENCRYPTION_MODE: NONEPASSWD:START_TIMESTAMP: 2024-09-10 19:51:18.713433END_TIMESTAMP: 2024-09-10 19:54:12.258598STATUS: COMPLETEDRESULT: 0COMMENT:DESCRIPTION:PATH: s3://obbak/obtestbak?host=11.161.xxx.xxx:9001
1 row in set (0.010 sec)

另外,在 minio 对应的目录下,可以看到备份生成的文件

1730879066

以上就是 OceanBase 在推出支持兼容 S3 协议的对象存储之后,用 minio 测试 OceanBase 归档和备份的整个过程,如果要在实际生产中使用,建议 minio 使用分布式模

http://www.dtcms.com/a/294019.html

相关文章:

  • [Bug | Cursor] import error: No module named ‘data‘
  • SpringCloud sentinel服务熔断 服务降级
  • 一个没有手动加分号引发的bug
  • python---元组(Tuple)
  • C#简介(从入门到精通)
  • 判断矩形能否放入多边形内——cad c# 二次开发实现
  • 【服务器】 MCTP Over PCIe 的内容、用途、工作原理及硬件设计注意事项
  • 数据结构(2)顺序表算法题
  • C#使用socket报错 System.Net.Sockets.SocketException:“在其上下文中,该请求的地址无效。
  • .net平台的跨平台桌面应用开发的技术方案总结对比
  • 【黑马SpringCloud微服务开发与实战】(六)分布式事务
  • Matlab学习笔记:逻辑基础
  • PyTorch武侠演义 第一卷:初入江湖 第6章:驿站的秘密信鸽
  • Apache JMeter 使用记录踩坑
  • 前端模块化:CommonJS 与 ES Module
  • 性能测试-jmeter实战5
  • 4️⃣字典(dict)速查表
  • I2C控制器
  • 传统RNN模型笔记:输入数据长度变化的结构解析
  • 通用图片 OCR 到 Word API 数据接口
  • 数据结构自学Day13 -- 快速排序--“前后指针法”
  • 显微科研中的关键选择:不同显微镜相机技术特性与应用适配性全面解析
  • SpringCloudGateWay 使用nacos网关自动负载均衡
  • nrm指南
  • Sklearn 机器学习 线性回归
  • 解决sparksql创建出来的数据库路径错误的问题
  • Docker Desktop 打包Unity WebGL 程序,在Docker 中运行Unity WebGL 程序
  • Unity国际版下载链接分享(非c1国内版)
  • Java面试题035:一文深入了解Docker
  • SQL基础⑧ | 表格篇