简介
之前麦老师给大家分享了一篇文章,可以将GreenPlum备份到S3中,从而实现了异地备份恢复,请参考:GreenPlum通过gpbackup和gprestore在MinIO的S3存储中的异地备份和还原
但,在有的情况下,配置S3可能报错,此时,我们可以考虑将远程机器通过sshfs挂载到所有的GP主机上,从而也可以实现异地备份恢复。
在Greenplum上使用SSHFS进行备份是一种灵活的方案,可将备份数据存储在远程服务器上。以下是详细的实现步骤:
前提条件
已配置SSH访问: Greenplum节点与目标存储服务器之间可以通过SSH无密码访问。
已安装SSHFS:
在Greenplum所有主机节点上安装
sshfs
工具。对于RHEL/CentOS系统:
1sudo yum install epel-release -y
2sudo yum install sshfs -y
对于Debian/Ubuntu系统:
1sudo apt-get update
2sudo apt-get install sshfs -y
备份工具: 使用
gpbackup
备份工具。
步骤一:配置目标存储目录
在远程服务器上创建存储目录并配置访问权限:
登录到目标存储服务器。
创建备份存储目录:
1mkdir -p /bk
2chmod 700 /bk
确保Greenplum用户有权限访问该目录。
步骤二:在Greenplum节点挂载远程目录
选择挂载目录:
在Greenplum主机上,为远程目录选择一个本地挂载点,例如:
1mkdir /bk
2sshfs -o allow_other root@192.168.8.8:/home/bk /bk
挂载远程目录:
使用sshfs
挂载:
1sshfs user@remote_host:/bk /bk
参数说明:
user@remote_host
:远程存储服务器的用户名和IP地址。/bk
:远程目录。/bk
:本地挂载点。
验证挂载成功:
1df -h | grep sshfs
应看到挂载点的信息。
持久化挂载:
编辑/etc/fstab
,添加以下内容:
1user@remote_host:/bk /bk fuse.sshfs defaults,_netdev,allow_other,IdentityFile=/path/to/private_key 0 0
IdentityFile
指定SSH私钥路径。allow_other
允许其他用户访问挂载点。
注意: 如果使用密码认证,需使用sshpass
工具或在启动脚本中动态挂载。
步骤三:配置Greenplum备份
设置备份路径:
在Greenplum数据库中设置备份路径为挂载点,例如:
1export BACKUP_DIR=/bk
执行备份:
1gpbackup --dbname=db1 --backup-dir=/bk/ --jobs=16
2gpbackup --dbname=db2 --backup-dir=/bk/ --jobs=16
3
4gpbackup_manager list-backups
步骤四:验证与卸载
验证备份完整性:
查看备份文件是否生成:
1ls -lh /bk/
卸载挂载点:
如果需要取消挂载:
1fusermount -u /bk
可能问题及解决方法
挂载失败:
确保
sshfs
和ssh
配置正确。检查
/var/log/messages
或dmesg
查看错误日志。
性能问题:
优化SSHFS的挂载参数,例如:
1sshfs user@remote_host:/bk /bk -o reconnect,cache=yes,kernel_cache
权限问题:
确保远程存储目录权限正确。
使用
allow_other
挂载选项。
总结
目前将GP备份到远程的办法包括:
1、通过gpbackup直接备份到S3中
2、通过gpbackup直接备份到sshfs中
3、通过pg_dump导出到异地