在上一篇文章中, 介绍了Linux下的双击热备(drbd+heartbeat), 但是这种热备方式只能解决在同一机房中实现高可用的问题, 并不能解决在极端情况下(如因为地震、大规模断电导致机房坍塌)的容灾备份问题。这篇文章简介如何使用rsync实现异地数据备份。
相关阅读:CentOS 6.3下heartbeat+drbd的安装和配置
介绍rsync
Rsync是unix下常用的远程镜像备份工具, 从软件名上看出其意思就是remote sync(远程同步)。它可以镜像的保存整个目录树的数据和所有的元数据信息。Rsync是运行在C/S模式下的一种软件, 其中, 客户端使用pull操作从服务器上取文件, 或使用push操作将文件推送到服务器。 服务器端使用sshd服务,或者启动rsync服务, 接收并处理客户端的请求。常用的镜像备份中使用rsync服务, 因为rsync备份可以实现数据的增量传输, 减少对网络带宽的需求。
安装Rsync
CentOS 6.3 自带了 rsync的rpm包, 使用 yum install rsync –y 在服务器端和客户端同时安装即可。
Rsync服务端的配置和使用
下面介绍服务器端rsync服务的配置, 更详细的使用配置请参考man手册 rsyncd.conf(5)。
首先在全局定义了rsync程序以root用户和组权限运行, 最多只能有5个并发连接。并且定义了进程号文件,锁文件和日志文件的位置。接着定义[data]模块, 模块名在之后客户端进行连接时会指定客户端名。 定义该模块在/data目录下, 并且忽略错误,只允许192.168.10.153这个IP连接到该模块。 Strict modes = false的意思密码文件/etc/rsyncd.secrets的文件权限没必要为600, 可以是644或其他。配置好之后, 使用rsync –daemon命令以守护模式在服务端启动rsync, 为了保证服务器重启后rsync服务仍然能正常启动, 故修改/etc/rc.local文件如下:
[root@ha1 ~]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
rsync --daemon
[root@ha1 ~]#
客户端的配置和使用
客户端使用rsync命令, 定时同步数据。 在/etc/cron.daily目录下, 编写脚本rsync.sh如下:
rsync --archive --verbose --compress --recursive --times --owner --group --perms --delete --progress --password-file=/etc/rsync.password rsync://rsync@192.168.10.150/data /data
--archive表示保存同步的文件的软硬属性
--verbose表示弹出更多的信息
--compress表示传输过程中,先压缩数据再传输
--recursive 表示递归地传输目录树
--times --owner --group --perms表示保留文件的时间,所有者,所属组,和权限属性
--delete 表示如果镜像源删除了该文件,则做镜像时也删除相应的文件
--progress 表示显示同步进度
--password-file 表示密码保存的地方,在服务器端,刚才定义了rsync帐号的密码为rsync
所以相应的, 在客户端保存rynsc帐号的密码文件中的密码为rsync, 最后, 指定镜像源为192.168.10.150 的data模块, 复制到本地的/data目录。该脚本由于放在了/etc/cron.daily目录下, 故每晚0点自动同步一次。 更个性化的定制, 可以修改/etc/crontab文件实现。
这样, 就通过rsync,做好了镜像同步。 镜像数据 比 实际数据相差1天。