##
构建强大数据生态:利用Minio和Percona Xtrabackup打造高效备份与存储解决方案
1、Minio与Percona Xtrabackup介绍
1.1、Minio:
Minio 是一款开源的对象存储服务器,它专为云原生应用和分布式存储而设计。Minio 的核心特点包括:
- 高性能与可扩展性: Minio 提供了高度可扩展的存储基础设施,适用于大规模数据湖、分布式机器学习等场景。其设计使得可以轻松地水平扩展,以应对不断增长的数据需求。
- 兼容性: Minio 兼容 Amazon S3 API,这意味着你可以将现有的 S3 应用迁移到 Minio 上,而无需修改代码。这种兼容性使得 Minio 成为一个强大的云存储替代方案。
- 轻量且易于部署: Minio 的设计注重简单性,它是一个轻量级的对象存储服务器,容易部署和管理。这使得用户能够快速搭建起高性能的存储解决方案。
- 开源: Minio 是一个开源项目,用户可以自由查看、修改和分享其源代码。这使得 Minio 成为一个灵活、可定制的存储解决方案。
1.2、Percona Xtrabackup:
Percona Xtrabackup 是用于 MySQL 和 MariaDB 数据库的高性能备份工具。以下是 Xtrabackup 的主要特点:
- 热备份技术: Xtrabackup 支持热备份,这意味着你可以在不中断数据库服务的情况下进行备份。这对于需要保持业务连续性的应用非常重要。
- 全量备份与增量备份: Xtrabackup 能够创建全量备份和增量备份,从而降低备份数据的存储成本。增量备份只包含自上次全量备份以来发生变化的数据。
- 备份恢复和点对点复制: Xtrabackup 提供了用于备份恢复和点对点复制的工具和选项,确保数据库的高效备份和可靠恢复。
- 适用于大规模环境: 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,用户可以实现以下优势:
- 高度可扩展的存储: 利用Minio构建可扩展的对象存储,适应不断增长的数据需求,提供高性能的存储基础。
- 兼容性和灵活性: Minio的兼容性使得现有的S3应用能够轻松迁移到Minio,而Minio的轻量且易于部署的特性增加了整体系统的灵活性。
- 热备份与高效恢复: 使用Percona Xtrabackup进行MySQL和MariaDB的备份,支持热备份技术,保障了数据库备份的高效性,同时提供了快速的备份恢复选项。
- 全量与增量备份的灵活管理: Xtrabackup的支持全量备份和增量备份降低了备份数据的存储成本,同时提供了灵活的备份管理工具。
综合而言,这个方案为构建可靠的数据生态系统提供了完整的基础设施,同时兼顾了对象存储和数据库备份的需求,使得系统在高性能、可扩展性和数据安全性方面都得到了优化。