搭建中小规模集群之rsync数据同步备份

NFS重要问题

1、有关NFS客户端普通用户写NFS的问题。

1)为什么要普通用户写NFS。

2)exports加all_squash。

Rsync介绍

什么是Rsync?

Rsync是一款开源的、快速的、多功能的、可实现全量即增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix、linux、windows等多种操作系统平台。

Rsync简介

Rsync英文全称Remote synchronization。从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带的scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。

利用rsync还可以实现删除文件和目录的功能,又相当于rm命令。

一个rsync相当于scp、cp、rm,但是还优于他们每一个命令。

Rsync的特性

1、支持拷贝特殊文件如链接文件、设备等。

2、可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

3、可以做到保持原文件或目录的权限、时间、软硬链接、属主、属组等所有属性均不改变-p。

4、可以实现增量同步,即只同步变化的数据,因此数据传输效率很高。

5、可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。

6、可以通过socket(进程方式)传输文件和数据(服务端和客户端)。

7、支持匿名或认证的进程模式传输,可以实现方便安全的进行数据备份及镜像。

Rsync的企业工作场景说明

两台服务器之间数据做定时同步cron+rsync

全网服务器数据备份

rsync结合inotify的功能做实时的数据同步

Rsync的工作方式

rsync命令是客户端命令。

Rsync大致使用三种主要的传输数据的方式。

1、单个主机本地之间的数据传输(此时类似cp命令的功能)。

2、借助rcp、ssh等通道来传输数据(此时类似scp命令的功能)。

3、以守护进程(socket)的方式传输数据(rsync自身的重要功能)。

  1. [[email protected] ~]# rsync -avz /etc/hosts /tmp/ #cp
  2. sending incremental file list
  3. hosts
  4.  
  5. sent 124 bytes received 31 bytes 310.00 bytes/sec
  6. total size is 158 speedup is 1.02
  7. [[email protected] ~]# ls /tmp
  8. hosts yum.log
  1. [[email protected] ~]# ll /tmp/
  2. total 4
  3. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
  4. -rw-------. 1 root root 0 Feb 4 09:06 yum.log
  5. [[email protected] ~]# mkdir /null #创建一个空目录
  6. [[email protected] ~]# rsync -avz --delete /null/ /tmp/ #rm
  7. sending incremental file list
  8. ./
  9. deleting .ICE-unix/
  10. deleting yum.log
  11. deleting hosts
  12.  
  13. sent 29 bytes received 15 bytes 88.00 bytes/sec
  14. total size is 0 speedup is 0.00
  15. [[email protected] ~]# ll /tmp/
  16. total 0

借助ssh通道推送数据

源端:

  1. [[email protected] ~]# ll /tmp/
  2. total 4
  3. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
  4. [[email protected] ~]# rsync -avzP -e ‘ssh -p 22‘ /tmp/ [email protected]:/tmp
  5. The authenticity of host ‘192.168.31.133 (192.168.31.133)‘ can‘t be established.
  6. RSA key fingerprint is 9e:4c:c8:4d:df:0e:d8:2a:48:8a:04:22:8f:80:64:9a.
  7. Are you sure you want to continue connecting (yes/no)? yes
  8. Warning: Permanently added ‘192.168.31.133‘ (RSA) to the list of known hosts.
  9. [email protected]‘s password:
  10. sending incremental file list
  11. ./
  12. hosts
  13.          158 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)
  14.  
  15. sent 141 bytes received 34 bytes 18.42 bytes/sec
  16. total size is 158 speedup is 0.90

目标端:

  1. [[email protected] ~]# ll /tmp/
  2. total 0
  3. -rw-------. 1 root root 0 Feb 4 09:10 yum.log
  4. [[email protected] ~]# ll /tmp/
  5. total 4
  6. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
  7. -rw-------. 1 root root 0 Feb 4 09:10 yum.log

借助ssh通道拉取数据

源端:

  1. [[email protected] ~]# ll /tmp
  2. total 0
  3. [[email protected] ~]# rsync -avzP -e ‘ssh -p 22‘ [email protected]:/tmp/ /tmp/
  4. [email protected]‘s password:
  5. receiving incremental file list
  6. ./
  7. hosts
  8.          158 100% 154.30kB/s 0:00:00 (xfer#1, to-check=2/4)
  9. yum.log
  10.            0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=1/4)
  11. .ICE-unix/
  12.  
  13. sent 56 bytes received 235 bytes 38.80 bytes/sec
  14. total size is 158 speedup is 0.54
  15. [[email protected] ~]# ll /tmp
  16. total 4
  17. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
  18. -rw-------. 1 root root 0 Feb 4 09:10 yum.log

