构建强大数据生态:利用Minio和Percona Xtrabackup打造高效备份与存储解决方案

2024年 1月 26日 71.7k 0

##

构建强大数据生态:利用Minio和Percona Xtrabackup打造高效备份与存储解决方案

1、Minio与Percona Xtrabackup介绍

1.1、Minio:

Minio 是一款开源的对象存储服务器,它专为云原生应用和分布式存储而设计。Minio 的核心特点包括:

  1. 高性能与可扩展性: Minio 提供了高度可扩展的存储基础设施,适用于大规模数据湖、分布式机器学习等场景。其设计使得可以轻松地水平扩展,以应对不断增长的数据需求。
  2. 兼容性: Minio 兼容 Amazon S3 API,这意味着你可以将现有的 S3 应用迁移到 Minio 上,而无需修改代码。这种兼容性使得 Minio 成为一个强大的云存储替代方案。
  3. 轻量且易于部署: Minio 的设计注重简单性,它是一个轻量级的对象存储服务器,容易部署和管理。这使得用户能够快速搭建起高性能的存储解决方案。
  4. 开源: Minio 是一个开源项目,用户可以自由查看、修改和分享其源代码。这使得 Minio 成为一个灵活、可定制的存储解决方案。
1.2、Percona Xtrabackup:

Percona Xtrabackup 是用于 MySQL 和 MariaDB 数据库的高性能备份工具。以下是 Xtrabackup 的主要特点:

  1. 热备份技术: Xtrabackup 支持热备份,这意味着你可以在不中断数据库服务的情况下进行备份。这对于需要保持业务连续性的应用非常重要。
  2. 全量备份与增量备份: Xtrabackup 能够创建全量备份和增量备份,从而降低备份数据的存储成本。增量备份只包含自上次全量备份以来发生变化的数据。
  3. 备份恢复和点对点复制: Xtrabackup 提供了用于备份恢复和点对点复制的工具和选项,确保数据库的高效备份和可靠恢复。
  4. 适用于大规模环境: Xtrabackup 特别适用于大规模、高负载的 MySQL 和 MariaDB 环境,能够满足这些复杂数据库系统的备份需求。

总体而言,Minio 和 Percona Xtrabackup 分别为对象存储和数据库备份提供了强大的解决方案,它们的特性使得用户能够构建高效、可扩展且可靠的数据生态系统。

2、环境介绍

ip
192.168.5.200 MinIO version RELEASE.2024-01-16T16-07-38Z
192.168.5.130 MySQL 8.0.35 + Percona Xtrabackup 8.0.35

3、环境准备

1.MySQL 8.0.35 与 Percona Xtrabackup的安装非常简单,网上资料也比较多,这里不展开,当然老司机也是可能遇到问题的。

2.MinIO的安装方式有很多,如果只是为了实验,那么选择SNSD 或者docker方式部署就可以,有问题可以找我。这里需要注意的是MySQL与Minio结合不能使用https,但是PG的pgBackRest却需要https。

4、MinIO信息创建

思路:最简单的方法就是创建bucket和AK/SK。然后就可以使用了,当然如果你想要权限控制的更严格,可以创建用户和组,然后选择权限。

5、Percona Xtrabackup备份

5.1、可能遇到的问题
1.libev.so.4 => not found

报错信息如下

xbcloud: error while loading shared libraries: libev.so.4: cannot open shared object file: No such file or directory

解决方法

yum install libev -y

至于如何查看PXB的lib,有兴趣的可以加我.

2.DBD::mysql module

报错信息如下

Failed to connect to MySQL server as DBD::mysql module is not installed at - line 1548.

解决方法

yum install perl-DBD-MySQL

3.resolve host name

error: http request failed: Couldn't resolve host name

备份过程中产生的信息,忽略即可

5.2、备份

endpoint填写IP或者域名都可以,就看hosts文件有没有配置,配置IP最简单

xtrabackup --defaults-file=/mysql/jerry/my.cnf --user=root --password=root --host=192.168.5.130 --backup --stream=xbstream --extra-lsndir=/tmp --target-dir=/tmp |
xbcloud put --storage=s3
--s3-endpoint='http://minio:9000'
--s3-access-key='1epPiNhxftQYk51LKl98'
--s3-secret-key='QeerQRsPg9S8K0ShoNURR1fBPIrPXd7c1OUbiJHk'
--s3-bucket='pxbucket'
--parallel=10
mysql-full_backup

备份成功的日志

