原 GreenPlum通过gpbackup和gprestore在MinIO的S3存储中的异地备份和还原
Tags: 原创GreenPlum备份恢复gpbackupgprestoreS3异地备份MinIO备份还原
简介
在 Greenplum 中,进行数据的异地备份(即将数据备份到不同的地理位置)是确保数据安全和灾难恢复的一种重要策略。
以下是几种实现 Greenplum 异地备份的几种方法:
1、使用pg_dump工具
pg_dump
是 PostgreSQL 和 Greenplum 都支持的备份工具,它可以直接将数据库数据导出到异地备份服务器,可以在其他服务器上恢复。
2、使用gpbackup
工具
Greenplum 提供了 gpbackup
和 gprestore
工具来备份和恢复数据库数据。可以使用这些工具在本地备份数据库数据,然后将这些备份文件复制到远程位置。复制方式包括ftp、sftp、scp、rsync等命令。
3、使用对象存储(如Amazon S3)
S3存储插件应用程序允许在运行gpbackup和gprestore时使用Amazon Simple Storage Service(Amazon S3)位置来存储和检索备份。 Amazon S3提供安全,持久,高度可扩展的对象存储。这种方法不需要手动复制备份文件,并且可以提供更好的冗余和持久性。
☆ 对于GP的 异地备份,推荐方式3!!!
MinIO搭建S3简介
MinIO 的名称来源于 "Minimal Object Storage"(最小化对象存储)的缩写,体现了其设计理念——提供一个简单、高效的对象存储系统。名称中的 "Min" 代表 "Minimal"(最小的),而 "IO" 代表 "Input/Output"(输入/输出)。
MinIO 是一个高性能的对象存储系统,采用 Go 语言编写,设计上与 Amazon S3 兼容,支持 S3 API。MinIO 主要用于存储海量的非结构化数据,比如图片、视频、日志文件和备份等。它可以部署在本地数据中心、公有云或混合云环境中,并且通过 S3 API 实现与现有工具和应用的兼容性。
GitHub:https://github.com/minio/
官方文档:https://min.io/docs/minio/linux/index.html
对于MinIO有如下几点总结:
1、minio服务器版有Linux也有windows版,临时搭建非常方便
2、无论是Linux还是Windows,磁盘都应该先挂载
3、可以使用普罗米修斯prometheus来监控MinIO
4、若是多磁盘模式,则不会用到100%空间。若要使用所有空间,则使用LVM创建卷组,最后用一条路径即可。
5、PG备份恢复工具之pgbackrest也支持S3存储。
接下来,麦老师就给大家简单演示一下,在GreenPlum中,使用gpbackup将数据备份到S3中,然后使用gprestore从S3中进行恢复的过程。
示例
下载需要的镜像:
1 2 3 | docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/greenplum:6.27.0_v2 docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/greenplum:7.3.0 docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/minio:1.0 |
GP6和GP7环境准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | -- GP6 docker rm -f gpdb6 docker run -itd --name gpdb6 -h gpdb6270 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true lhrbest/greenplum:6.27.0_v2 \ /usr/sbin/init docker exec -it gpdb6 bash su - gpadmin gpstart -a gpcc start gpcc status gpstate [gpadmin@gpdb6270 soft]$ psql -c "select version()" version ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 9.4.26 (Greenplum Database 6.27.0 build commit:482d4e839d519dcfde9cddf03807787d9d91d015) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Apr 4 2024 11:00:20 (1 row) -- GP7 docker rm -f gpdb7 docker run -itd --name gpdb7 -h gpdb7 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true lhrbest/greenplum:7.3.0 \ /usr/sbin/init docker exec -it gpdb7 bash su - gpadmin gpstart -a gpcc start gpcc status gpstate [gpadmin@gpdb7 soft]$ psql -c "select version()" version ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 12.12 (Greenplum Database 7.3.0 build commit:ebf6c7db0034f8928f20252a306c4ecdb9324d81) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-22), 64-bit compiled on Aug 1 2024 08:31:42 Bhuvnesh C. (1 row) [gpadmin@gpdb7 soft]$ |
安装gpbackup软件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | -- GPDB 6 [gpadmin@gpdb6270 soft]$ gppkg -i greenplum_backup_restore-1.30.6-gp6-rhel7-x86_64.gppkg 20240830:14:24:03:001173 gppkg:gpdb6270:gpadmin-[INFO]:-Starting gppkg with args: -i greenplum_backup_restore-1.30.6-gp6-rhel7-x86_64.gppkg 20240830:14:24:03:001173 gppkg:gpdb6270:gpadmin-[INFO]:-Installing package greenplum_backup_restore-1.30.6-gp6-rhel7-x86_64.gppkg 20240830:14:24:03:001173 gppkg:gpdb6270:gpadmin-[INFO]:-Validating rpm installation cmdStr='rpm --test -i /usr/local/greenplum-db-6.27.0/.tmp/gpbackup_tools_RHEL7-1.30.6-1.x86_64.rpm --dbpath /usr/local/greenplum-db-6.27.0/share/packages/database --prefix /usr/local/greenplum-db-6.27.0' 20240830:14:24:06:001173 gppkg:gpdb6270:gpadmin-[INFO]:-Installing greenplum_backup_restore-1.30.6-gp6-rhel7-x86_64.gppkg locally 20240830:14:24:07:001173 gppkg:gpdb6270:gpadmin-[INFO]:-Validating rpm installation cmdStr='rpm --test -i /usr/local/greenplum-db-6.27.0/.tmp/gpbackup_tools_RHEL7-1.30.6-1.x86_64.rpm --dbpath /usr/local/greenplum-db-6.27.0/share/packages/database --prefix /usr/local/greenplum-db-6.27.0' 20240830:14:24:07:001173 gppkg:gpdb6270:gpadmin-[INFO]:-greenplum_backup_restore-1.30.6-gp6-rhel7-x86_64.gppkg is already installed. 20240830:14:24:07:001173 gppkg:gpdb6270:gpadmin-[INFO]:-gpbackup 1.30.6 successfully installed 20240830:14:24:07:001173 gppkg:gpdb6270:gpadmin-[INFO]:-greenplum_backup_restore-1.30.6-gp6-rhel7-x86_64.gppkg successfully installed. [gpadmin@gpdb6270 soft]$ -- GPDB 7 [gpadmin@gpdb7 soft]$ gppkg install greenplum_backup_restore-1.30.6-gp7-rhel8-x86_64.gppkg Detecting network topology: [==============================================================] [OK] 2 coordinators and 4 segment instances are detected on 1 unique host. Distributing package: [==============================================================] [OK] Decoding package: [==============================================================] [OK] Verifying package installation:[==============================================================] [OK] Verifying package integrity: [==============================================================] [OK] You are going to install the following packages: Install 'greenplum_backup_restore@1.30.6-gp7' Continue? [y/N] y Allocating disk space: [==============================================================] [OK] Install 'greenplum_backup_rest:[==============================================================] [OK] Result: greenplum_backup_restore has been successfully installed Clean Up: [==============================================================] [OK] [gpadmin@gpdb7 soft]$ |
MinIO的S3环境准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | docker rm -f lhrminio docker run -d --name lhrminio -h lhrminio \ -p 9000:9000 -p 9001:9001 -p 922:22 -p 39389:3389 \ -p 29990:9090 -p 29300:3000 \ -v /sys/fs/cgroup:/sys/fs/cgroup --restart=always \ --privileged=true lhrbest/minio:1.0 \ /usr/sbin/init docker exec -it lhrminio bash -- 用户名和密码:minioadmin/minioadmin -- 9000端口指的是minio的WebUI端口,9001是API的端口 -- 默认buket桶为gpbk -- 默认ak和sk都为:12345678 http://192.16.7.162:9000/login |
该环境自带有MinIO、prometheus、grafana等环境。
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!