关键语法说明:

1、-avz相当于-vzrtopgD1,表示同步时文件和目录属性不变。

2、-P显示同步的过程,可以用--progress替换。

3、-e ‘ssh -p 22‘,表示通过ssh的通道传输数据,-p 22可省略。

4、[email protected]:/tmp/远程的主机系统用户、地址、路径。

5、/tmp/本地的路径。

Rsync命令同步参数选项

  1. Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
  2. Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

常用参数选项说明:

-v,--verbose:详细模式输出,传输时的进度等信息。

-z,--compress:传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。

-a,--archive:归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDl。

-r,--recursive:对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r。

-t,--times:保持文件时间信息。

-o,--owner:保持文件属主信息。

-p,--perms:保持文件权限。

-g,--group:保持文件属组信息。

-P,--progress:显示同步的过程及传输时的进度等信息。

-D,--devices:保持设备文件信息。

-l,--links:保留软链接。

-e,--rsh=COMMAND:使用的信道协议,指定替代rsh的shell程序。例如:ssh。

--exclude=PATTERN:指定排除不需要传输的文件模式。

--exclude-from=file(文件名所在的目录文件)

--bwlimit=PATE(限速) limit socket I/O bandwidth。

生产参数:-avz或者-vzrtopg。

查看rsync安装包

  1. [[email protected] ~]# rpm -qa rsync
  2. rsync-3.0.6-12.el6.x86_64
  1. [[email protected] ~]# touch /etc/rsyncd.conf #创建rsync配置文件
  1. [[email protected] ~]# cat /etc/rsyncd.conf
  2. #Rsync server
  3. #created by oldboy 13:42 2017-02-04
  4. ##rsyncd.conf start##
  5. uid = rsync #客户端具有rsync用户的权限
  6. gid = rsync
  7. use chroot = no #与安全相关
  8. max connections = 2000 #客户端最大连接数
  9. timeout = 600 #超时时间
  10. pid file = /var/run/rsyncd.pid #进程号文件
  11. lock file = /var/run/rsync.lock #锁文件
  12. log file = /var/log/rsyncd.log #log文件
  13. ignore errors #忽略错误
  14. read only = false #可读写
  15. list = false #不可远程列表
  16. hosts allow = 192.168.31/24 #允许的ip
  17. hosts deny = 0.0.0.0/32
  18. auth users = rsync_backup #远程连接的用户
  19. secrets file = /etc/rsync.password #存放用户和密码的文件
  20. #################################
  21. [backup] #模块
  22. comment = backup server by oldboy 13:48 2017-02-04 #注释
  23. path = /backup #共享的目录

启动rsync服务

  1. [[email protected] ~]# rsync --daemon
  2. [[email protected] ~]# ps -ef|grep rsync|grep -v grep
  3. root 1149 1 0 14:08 ? 00:00:00 rsync --daemon
  4. [[email protected] ~]# netstat -lntup|grep rsync
  5. tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1149/rsync
  6. tcp 0 0 :::873 :::* LISTEN 1149/rsync
  1. [[email protected] ~]# lsof -i:873
  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  3. rsync 1149 root 3u IPv4 9918 0t0 TCP *:rsync (LISTEN)
  4. rsync 1149 root 5u IPv6 9919 0t0 TCP *:rsync (LISTEN)

创建rsync用户

  1. [[email protected] ~]# useradd rsync -s /sbin/nologin -M

创建共享目录/backup

  1. [[email protected] ~]# mkdir /backup
  2. [[email protected] ~]# chown -R rsync /backup/
  3. [[email protected] ~]# ls -ld /backup
  4. drwxr-xr-x 2 rsync root 4096 Feb 4 14:16 /backup

创建密码文件/etc/rsync.password

  1. [[email protected] ~]# echo "rsync_backup:system">/etc/rsync.password
  2. [[email protected] ~]# cat /etc/rsync.password
  3. rsync_backup:system #用户名:密码

修改密码文件/etc/rsync.password的权限

  1. [[email protected] ~]# ll /etc/rsync.password
  2. -rw-r--r-- 1 root root 20 Feb 4 14:19 /etc/rsync.password
  3. [[email protected] ~]# chmod 600 /etc/rsync.password
  4. [[email protected] ~]# ll /etc/rsync.password
  5. -rw------- 1 root root 20 Feb 4 14:19 /etc/rsync.password

rsync server配置步骤