...
...
...
2024-01-24T09:57:44.554031+08:00 0 [Note] [MY-011825] [Xtrabackup] Streaming
2024-01-24T09:57:44.554064+08:00 0 [Note] [MY-011825] [Xtrabackup] Done: Streaming file
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/mydb-binlog.000036.00000000000000000001, size: 32
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/mydb-binlog.index.00000000000000000000, size: 93
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_checkpoints.00000000000000000000, size: 199
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/ib_buffer_pool.00000000000000000000, size: 55442
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_binlog_info.00000000000000000000, size: 168
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_binlog_info.00000000000000000001, size: 36
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_logfile.00000000000000000000, size: 2612
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_checkpoints.00000000000000000001, size: 36
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_logfile.00000000000000000001, size: 32
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/ib_buffer_pool.00000000000000000001, size: 28
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/backup-my.cnf.00000000000000000000, size: 507
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/backup-my.cnf.00000000000000000001, size: 27
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_tablespaces.00000000000000000001, size: 36
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_info.00000000000000000000, size: 746
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_info.00000000000000000001, size: 29
240124 09:57:44 xbcloud: [0] successfully uploaded chunk: mysql-full_backup/xtrabackup_tablespaces.00000000000000000000, size: 95
2024-01-24T09:57:45.556805+08:00 0 [Note] [MY-011825] [Xtrabackup] Transaction log of lsn (28532912918) to (28532912918) was copied.
2024-01-24T09:57:45.778427+08:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!
240124 09:57:45 xbcloud: Upload completed.

5.3、检查备份文件

[root@minio store]# tree /store/
/store/
├── minio1
│ └── pxbucket
│ └── mysql-full_backup
│ ├── airportdb
│ │ ├── airline.ibd.00000000000000000000
│ │ │ └── xl.meta
│ │ ├── airline.ibd.00000000000000000001
│ │ │ └── xl.meta
│ │ ├── airplane.ibd.00000000000000000000
│ │ │ ├── 615f1c30-ad16-4798-90c5-bcd19db6767b
│ │ │ │ └── part.1
│ │ │ └── xl.meta
│ │ ├── airplane.ibd.00000000000000000001
│ │ │ └── xl.meta
│ │ ├── airplane_type.ibd.00000000000000000000
│ │ │ ├── b397a5c9-e4ac-4661-9580-69b0e0f2918f
│ │ │ │ └── part.1
│ │ │ └── xl.meta
│ │ ├── airplane_type.ibd.00000000000000000001
│ │ │ └── xl.meta
│ │ ├── airport_geo.ibd.00000000000000000000
│ │ │ ├── d2881b35-54f3-4782-99a8-ab84e0b1aff0
│ │ │ │ └── part.1
│ │ │ └── xl.meta
│ │ ├── airport_geo.ibd.00000000000000000001
│ │ │ └── xl.meta
│ │ ├── airport.ibd.00000000000000000000
│ │ │ ├── a89bedb0-d43f-44bb-bb6f-ef0919baf21a
│ │ │ │ └── part.1
│ │ │ └── xl.meta

6、物理备份和逻辑备份到S3对象存储

Percona Xtrabackup是物理备份,我们也可以使用逻辑备份工具备份数据到S3。当然会有坑,如何使用逻辑备份工具备份数据库到S3对象存储,以后有时间再展开。

7、总结

这个方案结合了Minio和Percona Xtrabackup,为构建高效、可扩展、可靠的数据生态系统提供了综合解决方案。Minio作为对象存储服务器,提供了高性能、可扩展的存储基础设施,兼容Amazon S3 API,适用于大规模数据湖、分布式机器学习等场景。Percona Xtrabackup则专注于MySQL和MariaDB数据库备份,支持热备份技术、全量备份和增量备份,适用于大规模、高负载的数据库环境。

通过结合Minio和Percona Xtrabackup,用户可以实现以下优势:

  1. 高度可扩展的存储: 利用Minio构建可扩展的对象存储,适应不断增长的数据需求,提供高性能的存储基础。
  2. 兼容性和灵活性: Minio的兼容性使得现有的S3应用能够轻松迁移到Minio,而Minio的轻量且易于部署的特性增加了整体系统的灵活性。
  3. 热备份与高效恢复: 使用Percona Xtrabackup进行MySQL和MariaDB的备份,支持热备份技术,保障了数据库备份的高效性,同时提供了快速的备份恢复选项。
  4. 全量与增量备份的灵活管理: Xtrabackup的支持全量备份和增量备份降低了备份数据的存储成本,同时提供了灵活的备份管理工具。

综合而言,这个方案为构建可靠的数据生态系统提供了完整的基础设施,同时兼顾了对象存储和数据库备份的需求,使得系统在高性能、可扩展性和数据安全性方面都得到了优化。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论