异地(异机)备份的实现
文章目录
- 环境
- 文档用途
- 详细信息
环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.5.10
文档用途
有些客户因安全需求,要实现数据备份异地存放。此文档讨论两种实现方式,方案还不成熟,仅供参考,欢迎各位补充斧正。
详细信息
一、异地备份实现方式
目前实现异地备份的方法主要有两种:
1、通过nfs远程目录+备份脚本中的冗余备份实现。
优点:有成熟稳定的脚本提供冗余备份。 不足:需要nfs服务,脚本不能实现冗余归档。
2、通过scp+定时任务拷贝实现。
优点:配置简单。 不足:需要配置ssh互信,如果拷贝期间备份或者归档正在生成,会导致其不可用的情况。
二、通过nfs远程目录+备份脚本中的冗余备份实现
1、目标端配置nfs服务
安装提供nfs服务的软件包 yum install nfs-utils yum install rpcbind 创建共享目录并修改权限 mkdir -p /path/to/shared_directory chmod -R 755 /path/to/shared_directory 编辑nfs配置文件 vi /etc/exports /path/to/shared_directory *(rw,sync,no_root_squash,no_subtree_check) *:可以使用单个 IP 地址(如 192.168.1.100)、网络段(如 192.168.1.0/24)或通配符(如 * 表示所有客户端) rw:表示客户端可以以读写模式访问共享目录。 sync:表示所有文件系统操作都将同步执行,确保数据立即写入磁盘。 no_root_squash:表示远程的 root 用户将具有与本地 root 用户相同的权限。默认情况下,root 用户会被 "squash"(降低权限),通常是变成匿名用户 nfsnobody。 no_subtree_check:表示 NFS 服务器不会检查共享目录的父目录权限,这可以提高性能,但可能降低安全性。 用配置文件的更改 exportfs -a 显示服务器上的 NFS 共享目录 showmount -e <server> 重启服务并设置开启自启 systemctl start nfs-server systemctl enable nfs-server systemctl start rpcbind systemctl enable rpcbind2、源端挂载nfs远程目录
安装提供nfs服务的软件包 yum install nfs-utils 创建挂载点目录 mkdir -p /local/mount/point 设置nfs文件共享 mount -t nfs -o rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,proto=tcp,nolock 目标端IP:/path/to/shared_directory/ /local/mount/point 永久挂载 vi /etc/fstab 目标端IP:/path/to/shared_directory/ /local/mount/point nfs rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,proto=tcp,nolock 0 0 挂载生效并验证 mount -a df -h3、修改备份脚本中冗余备份部分
[root@logical01 ~]# vi /root/hgdb_backup.sh ...... #冗余备份选项 re_bak=yes #启用冗余备份 rebak_dir=/local/mount/point #新挂载nfs目录 rearch_dir=/local/mount/point/arch #冗余归档目录(暂时没有实现) rebak_num=7 #冗余备份保留份数 ......三、通过scp+定时任务拷贝实现
1、配置ssh互信
源端A 上执行如下命令来生成配对密钥 cd ~/.ssh ssh-keygen -t rsa 目标端 B 上也同样运行 ssh-keygen -t rsa 将来源端A ~/.ssh/ 目录中的 id_rsa.pub 文件复制到目标端B 的 ~/.ssh/ 目录中,并改名为 authorized_keys 源端进行测试 scp /usr/local/shell/host.txt root@目标端ip:/usr/local/host2、编写脚本(客户要求异地保留7天的备份)
[root@logical01 ~]# cat /root/synchgdbback.sh #!/bin/bash scp -r /data/hgdbbackup root@目标端IP:/data ssh 目标端IP "find /data/hgdbbackup/* -type d -mtime +6 -exec rm -rf {} +;" ssh 目标端IP "find /data/hgdbbackup/* -type f -mtime +6 -exec rm -f {} \;" 备注:/data/hgdbbackup:源端数据库备份目录(包含归档目录),目标端也需要创建。3、配置异地备份定时任务
[root@logical01 ~]# crontab -l 30 00 * * * /root/hgdb_backup.sh 30 03 * * * /root/synchgdbback.sh 备注:根据备份完成时间确定两个脚本的执行间隔,确保备份完成后再跑异地备份同步任务。