搭建中小规模集群之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自身的重要功能)。
- [root@server ~]# rsync -avz /etc/hosts /tmp/ #cp
- sending incremental file list
- hosts
- sent 124 bytes received 31 bytes 310.00 bytes/sec
- total size is 158 speedup is 1.02
- [root@server ~]# ls /tmp
- hosts yum.log
- [root@server ~]# ll /tmp/
- total 4
- -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
- -rw-------. 1 root root 0 Feb 4 09:06 yum.log
- [root@server ~]# mkdir /null #创建一个空目录
- [root@server ~]# rsync -avz --delete /null/ /tmp/ #rm
- sending incremental file list
- ./
- deleting .ICE-unix/
- deleting yum.log
- deleting hosts
- sent 29 bytes received 15 bytes 88.00 bytes/sec
- total size is 0 speedup is 0.00
- [root@server ~]# ll /tmp/
- total 0
借助ssh通道推送数据
源端:
- [root@server ~]# ll /tmp/
- total 4
- -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
- [root@server ~]# rsync -avzP -e 'ssh -p 22' /tmp/ root@192.168.31.133:/tmp
- The authenticity of host '192.168.31.133 (192.168.31.133)' can't be established.
- RSA key fingerprint is 9e:4c:c8:4d:df:0e:d8:2a:48:8a:04:22:8f:80:64:9a.
- Are you sure you want to continue connecting (yes/no)? yes
- Warning: Permanently added '192.168.31.133' (RSA) to the list of known hosts.
- root@192.168.31.133's password:
- sending incremental file list
- ./
- hosts
- 158 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)
- sent 141 bytes received 34 bytes 18.42 bytes/sec
- total size is 158 speedup is 0.90
目标端:
- [root@lamp ~]# ll /tmp/
- total 0
- -rw-------. 1 root root 0 Feb 4 09:10 yum.log
- [root@lamp ~]# ll /tmp/
- total 4
- -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
- -rw-------. 1 root root 0 Feb 4 09:10 yum.log
借助ssh通道拉取数据
源端:
- [root@server ~]# ll /tmp
- total 0
- [root@server ~]# rsync -avzP -e 'ssh -p 22' root@192.168.31.133:/tmp/ /tmp/
- root@192.168.31.133's password:
- receiving incremental file list
- ./
- hosts
- 158 100% 154.30kB/s 0:00:00 (xfer#1, to-check=2/4)
- yum.log
- 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=1/4)
- .ICE-unix/
- sent 56 bytes received 235 bytes 38.80 bytes/sec
- total size is 158 speedup is 0.54
- [root@server ~]# ll /tmp
- total 4
- -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
- -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、root@192.168.31.132:/tmp/远程的主机系统用户、地址、路径。
5、/tmp/本地的路径。
Rsync命令同步参数选项
- Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
- Push: rsync [OPTION...] SRC... [USER@]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安装包
- [root@backup ~]# rpm -qa rsync
- rsync-3.0.6-12.el6.x86_64
- [root@backup ~]# touch /etc/rsyncd.conf #创建rsync配置文件
- [root@backup ~]# cat /etc/rsyncd.conf
- #Rsync server
- #created by oldboy 13:42 2017-02-04
- ##rsyncd.conf start##
- uid = rsync #客户端具有rsync用户的权限
- gid = rsync
- use chroot = no #与安全相关
- max connections = 2000 #客户端最大连接数
- timeout = 600 #超时时间
- pid file = /var/run/rsyncd.pid #进程号文件
- lock file = /var/run/rsync.lock #锁文件
- log file = /var/log/rsyncd.log #log文件
- ignore errors #忽略错误
- read only = false #可读写
- list = false #不可远程列表
- hosts allow = 192.168.31/24 #允许的ip
- hosts deny = 0.0.0.0/32
- auth users = rsync_backup #远程连接的用户
- secrets file = /etc/rsync.password #存放用户和密码的文件
- #################################
- [backup] #模块
- comment = backup server by oldboy 13:48 2017-02-04 #注释
- path = /backup #共享的目录
启动rsync服务
- [root@backup ~]# rsync --daemon
- [root@backup ~]# ps -ef|grep rsync|grep -v grep
- root 1149 1 0 14:08 ? 00:00:00 rsync --daemon
- [root@backup ~]# netstat -lntup|grep rsync
- tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1149/rsync
- tcp 0 0 :::873 :::* LISTEN 1149/rsync
- [root@backup ~]# lsof -i:873
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- rsync 1149 root 3u IPv4 9918 0t0 TCP *:rsync (LISTEN)
- rsync 1149 root 5u IPv6 9919 0t0 TCP *:rsync (LISTEN)
创建rsync用户
- [root@backup ~]# useradd rsync -s /sbin/nologin -M
创建共享目录/backup
- [root@backup ~]# mkdir /backup
- [root@backup ~]# chown -R rsync /backup/
- [root@backup ~]# ls -ld /backup
- drwxr-xr-x 2 rsync root 4096 Feb 4 14:16 /backup
创建密码文件/etc/rsync.password
- [root@backup ~]# echo "rsync_backup:system">/etc/rsync.password
- [root@backup ~]# cat /etc/rsync.password
- rsync_backup:system #用户名:密码
修改密码文件/etc/rsync.password的权限
- [root@backup ~]# ll /etc/rsync.password
- -rw-r--r-- 1 root root 20 Feb 4 14:19 /etc/rsync.password
- [root@backup ~]# chmod 600 /etc/rsync.password
- [root@backup ~]# ll /etc/rsync.password
- -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/ rsync_backup@192.168.31.128::backup --password-file=/etc/rsync.password
pull:
rsync -avz rsync_backup@192.168.31.128::backup /tmp/ --password-file=/etc/rsync.password
rsync -avz rsync://rsync_backup@192.168.31.128/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/ rsync_backup@192.168.31.128::oldboy --password-file=/etc/rsync.password
排除多个文件
rsync -avz --exclude={a,b} /data1/ rsync_backup@192.168.31.128::oldboy --password-file=/etc/rsync.password
rsync -avz –exclude-from=paichu.log /data1/ rsync_backup@192.168.31.128::oldboy --password-file=/etc/rsync.password
定时备份案例
- [root@lamp scripts]# cat /server/scripts/bak.sh
- #!/bin/sh
- path=/backup
- dir="`ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)"
- mkdir $path/$path/$dir -p &&\
- /bin/cp /var/spool/cron/root $path/$path/$dir/cron_root_$(date +%F) &&\
- /bin/cp /etc/rc.local $path/$path/$dir/rc.local_$(date +%F) &&\
- rsync -az $path/ rsync_backup@192.168.31.128::backup --password-file=/etc/rsync.password
- [root@lamp scripts]# /bin/sh /server/scripts/bak.sh
- [root@lamp scripts]# crontab -e
- #rsync定时备份
- 00 01 * * * /bin/sh /server/scripts/bak.sh >dev/null 2>&1
用scp发送到另外一台服务器
- [root@lamp scripts]# scp /server/scripts/bak.sh root@192.168.31.134:/tmp
搭建中小规模集群之rsync数据同步备份的更多相关文章
- rsync数据同步备份
一.rsync简介 (1)rsync是什么? rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. (2)rsync作用比较 远程拷贝:有点类似ssh的scp ...
- elasticsearch与mongodb分布式集群环境下数据同步
1.ElasticSearch是什么 ElasticSearch 是一个基于Lucene构建的开源.分布式,RESTful搜索引擎.它的服务是为具有数据库和Web前端的应用程序提供附加的组件(即可搜索 ...
- Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步
ElasticSearch有一个叫做river的插件式模块,可以将外部数据源中的数据导入elasticsearch并在上面建立索引.River在集群上是单例模式的,它被自动分配到一个节点上,当这个节点 ...
- 【集群实战】Rsync数据同步工具
1. Rsync介绍 1.1 什么是Rsync? Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows ...
- CentOS 7 搭建PXC 数据库集群
CentOS 7 搭建PXC 数据库集群 PXC( Percona XtraDB Cluster ) 特点如下: 1.同步复制,事务要么在所有节点提交或不提交,保证了数据的强一致性. 2.多主复制,可 ...
- ZooKeeper环境搭建(单机/集群)(转)
前提: 配置文件主要是在$ZOOKEEPER_HOME/conf/zoo.cfg,刚解压时为zoo_sample.cfg,重命名zoo.cfg即可. 配置文件常用项参考:http://www.cnbl ...
- 手把手教你搭建一个 Elasticsearch 集群
为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? 高可用性 Elasticsearch 作为一个搜索引擎, ...
- 中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问
截止2022年,中国联通用户规模达到4.6亿,占据了全中国人口的30%,随着5G的推广普及,运营商IT系统普遍面临着海量用户.海量话单.多样化业务.组网模式等一系列变革的冲击. 当前,联通每天处理话单 ...
- Linux下搭建Lotus Domino集群
Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...
随机推荐
- [CSL 的魔法][求排序最少交换次数]
链接:https://ac.nowcoder.com/acm/contest/551/E来源:牛客网题目描述 有两个长度为 n 的序列,a0,a1,…,an−1a0,a1,…,an−1和 b0,b1, ...
- java 程序编译和运行过程
java整个编译以及运行的过程相当繁琐,我就举一个简单的例子说明: Java程序从源文件创建到程序运行要经过两大步骤: 1.源文件由编译器编译成字节码(ByteCode): 2.字节码由java虚拟机 ...
- EBS获取code_combination_id(CCID)时段值自动被置为默认值的问题
EBS中在使用标准的API(FND_FLEX_EXT.GET_COMBINATION_ID 和 FND_FLEX_EXT.GET_CCID还有fnd_flex_keyval.validate_segs ...
- Python 面向对象编程(进阶部分)
静态方法: 通过 @staticmethod 装饰器即可把其装饰的方法变为一个静态方法.普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实 ...
- xpython在Windos下的安装及简单的文本打开、保存
前几天写自动化部署脚本,用的是paramiko和shell相结合,paramiko可是实现ssh登录,文件及文件夹的上传下载,这些功能,然后一直想自己写个东西出来,于是就想把这些功能我把他放到图形化界 ...
- 第三章 C#程序结构(3.1 顺序与选择结构)
[案例]输入某一学生的成绩,输出其对应的档次.具体规定:90分以上为优秀,80分以上至89分为良好,70分至79分为一般,60分至69分为合格,59以下为不及格.如果输入的分数小于0或大于100,则输 ...
- select2 清除选中项解决办法
在项目中使用select2:选中项 设置可清除. 代码中加上了allowClear : true $.get("/Work/Ajax/Select.ashx", function ...
- Spring Cloud(Dalston.SR5)--Config 集群配置中心
Spring Cloud Config 是一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,他分为服务端和客户端两个部分.服务端也称为分布式配置中心,是一个独立的微服务 ...
- 单因素方差分析的SAS实现
实验内容:某城市从4个排污口取水,进行某种处理后检测大肠杆菌数量,单位面积内菌落数如下表所示,请分析各个排污口的大肠杆菌数量是否有差别. 排污口 1 2 3 4 大肠杆菌数量 9,12,7,5 20, ...
- set_false_path的用法
set_false_path的用法 非功能性路径,因为两个多路选择器被相同的选择信号驱动? 上电复位信号 set_false两个异步时钟域的路径 在两个时钟域之间,设置set_false_path,应 ...