1、vi /etc/rsyncd.conf配置。

2、创建rsync用户,及共享目录/backup。

useradd rsync -s /sbin/nologin -M

id rsync

mkdir /backup

chown -R rsync /backup

3、创建密码文件/etc/rsync.password。

echo "用户名:密码" >/etc/rsync.password

chmod 600 /etc/rsync.password

4、启动服务

rsync --daemon

netstat -lntup|grep rsync

ps -ef|grep rsync|grep -v grep

5、加入开机自启动

echo "rsync --daemon" >>/etc/rc.local

cat /etc/rc.local

rsync客户端配置步骤

1、创建密码文件

echo "密码">/etc/rsync.password

chmod 600 /etc/rsync.password

2、rsync

push:

rsync -avz /tmp/ [email protected]::backup --password-file=/etc/rsync.password

pull:

rsync -avz [email protected]::backup /tmp/ --password-file=/etc/rsync.password

rsync -avz rsync://[email protected]/backup /tmp/ --password-file=/etc/rsync.password

安全的优化:

pkill rsync #结束进程rsync

rsync --daemon --address=10.0.0.10

进程管理:

pkill 进程名

killall 进程名

kill pid(进程号)

平滑结束进程:

kill -HUP `cat /var/run/rsyncd.pid`

kill –USR2 `cat /var/run/rsyncd.pid`

Rsync服务端排错

1、查看rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf。

2、查看配置文件里host allow、host deny允许的ip网段是否是允许客户端访问的ip网段。

3、查看配置文件中path参数里的路径是否存在,权限是否正确(正常应为配置文件中的UID参数对应的属主和组)。

4、查看rsync服务是否启动。查看命令为ps -ef|grep rsync。端口是否存在netstat -lnt|grep 873。

5、查看iptables防火墙和selinux是否开启允许rsync服务通过,也可以关闭。

6、查看服务端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式:用户名:密码,文件路径和配置文件里的secrect files参数对应。

7、如果是推送数据,要查看配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限。

rsync优点

1、增量备份同步。

2、支持socket(daemon)。

3、集中备份。

rsync缺点

1、大量小文件同步的时候比对时间较长,有的时候rsync进程会停止。

解决办法:a、打包同步。b、drbd(文件系统同步复制block)。

2、同步大文件时(10G以上)会有中断。未完整同步前是隐藏文件,同步完成之后为正常文件。

无差异同步:--delete(慎用),使用该参数前先备份。

客户端rsync命令排除

排除单个文

rsync -avz --exclude=a /data1/ [email protected]::oldboy --password-file=/etc/rsync.password

排除多个文件

rsync -avz --exclude={a,b} /data1/ [email protected]::oldboy --password-file=/etc/rsync.password

rsync -avz –exclude-from=paichu.log /data1/ [email protected]::oldboy --password-file=/etc/rsync.password

定时备份案例

  1. [[email protected] scripts]# cat /server/scripts/bak.sh
  2. #!/bin/sh
  3. path=/backup
  4. dir="`ifconfig eth0|awk -F ‘[ :]+‘ ‘NR==2 {print $4}‘`_$(date +%F)"
  5. mkdir $path/$path/$dir -p &&
  6. /bin/cp /var/spool/cron/root $path/$path/$dir/cron_root_$(date +%F) &&
  7. /bin/cp /etc/rc.local $path/$path/$dir/rc.local_$(date +%F) &&
  8. rsync -az $path/ [email protected]::backup --password-file=/etc/rsync.password
  9. [[email protected] scripts]# /bin/sh /server/scripts/bak.sh
  1. [[email protected] scripts]# crontab -e
  2. #rsync定时备份
  3. 00 01 * * * /bin/sh /server/scripts/bak.sh >dev/null 2>&1

用scp发送到另外一台服务器

  1. [[email protected] scripts]# scp /server/scripts/bak.sh [email protected]:/tmp
时间: 2024-10-08 08:42:34

搭建中小规模集群之rsync数据同步备份的相关文章

elasticsearch与mongodb分布式集群环境下数据同步

1.ElasticSearch是什么 ElasticSearch 是一个基于Lucene构建的开源.分布式,RESTful搜索引擎.它的服务是为具有数据库和Web前端的应用程序提供附加的组件(即可搜索的存储库).ElasticSearch为应用程序提供搜索算法和相关的基础架构,用户只需要将应用程序中的数据上载到ElasticSearch数据存储中,就可以通过RESTful URL与其交互.ElasticSearch的架构明显不同于它之前的其他搜索引擎架构,因为它是通过水平伸缩的方式来构建的.不同

Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步

