集群架构05·备份服务rsync
初识
开源,多功能,全量和增量的本地或远程数据同步备份的优秀工具,remote synchronization
俩服务器定/实时备份cron+rsync,数据同步,全网备份
一个rsync相当于scp、cp、rm,但又优于他们
yum install -y rsync
支持断点续传,限速等特定功能
优缺点
优点:增量备份,支持ssh,支持daemon ,集中备份
缺点:大文件对比时间比较长,大文件有时候可能传输不完整
一次性拷贝可以直接使用SCP
工作模式
1、本地模式:cp,rm
2、通道模式:ssh加密
3、daemon:非加密,一般不需要都是内网
二三模式不能混合使用
参数
-avz 基本可以满足需求
-v:verbose详细模式输出
-z:zip传输时压缩来提高传输效率
-a:archive归档模式,等于rtopgDl
-t:time保持文件时间信息
-o:owner保持文件属组信息
-p:保持文件权限
-g:group保持文件所属组
-l:link保持文件软链接
-p:process显示同步过程和进度信息
--delete 按照源端来删除目的端的文件
--exclude:排除不需要传输的文件
--bwlimit=rate 备份带宽,别把马路占满,注意备份时间
-e, --rsh=command 指定使用rsh、ssh方式进行数据同步
实践
1、将/server/ssh目录里的所有的文件同步至/back 目录(不包含/server/ssh本身)
[root@localhost ~]# rsync -azv /server/ssh/ /back/
2、将服务器的test文件夹和内部文件都通过ssh隧道复制到备份服务器中
[root@moban ~]# rsync -avz /root/test -e ’ssh -p 22‘ root@192.168.2.40:/root/
root@moban ~]# rsync -avz -e ssh root@192.168.2.40:/root/666 /root/
和scp命令类似,既可以上传,也可以下载,只需要调整位置即可,通过ssh免密配置,定时任务直接备份
主配置文件
/etc/rsyncd.conf
#rsync_config_start
#created by oldboy 18:00 2016/4/20
##rsyncd.conf start##
uid = rsync #用户uid 虚拟用户
gid = rsync #用户组gid
use chroot = no #安全相关
max connections = 200 #最大连接数
timeout = 300 #超时参数(单位/秒)
pid file = /var/run/rsyncd.pid #进程号对应的进程号文件
lock file = /var/run/rsync.lock #锁文件,防止文件不一致,女神上厕所,要锁门
log file = /var/log/rsyncd.log #日志文件
[backup] #模块名称
path = /backup #服务器提供访问的目录
ignore errors #忽略错误
read only = false #不可写
list = false #不能列表
hosts allow = 172.16.1.0/24 #严格来说是内网网段,允许那些机器过来连接,网络控制
hosts deny = 0.0.0.0/32
auth users = rsync_ backup
secrets file = /etc/rsync.password
#rsync_ config_end
实践是检验真理的唯一标准
服务器端 :根据服务主配置文件来做配置
环境
[root@NFS_22 ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@NFS_22 ~]# uname -a
Linux NFS_22 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux
[root@NFS_22 ~]# rsync --version
rsync version 3.0.6 protocol version 30
1、建立备份目录/backup,要转移备份先把东西整理到一个地方,专门用来拉取文件的仓库
[root@backup ~]# mkdir /backup
2、添加用户,初识尝试启动服务,返回这说明我们要配置这个文件
[root@nfs ~]# id rsync #没有该用户
id: rsync: No such user
[root@nfs ~]# useradd rsync -s /sbin/nologin -M #nologin #不登录是虚拟用户,-M不创建家目录
[root@nfs ~]# tail -1 /etc/passwd
rsync501:501::/home/rsync:/sbin/nologin
[root@nfs ~]# rsync --daemon #为备份服务器创建配置文件,起初没有配置文件,下面要增加配置
Failed to parse config file: /etc/rsyncd.conf
3、配置服务主配置文件,查看服务是否启动成功
[root@nfs ~]# vim /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /backup
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[root@nfs ~]# rsync --daemon #配置文件没有问题,不会报错,正常启动
[root@nfs ~]# ps -ef |grep rsync|grep -v "grep"
root 2077 1 0 04:17 ? 00:00:00 rsync --daemon
4、创建存密码的文件,为了安全去修改文件权限,修改备份文件的所属者和所属组
[root@nfs ~]# echo "rsync_backup:oldboy" > /etc/rsync.password
[root@nfs ~]# ll /etc/rsync.password
-rw-r--r--. 1 root root 20 Oct 11 04:33 /etc/rsync.password
[root@nfs ~]# chmod 600 /etc/rsync.password
[root@nfs ~]# ll /etc/rsync.password
-rw-------. 1 root root 20 Oct 11 04:33 /etc/rsync.password
[root@nfs ~]# chown -R rsync.rsync /backup/
5、根据rsync服务的端口873来找服务开没开,两种方法
方式一:lsof
[root@nfs ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 2077 root 3u IPv4 14793 0t0 TCP *:rsync (LISTEN)
rsync 2077 root 5u IPv6 14794 0t0 TCP :rsync (LISTEN)
方式二:netstat
[root@nfs ~]# netstat -lntup |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0: LISTEN 2077/rsync
tcp 0 0 :::873 :::* LISTEN 2077/rsync
6、将进程加入开机自启动文件rc.local当中
开机自启动 chkconfig rsync on
[root@nfs ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local
[root@nfs ~]# tail -1 /etc/rc.local
/usr/bin/rsync --daemon
7、修改配置文件,先杀死服务,然后在启动文件
pkill rsync
lsof -I :873
rsync --daemon
8、多模块配置,增加一个模块,新建目录,修改目录权限
客户端
1、存在rsync服务
[root@NFS_22 ~]# rpm -qa rsync
rsync-3.0.6-9.el6_4.1.i686
2、配置虚拟用户的密码
echo "oldboy" >/etc/rsync.password
chmod 600 /etc/rsync.password
mkdir -p /backup
功能实现:现在客户端把文件推到服务器端,在客户端操作
方式一:
[root@NFS_22 backup]# rsync -avz /backup/ rsync_backup@192.168.2.11::backup/ --password-file=/etc/rsync.password
方式二:
[root@NFS_22 backup]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.11/backup --password-file=/etc/rsync.password
功能实现:拉取文件,就是将目的地和源地址反过来就是从服务器端拉取文件
[root@NFS_22 backup]# rsync -avz rsync_backup@192.168.2.11::backup /backup/ --password-file=/etc/rsync.password
故障总结,模拟故障来增加经验
服务端备份目录没有
备份目录权限不够
虚拟用户密码不正确,多个空格,多个换行符,都有可能导致密码不正确
防火墙开启,导致失败
排错
查看错误提示
查看日志 tail -1 /var/log/rsync.log
仔细排查部署过程
客户端拍错,密码文件,测试端口
排除推送:
排除单个文件 --exclude=a
排除多个文件
--exclude={a,b}
--exclude={a..z}
--exclude-from=paichu.log
无差异同步:慎用,没有后悔药
--delete A B 按照A来无差异同步B,如果B有多余文件则删除,缺少文件则复制添加
rsync -avz --delete /backup/ rsync_backup@192.168.2.11::backup --password-file=/etc/rsync.password
实践
每天晚上00点整在Web服务器A上打包备份网站程序目录并通过rsync命令推送到服务器B上备份保留
(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
具体要求如下:
1)Web服务器A和备份服务器B的备份目录必须都为/backup。
2)Web服务器站点目录假定为(/var/www/html)。
3)Web服务器本地仅保留7天内的备份。
4)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱(选做)。
5)备份服务器上每周六的数据都保留,其他备份仅保留180天备份(选做)。
NFSserver的/var/www/html打包压缩同步到/backup目录,每次备份的打包备份的文件只保留七天:
tar -zchf /backup/html.$(date +%F%w -d '-1day').tar.gz /var/www/html/
集群架构05·备份服务rsync的更多相关文章
- Java高可用集群架构与微服务架构简单分析
序 可能大部分读者都在想,为什么在这以 dubbo.spring cloud 为代表的微服务时代,我要还要整理这种已经"过时"高可用集群架构? 本人工作上大部分团队都是7-15人编 ...
- 集群架构04·NFS服务,环境安装
初识 网络文件系统Netwrok File System,类似于wiin10的网络共享 功能:通过网络让不同主机系统之间可以共享文件或目录 客户端通过挂载的方式将服务器端共享的目录挂载到本地系统. 集 ...
- 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken
前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...
- Linux Web集群架构详细(亲测可用!!!)
注意:WEB服务器和数据库需要分离,同时WEB服务器也需要编译安装MySQL. 做集群架构的重要思想就是找到主干,从主干区域向外延展. WEB服务器: apache nginx 本地做三个产品 de ...
- MongoDB集群架构及搭建
MongoDB分布式集群 MongDB分布式集群能够对数据进行备份,提高数据安全性,以及提高集群提高读写服务的能力和数据存储能力.主要通过副本集(replica)对数据进行备份,通过分片(shardi ...
- 【MySQL大系】《Mysql集群架构》
原文地址(微信):[技术文章]<Mysql集群架构> 本文地址:http://www.cnblogs.com/aiweixiao/p/7258444.html 点击关注微信公众号 1.主要 ...
- 构建MHA实现MySQL高可用集群架构
一.MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开 ...
- Galera Cluster——一种新型的高一致性MySQL集群架构
原文链接:https://www.sohu.com/a/147032902_505779,最近被分配定位mysql的问题,学习下. 1. 何谓Galera Cluster 何谓Galera Clust ...
- 二、ELKStack集群架构设计
一.ELKStack介绍与入门实践 二.Elasticsearch 集群架构图 服务器配置:Centos6.6 x86_64 CPU:1核心 MEM:2G (做实验,配置比较低一些) 注:这里配置el ...
随机推荐
- asp.net core 读取appsettings.json配置项
1.新建一个asp.net core 项目 2.打开appsettings.json,加入配置项 { "Logging": { "IncludeScopes": ...
- 阿里云申请免费SSL证书,并配置到Tomcat,实现https访问
第一步:阿里云免费https证书安装 https://jingyan.baidu.com/article/fdffd1f8619481f3e98ca196.html 第二步:阿里云申请免费SSL证书 ...
- Spring Boot常用的注解
@SpringBootApplication:包含@Configuration.@EnableAutoConfiguration.@ComponentScan通常用在主类上.由于大量项目都会在主要的配 ...
- C# ClickOnce发布方式
首先编写ClickOnce更新事件, private void button1_Click(object sender, EventArgs e) { if (ApplicationDeploymen ...
- 【题解】求细胞数量-C++
题目描述一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式输入格 ...
- 快速了解AMD、CMD、CommonJS、ESM
1.ES6 Module javascript在ES2015(ES6)中出现了语言层面的模块(module). ES6的模块既可以用于浏览器端,也可以用于服务器端(nodeJS). ES6模块是静态化 ...
- CF 940F - Machine Learning ( 带 修 )
题目: 链接:https://codeforces.com/problemset/problem/940/F 题意:给你n个数,a[i]有q个操作,操作有两种:操作1. 1 x y 表示询 ...
- 「CQOI2006」简单题 线段树
「CQOI2006」简单题 线段树 水.区间修改,单点查询.用线段树维护区间\([L,R]\)内的所有\(1\)的个数,懒标记表示为当前区间是否需要反转(相对于区间当前状态),下方标记时懒标记取反即可 ...
- 题解 CF550A 【Two Substrings】
为什么我的做法跟别人如此不一样啊qwq 思路:暴力判每一个"BA"出现的位置,二分查找他前/后有没有满足条件的"AB",时间复杂度\(O(n\log_{2}n) ...
- 1-4CMYK色彩模式
http://www.missyuan.com/thread-350717-1-1.html CMYK也称作印刷色彩模式,顾名思义就是用来印刷的. 只要是在印刷品上看到的图像,就是CMYK模式表现的 ...