ElasticSearch有一个叫做river的插件式模块,可以将外部数据源中的数据导入elasticsearch并在上面建立索引.River在集群上是单例模式的,它被自动分配到一个节点上,当这个节点挂掉后,river会被自动分配到另外的一个节点上.目前支持的数据源包括:Wikipedia, MongoDB, CouchDB, RabbitMQ, RSS, Sofa, JDBC, FileSystem,Dropbox等.River有一些指定的规范,依照这些规范可以开发适合于自己的应用数据的插件.

老男孩教育运维班100台规模集群存储系统搭建及数据实时备份上机实战

老男孩教育运维班0基础起步上机实战系列项目 老男孩教育运维班100台规模集群存储系统搭建及数据实时备份上机实战 项目要求: 1.全体学员上机实践考试,完成后由排长或班长.或助教打分. 2.时间:90分钟,抄袭0分. (一)上机服务器业务及IP主机名规划 已知4台服务器主机名主机对应信息见下表: 服务器说明 外网IP 内网IP 主机名 apache web服务器 10.0.0.7/24 172.16.1.7/24 web02 nginx web服务器 10.0.0.8/24 172.16.1.8/

100 台规模集群存储系统搭建及数据实时备份

服务器说明 外网 IP(NAT) 内网 IP(NAT) 主机名apache web 服务器 10.0.0.7/24 172.16.1.7/24 web02nginx web 服务器 10.0.0.8/24 172.16.1.8/24 web01NFS 存储服务器 10.0.0.31/24 172.16.1.31/24 nfs01rsync 备份服务器 10.0.0.41/24 172.16.1.41/24 backup 要求: 搭建网站集群后端 NFS 共享存储搭建及优化解决方案1.配置 NFS

原创:100 台规模集群存储系统搭建及数据实时备份

服务器说明 外网 IP(NAT) 内网 IP(NAT) 主机名apache web 服务器 10.0.0.7/24 172.16.1.7/24 web02nginx web 服务器 10.0.0.8/24 172.16.1.8/24 web01NFS 存储服务器 10.0.0.31/24 172.16.1.31/24 nfs01rsync 备份服务器 10.0.0.41/24 172.16.1.41/24 backup 要求: 搭建网站集群后端 NFS 共享存储搭建及优化解决方案1.配置 NFS

老男孩教育运维班50-100台规模集群全网数据备份项目实战

老男孩教育运维班50-100台规模集群全网数据备份解决方案 项目要求: 1.全体学员上机实践考试,完成后由排长或班长或助教打分. 2.时间:60分钟,抄袭别人0分. 3.本项目提供免费实战讲解视频: http://edu.51cto.com/course/course_id-3497.html 1.基本备份要求 已知3台服务器主机名分别为web01.backup.nfs01,主机信息见下表: 服务器说明 外网IP 内网IP 主机名称 nginx web服务器 10.0.0.8/24 172.16

老男孩教育运维班100台规模集群阶段性综合上机实战考试

老男孩教育运维班100台规模集群第十关阶段性综合上机实战考试 光学理论有啥用,不拉出来实战遛遛,只能是自欺欺人! 项目要求: 1.全体学员上机实践考试,完成后由排长或班长.或助教打分. 2.时间:3个小时,抄袭0分. (一)上机服务器业务及IP主机名规划 已知5台服务器主机名主机对应信息见下表: 服务器说明 外网IP(NAT) 内网IP(NAT) 主机名 apache web服务器 10.0.0.7/24 172.16.1.7/24 web02 nginx web服务器 10.0.0.8/24

ZooKeeper环境搭建(单机/集群)(转)

前提: 配置文件主要是在$ZOOKEEPER_HOME/conf/zoo.cfg,刚解压时为zoo_sample.cfg,重命名zoo.cfg即可. 配置文件常用项参考:http://www.cnblogs.com/EasonJim/p/7483880.html 环境搭建: 一.ZooKeeper的搭建方式 ZooKeeper安装方式有三种,单机模式和集群模式以及伪集群模式. 单机模式:ZooKeeper只运行在一台服务器上,适合测试环境: 伪集群模式:就是在一台物理机上运行多个ZooKeepe

手把手教你搭建一个 Elasticsearch 集群

为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? 高可用性 Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步我们需要保证的就是 Elasticsearch 的高可用性,什么是高可用性呢?它通常是指,通过设计减少系统不能提供服务的时间.假设系统一直能够提供服务,我们说系统的可用性是 100%.如果系统在某个时刻宕掉了,